LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: liqishan

linux下MTU值的设定

[复制链接]
发表于 2004-6-24 14:36:11 | 显示全部楼层
gentoo你修改ip的配置文件吧,gentoo我没用过
发表于 2004-6-24 14:36:21 | 显示全部楼层
pc1: 192.168.168.14 MTU:750
pc2: 192.168.168.200 MTU:1500

从pc1 : ping -f -l 723 192.168.168.200
返回:Packet needs to be fragmented but DF set.
解释:长度723的包+28 = 751 超过了pc1的MTU 750,所以提示需要分组。

从pc1 : ping -f -l 722 192.168.168.200
返回:Reply from 192.168.168.200: bytes=722 time<10ms TTL=128
解释:长度722的包+28 = 750 没有超过了pc1的MTU 750,所以直接通了。

从pc2 :ping -f -l 1472 192.168.168.200
返回:Reply from 192.168.168.200: bytes=1472 time<10ms TTL=128
解释:本机出口网卡MTU=1500,所以不需要分组就可以通。

从pc2 : ping -f -l 1472 192.168.168.14
返回:Request timed out.
解释:长度1472的包+28 = 1500 ,所以数据包在本地不分组,直接发给pc1,但是pc1的MTU=750,显然不能接受,所以pc1丢弃包。
发表于 2004-6-24 14:37:34 | 显示全部楼层
下面请兄弟们热烈发表自己的看法:

从pc2: ping -f -l 722 192.168.168.14
从pc2: ping -f -l 723 192.168.168.14

出现的现象,怎么解释 ?
 楼主| 发表于 2004-6-24 15:47:53 | 显示全部楼层
最初由 pinksnoopy 发表
下面请兄弟们热烈发表自己的看法:

从pc2: ping -f -l 722 192.168.168.14
从pc2: ping -f -l 723 192.168.168.14

出现的现象,怎么解释 ?

没觉得有何不同,没出现什么现象呀
发表于 2004-6-24 19:08:20 | 显示全部楼层
你测试出来是同样的结果 ?
发表于 2004-6-24 21:51:16 | 显示全部楼层
我觉得这个东西修改可能没有用吧???
一般外置Modem是通过以太网连接服务器得网卡的,设置eth0其实应该是设置modem和服务器之间通讯的mtu吧?是不是修改哪个pppoe得连接才有作用的呢?
 楼主| 发表于 2004-6-24 22:15:43 | 显示全部楼层
最初由 shiqizheng 发表
我觉得这个东西修改可能没有用吧???
一般外置Modem是通过以太网连接服务器得网卡的,设置eth0其实应该是设置modem和服务器之间通讯的mtu吧?是不是修改哪个pppoe得连接才有作用的呢?


其实我的意思是当你打开一个网页时很久都没反应(超时),但又没出错提示(dns错误等),就可以试着修改mtu值,或许你会有意向不到的效果;
如果是ADSL拨号,且是一台机做主机,其余共享上网的话,是必须修改mtu值的,要不默认的1500会使你很多网页都打不开
发表于 2004-6-24 23:25:59 | 显示全部楼层
这个好像在RFC2923里面提到。共享上网的,如果是用iptables的,可以通过设置规则来把MTU值强行减小:
解决的方法是:
1. 让icmp包通过
2. 在中间某个地方修改数据包中的MSS,强制改小.

呵呵,linux的netfilter/iptables中有个TCPMSS target就是专门干这个的.

#man iptables

TCPMSS
       This  target  allows to alter the MSS value of TCP SYN packets, to con-
       trol the maximum size for that connection (usually limiting it to  your
       outgoing  interface's MTU minus 40).  Of course, it can only be used in
       conjunction with -p tcp.
       This target is used to overcome criminally braindead  ISPs  or  servers
       which  block  ICMP  Fragmentation Needed packets.  The symptoms of this
       problem are that everything works fine from your Linux firewall/router,
       but machines behind it can never exchange large packets:
        1) Web browsers connect, then hang with no data received.
        2) Small mail works fine, but large emails hang.
        3) ssh works fine, but scp hangs after initial handshaking.
       Workaround:  activate  this option and add a rule to your firewall con-
       figuration like:
        iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
                    -j TCPMSS --clamp-mss-to-pmtu

       --set-mss value
              Explicitly set MSS option to specified value.

       --clamp-mss-to-pmtu
              Automatically clamp MSS value to (path_MTU - 40).

       These options are mutually exclusive.
发表于 2004-6-24 23:28:51 | 显示全部楼层
最初由 shiqizheng 发表
我觉得这个东西修改可能没有用吧???
一般外置Modem是通过以太网连接服务器得网卡的,设置eth0其实应该是设置modem和服务器之间通讯的mtu吧?是不是修改哪个pppoe得连接才有作用的呢?


这个有时还是有用的。特别中间有隧道VPN或PPPoE等链路,这段的MTU比1500要小一点点。到底小到什么程度,可能谁都不知道,但并不越小越好:-)
 楼主| 发表于 2004-6-30 22:30:57 | 显示全部楼层

保存自己设定的mtu值

为让mtu值起动后为自己设定的初值,可以这样:
[PHP]#vi /etc/init.d/mtu
  在里面加上  ifconfig eth0 mtu xxx(自己设定的值)
#chmod +x mtu
#rc-update add mtu default[/PHP]
这样起动后你就不用在设定mtu值了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表