行儀の悪いWebサイト対策
訳あって会社ではMacを業務ネットワークには繋がずに
研究ネットワークに繋いでいます。で、このネットワークは
IP in IPトンネルで某所に繋がっていて、そこからインターネット
に出て行きます。↓こんな感じ。
Mac----RouterA========RouterB----Internet----Webサイト
RouterAとRouterBの間がトンネルで、このトンネルのところはMTUが
1280なのですが、これが原因で繋がらないWebサイトがいくつかありました。
原因を調べると、、、Webサイトからは1460Byteとかのパケットが
送られてくるのですが、トンネルのMTUが1280Byteなので、
RouterBがICMP need fragmentを返します。まともなWebサイトだと
これを受け取って、トンネルを通れる大きさにして再送するのですが、
問題のWebサイトはファイアウォールでICMPがブロックされるのか、
単に無視するだけなのかはわかりませんが、同じ大きさで再送してきます。
(ACKが返らないから)
最近はDF(Don't Fragment)フラグを立てたパケットを送るのが
主流なのはわかるのですが、それならICMPはブロックしないで
もらいたいです。
まぁ、WebなのでTCPが通れば良いわけで、ICMPがダメならTCPの
MSSでなんとかしようと、MacのインターフェースのMTUを1280に
するとちゃんと繋がりましたが、なんか美しくない。。。
なんとかルータで対処できないかと調べたら、pfでできるようでした。
(ルータはNetBSDです)
RouterAのpf.confに
scrub in on gif1 all max-mss 1440
scrub out on gif1 all max-mss 1440
の2行を加えると、MacのMTUを1500に戻してもちゃんと繋がるように
なりました。あ、ついでにトンネルのMTUを1480にしておきました。
今回は自分の支配下のルータで対処できたから良いものの、Webサイト
までの途中にMTUの小さいところがあって、MSSを書き換えてくれなければ
対処不可能です。ちゃんとインターネットのルール(?)を守ってもらいたい
ものです。それともMSSを書き換えないといけないようなRFCとか出てるのかな?
ちなみに問題のあったWebサイトは
- ANA (予約確認ページ https://aswbe1-d.ana.co.jp/ や https://cam.ana.co.jp/。
トップページ https://www.ana.co.jp/は問題ありませんでした。)
- amazon (.co.jpも.comも両方。同じところにホスティングしているみたい。)
- CISCO (おいおい(笑) しかもこのページ
http://www.cisco.com/JP/support/public/ht/tac/102/1020854/fragmentation-j.shtml
Path MTU Discoveryの項。モロあんたのところです。)
コメント
コメントを投稿