GCPSOでもチートをするつもりの奴の数→

このエントリーをはてなブックマークに追加
38466
やあ、諸君、お元気かな。
昨日はGCアナログモデムとLinux RASの調整に手間取り、深夜になって
ようやくブロードバンド経由でオンのGCラグオルに降り立つことができた。
モデム同士の「相性」などとも遭遇し、かなりてこずったよ。

これは純粋な技術レポートであり、チートとは全く関係がないが、
多くの人に参考になると思うので、顛末を記録しておこう。
(激しくスレ違いだってのはわかっているけどさぁ)
38566:02/06/01 14:35 ID:kBK71QzE
[使用した機材]
Pentium3-933MHz(cC0-FCPGA),Asus CUSL2C(i815)
PC133CL3-256MB Unbufferd Bulk memory * 2 = 512MB
Matrox Millennium G400DH-32MB AGP
Maxtor DiamondMAX80plus - 40GB

NIC#0(eth0):3Com 3C905B-J-TX 192.168.0.12 固定IPアドレス
NIC#1(eth1):PLANEX ENW9501F(DEC21140AC):1996年購入... 未使用状態
modem(ttyLT0):Lucent Technology Chip採用ソフトウェアPCIモデム(WinModem)
-- SOTECのボロPCについていたもの。ノーブランドのチャチなもの。

OS: Windows2000 Pro SP2 とRedHat7.3(FTP)のデュアルブート
ISDNルータ: YAMAHA RTA50i (アナログ回線エミュレータとしてのみ使用)
テスト用電話機:KENWOODコードレス電話

NIC#0は、192.168.0のローカルネットのスイッチングハブに接続。
外部へは、Linux kernel2.0/ROMベースマイクロサーバーのipchainsを経由する。
DNSは、本機とマイクロサーバーの両方で動作している。
ブロードバンドの帯域は公称10Mbps、実効600〜700KBytes/sec
38666:02/06/01 14:36 ID:kBK71QzE
[経過1] ISDNルータの設定
 これは、内線機能を利用しているだけで、ISDN/IPルータとしての利用ではない。
 PASOPHONYのような安価なアナログ回線エミュレータでもよいわけだ。RTA50iでの
 設定は、以下のサイトを参考にした。
 http://www.mars.sphere.ne.jp/tmatsumoto/isdn_dc.htm
 まず家庭用電話機をつなぎ、PCが着信するか、GCから発呼して電話機が鳴るか
 ということからはじめる。この時点でまずつまずいた。RTA50iでは、TEL3ポート
 への内線発呼は、番号*3である。これをそのままGCに設定してもだめである。
 外線番号に*、電話番号に3を指定しなければならない。GCから電話機に接続でき、
 また電話機から発呼してPCに着信できなければならない(PCの話は次項)。

 なお、PASOPHONYは以下から通信販売で購入できる。
 http://www.unilink.co.jp/NEWTECH/newtech.htm
 お金がない人は、怪しげな店に行けば安い。
 http://www.netlaputa.ne.jp/~sakuraya/
 この会社の秋葉原出張所はすでになく、会社所在地でも看板らしきものはなかった。
 マンションの一角でひっそりとやっているのか潰れたのか、さだかではない。
38766:02/06/01 14:40 ID:kBK71QzE
[経過2] Windows2000 Professionalにおける不具合
 Win2000では、LT-WinModemはそのままで認識する。アナログモデムで着信させ、
 LANにパケットをのせるやり方は、多くのサイトで説明されているので、ここでは
 述べない。LT-WinModemは、この用途には不向きであるようだ。電話機から発呼
 するとちゃんと着信するのに、GCのモデムの発呼を認識しない。ATコマンドで
 手動でオンフックにしさえすれば通信は正常に行われるが、自動オンフックは
 常に失敗してしまう。原因は不明であるが、Linuxでは正常に着信できるので、
 Windows側の問題であろう。Lucentの最新ドライバ(8.22)で試してもだめだったし、
 モデムレジスタをどのようにいじりたおしても着信はしなかった(ATS0=1に
 してなかったんだろうというツッコミはナシね)。GC側のATレジスタ操作で、
 信号送出レベルを上げてもだめだった。Win2000の場合は、RS232C接続の
 外付けモデムを使う方が確実と思われる(良い物は入手しづらくなっているようだ)。

 少なくてもATS0=1は設定しないと着信しない。作業の容易化のため、ATE1も
 設定したほうがいい(ATE1を設定するまでは、キータイプが表示されない)。
 Winでの操作は、ハイパーターミナルを使う。設定をAT&Wで書き戻すのを忘れずに。
 LT-WinModemのコマンドは、ここを参照してほしい。
 http://www.geocities.co.jp/SiliconValley-SanJose/7682/
38866:02/06/01 14:41 ID:kBK71QzE
[経過3] LinuxにおけるLucent Technology PCIモデム(LT-Winモデム)の認識
 Kernel2.2/2.4用のドライバ(Lucentが基礎コードを提供)が、linuxmodems.org
 から入手できる。RedHat7.3の場合、インストールメディアにRPM形式で
 収められているため、導入は容易である。kernel-2.4.18-3用のドライバは
 8.22a2(a3?)というものだが、同じバージョンのカーネルをベースにしていても、
 VineLinux2.5(RedHat系)では動作しなかった。Debian, SuSEなど、代表的な
 ディストリビューション用にプレコンパイルされたパッケージが用意されて
 いるものは導入が簡単だが、マイナーなディストリビューションではカーネルの
 設定をちゃんとやらないと動かない可能性があるということだ。マイナーなLinux
 の場合は、あきらめてRS232C接続の外付けモデムの方がよい。FreeBSDやSolaris用
 のPCI内蔵モデムドライバは存在しない(外付けか、PCMCIAカードを使うしかない)。

 正常にモジュールが導入されると、/dev/ttyLT0にATコマンドを発行すれば、
 結果が返ってくる(Linuxにはtipやcuがないのがちょい不便か)。
38966:02/06/01 14:42 ID:kBK71QzE
[経過4] mgetty+sendfaxによるppp着信機能の実現
 モデムがLinuxカーネルで認識されていれば、この作業はたやすい。まずは
 mgettyのソースをとってきて、configure;make;make installする。
 設定は、こんなところとか
 http://www.sphere.ad.jp/bbskura/machine/pppserv.html
 こんなところを
 http://ash.jp/env/srv/pppsrv.htm
 参考にしてほしい。ウチでは、モデム側のpppネットワークは192.168.1とした。
 接続が確立されると、ppp0というネットデバイスが自動作成され、接続が
 切れると消滅する。GCから着信したかどうかは、tcpdump -i ppp0などを
 使えば判明する。Windowsではどうやっても着信しなかったLT-WinModemが、
 Linuxではすんなり着信するのが不思議だ。

 釈迦に説法と思うが、Linuxで作成したユーザーアカウントをGCのログイン
 情報とすること(PAP認証なので)。
39066:02/06/01 14:44 ID:kBK71QzE
[経過5] iptablesによるNATルータの構築
 これが一番面倒だ。最近のLinuxはセキュリティのため、明示的に指示して
 やらないと、自動的にパケットがフォワードされるというようにはなってない。
 GCから公式ページが見れるだけではPSOはプレイできない。UDPポートの40000台
 をポートフォワーディングしなければならない。
 http://isweb37.infoseek.co.jp/play/suzu_/linux_router/conf_linux.html
 GCのポートがこのとおりであるという保障はないし、認証時にもUDPパケットが
 使われるため、ppp0からのUDPパケットすべてはeth0に行き、ポート32769〜50000
 までのeth0からのUDPパケットは無条件でppp0に行くようにした。セキュリティ上
 は相当乱暴だが、内部ネットだからこれでも許されるだろう。

 ウチはeth0が固定IPなので、IPマスカレードではなく、SNAT/DNATを使った。
 面倒なのでppp0から来たUDPパケットはすべて外部に丸投げすることにしたため、
 Linuxマシン内にローカルに立ち上げたネームサーバは使わずじまいとなった
 (外界との接続点である、マイクロサーバのDNSを利用)。

 なお、PSOのネームサーバの扱いにはクセがある。ネームサーバは2つ登録できる。
 ソニチのWebサイトの閲覧では、第1DNSがダメなら第2DNSを試す。しかし
 PSOプレイ時には、第1DNSがダメだと、そのまま接続が失敗してしまう。
 よって公式サイトは見れるがプレイできない場合は、DNSサーバの第1と第2を
 入れ替えてみるとよいかもしれない。このあたりはtcpdumpを使うと挙動がわかる。