SVX日記
2005-10-11(Tue) ふぁいばー、かむ、ほーむ!!
15時すぎ、我が家のwikiのチャット欄に「工事終わってるよ」という発言が現れた……出た……出たぁ……来たァッ!! とうとう光が我が家にやってきた!! これで300kbpsソコソコというナロードバンド生活ともお別れである。しかし、待てよ? ウチはマンションタイプであるから、ファイバーは管理人室(?)までしか来ておらず、そこからはVDSLで既存の電話線に信号を乗せる形で……手っ取り早く言えば、管理人室からの極短距離ADSL状態なのである。Yahoo!BBが解約できていない状態で、重ねて光を契約してしまったが、まだ通信ができている……つまり、両方使えているというコトだ。これならサーバの落ちる時間を限りなくゼロにすることができる。うぅむ、ラッキーといえよう。
しかし、家に帰ると22時30分。ココからは時間との勝負である。こんな時に限って、カミさんがCDをレンタルしてきて……もぐもぐ、ゴハンを食べな……「cdparanoia -d /dev/cdr -vQ」……がら……あ、失礼。ウチは「cdparanoia -d /dev/cdr -B」で、CDをリッピングしてるんで……ウグッ。CD-Rに焼くのと、mp3化は明日でいーよな? あー、忙しい!!
しかしながら、ウチはDebianサーバにイーサカードを2枚挿ししてルータをやらせてるもんで、その設定変更がやっかいなのである。今までのYahoo!BBはDHCP接続だっが、B-FletsはPPPoE。接続方法がまるで違う。多少は下調べしておいたものの、予行演習できるワケもなく、接続の試行錯誤を開始するコトにする。
まずは、PPPとPPPoEのパッケージをインストールする。これは「apt-get install ppp pppoe」の一閃である。次に、よくわからないが「/etc/network/interfaces」をイジってeth0側をDHCPからSTATICに設定変更する。アドレスは適当でいいらしい。でもって「/etc/ppp/pap-secrets」に、プロバイダのアカウントとパスワードを設定する。最後に「/etc/ppp/peers/dsl-provider」にPPP接続の条件と、なぜか、再度プロバイダのアカウントを記述して設定完了……のようである。
おっと、ここでCDのリッピングが終わった。縁起物なのでYahoo!BBのマツゴのスピードテストをしてみよう。信号がダブルで来ているハズだから、これまたかなり遅くなっているハズ……だ……が……遅いッ!! テストにどれだけ時間がかけるんだ!! ……と!! やっと、出た!! なんと、150kbpsである!! モデムの3倍である。なんちゅーこった。
ココでYahoo!BBのADSLモデムからのLANケーブルを抜き、B-FletsからのLANケーブルを挿す。「ifdown eth0」「ifup eth0」でネットワークを上げなおし「ifup ppp0」でPPPoE接続を開始する……って、素直に開始するわきゃない……なに? 「If PPP was included as a module, try `/sbin/modprobe -v ppp'.」? あ、そーか、pppのモジュールが入ってないのね。こりゃ、面倒だ。早速だが、昨日のプリンタ設定と同じく、カーネルモジュールだけコンパイルしてやらねばならない。
とりあえず「cd /usr/src/linux」「make menuconfig」……はいいけど、どれがそのモジュールなんだろう? メニューの階層を上へ下へ。どうやら「Network device support」の中の「PPP (point-to-point protocol) support」がそれっぽい。それのチェックを「M」にして「make dep」「make modules」「make modules_install」「depmod -a」「modprobe ppp」……ん? ダメ? pppってモジュールはない? 「/lib/modules/`uname -r`/net」して、インストール済みのモジュールを確認する「ppp-generic.o」ならあるぞ。「modprobe ppp-generic」して……入った。でも「ifup ppp0」できない。なんでだ?
パッケージが足りないのか? 「dpkg -l | grep ppp」する。「ppp」やら「pppoe」やらが入っている中に「pppoeconf」なんてパッケージがあるのを発見する。を? これはシロート用のコンフィグスクリプトでは? 適当に「pppoeconf」を実行してみる……動いた。なんだか、自動的にeth0にPPPoEの接続口を見つけたっぽい挙動の後に、いくつか質問してきた。全部イエス。これでうまくいくか? ……ダメだ。「ppp0: error fetching interface information: Device not found」……まったく、よくわからん。
仕方ないので、どこかにログが出てないかと思い「/var/log」の下をゴソゴソする。「debug」なんてログの中に「read (asyncReadFromPPP): Session nnnnn: Input/output error」なんてログを発見する。asyncってどっかで見たな……menuconfigの中か? もう一度「make menuconfig」してみる。あった。ついでなのでPPPの下の「PPP support for async serial ports」「PPP support for sync tty ports」「PPP Deflate compression」「PPP BSD-Compress compression」を根こそぎ「M」にして、再度モジュールをコンパイル、インストール。適当にmodprobeしまくる。
改めて「pppoeconf」……ん? eth0のpppoe接続を発見できなくなってしまったぞ? さっき、eth0を落としたからか? 「ifup eth0」して……この際、縁起物なので「iptables」も落としておこう。再度「pppoeconf」……さっきと違う!? pppがつながったっぽいぞ!? 「ifconfig」すると確かに「ppp0」が出ている。よっしゃ!! とりあえず接続はオッケーじゃ!!
試しにwindowsPCからウェブアクセスしてみる……これはダメ。アレか? 名前解決ができていないのか? 仕方ない「tcpdump -i eth1 port domain」で流れるパケットを見てみよう。一応、応答は返っているっぽいが、サイトにはつながらない。サーバ上で「nslookup www.yahoo.co.jp」すると、ちゃんと結果が出てくる。bindの設定がマズいのかなぁ……今度はwindowsPC上のcygwinから「nslookup www.yahoo.co.jp」……んッ!? 名前解決できてる……??? じゃ、名前解決は問題ないんだ。するとなんだ? 「telnet www.yahoo.co.jp 80」……つながらない……。じゃ、サーバ上で「telnet www.yahoo.co.jp 80」……つながるぞ!! なんじゃこりゃ? ……ルーティング? ルーティングなのか!?
「iptables -L」すると「/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE」という行がある。コイツを「/sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE」と修正して「iptables.down」「iptables.up」してみる……
……とゆーわけで、なんとか光で接続することができた。ぷはー。長かった……とりあえず、この苦労に報いるのは、まずは結果であろう。WindowsPCから、再度ブロードバンドスピードテストを行う。よっしゃ!! 1500kbpsほど出ている。無線LANの「.11b」経由だからこんなトコだろう。じゃ、次はジカ付けのDebian上で計測だ!! 適当に大き目のファイルをwgetしてみる……