用WindowsXP拨入pptpd搭建的VPN Server后传输大包..
时间:2006-02-05 来源:wenzk
近期在linux上作了一个vpn服务器,利用windows的自带的拨号程序可以顺利拨入,并可上网,但随后发现一个重要问题,直接影响了客户端的上网功能。问题如下: 利用windowsXP PC机拨号后,无法访问新浪网,除新浪网之外,还发现几个其它不太重要的网站也是无法访问。但利用windows2000 PC机拨号后,访问所有网站均正常。为了最后验证这个这个现象,我还在一台机器上反复安装了2000及XP。 |
最近本人也发现同样的问题,虽然表面现象有点不一样,但是大体都是一致的,ping任何地方都没有问题,使用ssh登录其它服务器也没有问题,一旦执行传输大数据量的操作,如ls一个很多文件的目录,终端就停止反应了。
后来在服务器上发现,windows2000拨号端口的mtu为1496,而windowsxp拨号端口的mtu为1396。 然后到处搜寻问题的答案,在本论坛也搜寻了半天,没有查到问题的解决方案,后来查到一篇文章《使用Windows XP连接VPN成功后,在传输“大块”数据时会出现数据堵塞,导致数据传输失败》,按照作者tjyihui的建议修改我的iptables脚本,在数据包通过ppp端口前将mtu值变大,但后来又将发现的其它一些网站放进去后,又出现其它问题。由于是人手工向脚本里添加,解决方案不完美,于是我又找其它解决方案: |
呵呵,看来确定是MTU的问题了,下面看解决办法。
在linux VPN服务器主机上,为了解决手工添加特殊网站地址iptables脚本的不方便的问题,可以通过以下命令手工修改windowsXP拨号端口的mtu值:
CODE:
[Copy to clipboard]
ifconfig ppp0 mtu 1496
但不可能手工修改每一个随机拨号上来而在服务器上建立的端口ppp*,所以需要创建一个自动执行的脚本,在每一个成功拨号后自动运行,将ppp*端口的mtu值修改为1496,解决过程如下: 在/etc/ppp/下创建ip-up.local脚本,创建后就会在每一个拨号建立后自动运行,从而将每一个ppp*端口的mtu修改为稍大一些,脚本内容如下:
CODE:
[Copy to clipboard]
#!/bin/bash PATH=/sbin:/usr/sbin:/bin:/usr/bin export PATH ifconfig $1 mtu 1496
QUOTE:
注:本主题创建后发现本论坛的一篇文章谈过此问题,此文章的主题为《Fedora core 2下建立Poptop服务器以及常见问题 》,但没有提供自动脚本的解决方案,本文算是个补充吧。
|
这个办法确实是可行的:)
记录下来。
相关阅读 更多 +
排行榜 更多 +