Chinaunix首页 | 论坛 | 博客
  • 博客访问: 31524
  • 博文数量: 8
  • 博客积分: 330
  • 博客等级: 一等列兵
  • 技术积分: 81
  • 用 户 组: 普通用户
  • 注册时间: 2005-05-03 07:29
文章分类

全部博文(8)

文章存档

2014年(1)

2009年(1)

2006年(2)

2005年(4)

我的朋友
最近访客

分类: LINUX

2005-11-10 10:31:30

Iptables网关MTU问题

  • 问题描述
Iptables作SNAT网关时候, 发现一些PC机不能正常访问一些站点,表现为, 浏览器可以解析站点, 部分打开站点, 接着就超时了。

  • 原因
ADSL的PPPoE连接的MTU是1492, 而Widows和Linux缺省的MTU是1500, 当浏览器相WEB服务器发送请求时, 要求MSS是1460, 一些站点屏蔽了ICMP3/4访问或者禁用了PMTUD协议而导致MSS值是1460, 当WEB服务器返回的包小于1452时,客户端可以正常接受数据, 超过1452时候无法得到数据。
  • 解决方法
1。 使用ping找到你的MAX MTU Size
ping -l mtu_size-28 -f your_gateway
从1500开始,知道没有收到错误信息the Packet needs to be fragmented but DF set。 28是IP和ICMP协议所用的字节。一般而言PPPoE是1492。

2。调整PC的MTU

Windows 2000/XP

注册表:HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Services TcpipParameters Interfaces, and (Edit -> New -> DWORD Value), and name the value MTU.
Double-click the new value, choose the Decimal option, and type the MTU value determined above. 重启。

Windows 98

注册表: HKEY_LOCAL_MACHINE System CurrentControlSet Services ClassNet 增加MaxMTU string项,

Linux
ifconfig interface mtu mtu_size

3. 调整网关

Iptables

增加规则:

iptables -o ppp_interface -I FORWARD 1 -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu
出站包大小改为pppx的MTU尺寸。

或者 clamp mss size in pppoe
RedHat修改/etc/sysconfig/networking-script/ifcfg-ppp0
CLAMPMSS=1452

Debian
修改 /etc/ppp/peers/dsl-provider
增加
pty "/usr/sbin/pppoe -I eth1 -T 80 -m 1452
注释掉 plugin, rp-pppoe.so 好像有bug


Linksys 路由器




参考:

http://www.phildev.net/mss/index.html


阅读(1968) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~