[ Linux ] 何故か MTU の値が変わっていたので

tunnelbroker.net と IPv6 トンネル接続し始めて、約1年。ほぼノントラブルだなぁ、と思ってたら、何故か一部のサイトへのアクセスがうまく出来なくなるという状況に。(特に Web を見に行く時がおかしい状態。)

まぁ、Squid の設定で "dns_v4_first on" が有効になっていれば、それほど不便でもなかったので、暫くほっといたわけですが…。

ほったらかして三週間ほど経過したんで、試しに Squid 外して test-ipv6.jp にアクセスしてみたところ…。


test-ipv6.jp へのアクセス結果

なんぞ? MTU 問題があるとは?

ルータかなぁとも思ったのだけど、そもそも NAT BOX として使っている Linux サーバの設定どうなんだろう、とチェックしてみたところ…。

nexus01:~# cat /proc/sys/net/ipv6/conf/eth0/mtu
1280
nexus01:~# cat /proc/sys/net/ipv6/conf/eth1/mtu
1500
nexus01:~# cat /proc/sys/net/ipv6/conf/eth2/mtu
1500

eth1 と eth2 の値が 1500 になってる!IPv6 での MTU は 1280byte を指定するということになっているので、どうやらこの設定がアクセスのおかしい原因だった模様。

さっくり、トラブルシュートの前に…

値を変えれば、すぐ直りそうなのは判るのだけど、念のため確認。
サーバの CLI から wget コマンドで www.kame.net にアクセスしてみると、「応答待っています…」のままうんともすんとも言わない状況。

nexus01:~# wget -d --no-proxy http://www.kame.net/
Setting --proxy (useproxy) to 0
DEBUG output created by Wget 1.15 on linux-gnu.
URI encoding = `UTF-8'
--2014-05-22 23:14:19--  http://www.kame.net/
www.kame.net (www.kame.net) をDNSに問いあわせています... 2001:200:dff:fff1:216:3eff:feb1:44d7, 203.178.141.194
Caching www.kame.net => 2001:200:dff:fff1:216:3eff:feb1:44d7 203.178.141.194
www.kame.net (www.kame.net)|2001:200:dff:fff1:216:3eff:feb1:44d7|:80 に接続しています... 接続しました。
Created socket 3.
Releasing 0x0000000001851060 (new refcount 1).
---request begin---
GET / HTTP/1.1
User-Agent: Wget/1.15 (linux-gnu)
Accept: */*
Host: www.kame.net
Connection: Keep-Alive
---request end---
HTTP による接続要求を送信しました、応答を待っています... ^C

そこで、プライベートネット側の eth2 の MTU 値を変更して、再度 wget 実行。

nexus01:~# echo 1280 > /proc/sys/net/ipv6/conf/eth2/mtu
nexus01:~# wget -d --no-proxy http://www.kame.net/
Setting --proxy (useproxy) to 0
DEBUG output created by Wget 1.15 on linux-gnu.
URI encoding = `UTF-8'
--2014-05-22 23:25:25--  http://www.kame.net/
www.kame.net (www.kame.net) をDNSに問いあわせています... 2001:200:dff:fff1:216:3eff:feb1:44d7, 203.178.141.194
Caching www.kame.net => 2001:200:dff:fff1:216:3eff:feb1:44d7 203.178.141.194
www.kame.net (www.kame.net)|2001:200:dff:fff1:216:3eff:feb1:44d7|:80 に接続しています... 接続しました。
Created socket 3.
Releasing 0x0000000001cfc060 (new refcount 1).
---request begin---
GET / HTTP/1.1
User-Agent: Wget/1.15 (linux-gnu)
Accept: */*
Host: www.kame.net
Connection: Keep-Alive
---request end---
HTTP による接続要求を送信しました、応答を待っています...
---response begin---
HTTP/1.1 200 OK
Date: Thu, 22 May 2014 14:25:27 GMT
Server: Apache/2.2.27 (FreeBSD) mod_ssl/2.2.27 OpenSSL/0.9.8y DAV/2
Accept-Ranges: bytes
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html
---response end---
200 OK
Registered socket 3 for persistent reuse.
長さ: 特定できません [text/html]
`index.html' に保存中
    [ <=>                                                                          ] 4,065       --.-K/s 時間 0.001s
2014-05-22 23:25:26 (2.93 MB/s) - `index.html' へ保存終了 [4065]

と、うまくアクセス出来るようになりました〜。 Squid を経由したブラウザでのアクセスも OK 。

このままだと、サーバの再起動した時に値が戻ってしまう可能性があるので、/etc/sysctl.conf に 3 行書き加えて、おしまい。(念のため、物理インターフェース全部の分、書いておいた。)

nexus01:~# tail -n3 /etc/sysctl.conf
net.ipv6.conf.eth0.mtu = 1280
net.ipv6.conf.eth1.mtu = 1280
net.ipv6.conf.eth2.mtu = 1280

しかし、なんでこうなったんだろう…。

トラックバック(0)

コメントする