2004年6月11日の日記の1番目の記事へのコメント
■PPP over SSH 三度
先日,UNIX USERの記事見てやったらPPP over SSHうまくいったよ〜,とか書いたわけですが,実はうまくいったのはLinux - Linux間 およびLinux - NetBSD間の接続でして,Linux - FreeBSD間はコネクションが張れるのにpingが通らないという状態でした.まあ,自宅のNetBSDや出先のLANのNATやってるLinuxとの間でPPPできるだけでも十分便利なんですが,同じく出先のLANでNATやってるFreeBSDに繋げないのは何か悔しいし,他の利用者のニーズを考えるとLinux機よりこっちにPPPできた方が圧倒的に便利なので,やっぱ何とかしたいわけで,気合いで頑張ってみました.
といっても,何が悪いのか全然わからんので,まずはクライアントとしているT40の側からEtherealで調査してみました.とりあえずpppの反対側にpingを打つと返事が無いわけなんですが,Etherealで見ているとeth0の方からちゃんとパケットが出ており,サーバ側からの返答もきています.が,ppp0の方を見るとまったくパケットが流れません.また,サーバ側ではtun0にパケットがきています(pingに反応しているんだから当然か).ということはクライアントで受信した際にsshからpppに上げ(?)そこねているってことなんでしょうかね.
そこで,受信側のLinuxを相手にした際のパケットとFreeBSDを相手にした際のパケットをEtherealでキャプチャして比べてみたところ,何か同じpingなのに一部パケットのサイズが違う・・・.んんー,もしかして圧縮の違いとかなのかなぁ.試しにsshのオプションから「-C」を外してみましたが効果無し.ならば,pppdのmanに載っているcompressを含むものを上から順にと思い,まず「bsdcomp」を外したもののこれは効果無し.ならば「deflate」はどうだ・・・,キタ━━━━(゜∀゜)━━━━ッ!! pppdに「nodeflate」つけたらpingが通りパケットがすいすい流れ始めました.うほほ〜.しかしこうして書いてみるとあっさり解決したように見えますが,何かここにたどり着くまで随分時間かかりました.ああ,疲れた・・・.
ちなみに,FreeBSDのpppだと「set ifaddr 192.168.1.2-192.168.1.253」とかすれば相手のIPアドレスをそっから勝手に選んでつけてくれるようですが,pppdでこれやる方法がわかりません.検索して引っかかったhpのページ見るとなんかttyの番号見てスクリプトで決めるとかすごいことやってますが・・・.どうすんだろ,これ.
[コメントを書く]
2004年6月11日の日記の1番目の記事へのコメント
[コメントを書く]