一个由MTU引起的超级郁闷的问题及解决

3431阅读 0评论2009-02-27 blue_stone
分类:LINUX

偶的本本通过一个通过一个Tp-Link TR-WL541G无线路由器上网, 很长一段时间以来, 笔记本的Windows可以正常上网, 而Linux下则是有的网站可以上, 有的网站不可以上, 很多网站, 输完地址, 只要敲, 马上就出现出错信息.

升级过内核, 比较过内核参数, 关闭防火墙, 能想到的招数都用上了, 故障依旧.

今天晚上运行ifconfig的时候突然发现wlan0的MTU竟然是576:

wlan0     Link encap:Ethernet  HWaddr 00:1a:73:81:cc:ec  
          inet addr:192.168.1.100  Bcast:255.255.255.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:576  Metric:1                 
          RX packets:62 errors:0 dropped:0 overruns:0 frame:0               
          TX packets:126 errors:0 dropped:0 overruns:0 carrier:0            
          collisions:0 txqueuelen:1000                                      
          RX bytes:5003 (4.8 KiB)  TX bytes:37090 (36.2 KiB)  

而别的网卡MTU设置都为1500. 运行命令

ifconfig wlan0 mtu 1500

后, 使用浏览器访问原来无法访问的网站竟然可以访问了. 实在是一个以外的惊喜.

当我删除wlan0对应的内核模块, 重新加载后, wlan0的mtu为1500, 运行dhclient 抓取地址后, wlan0的mtu就变成了576. 也就是说wlan0的默认mtu为1500, 经过dhcp分配地址后变成了576. 使用wireshark抓取dhcp时经过wlan0的软件包发现client向 dhcp server(无线路由器)请求了Interface MTU, 而dhcp server返回的Interface MTU为576.

修改/etc/dhcp3/dhclient.conf文件, 删除request后的"interface-mtu,"后, dhclient将不会向dhcp server请求Interface MTU,  问题解决.
上一篇:QuickTransit: 来自传说的虚拟机
下一篇:培训散记