Vpn搭建及pptpd因mtu上传下载慢一例
一、环境及安装
-
server: centos 6.3 (kvm虚拟机)。
-
client: ubuntu 10.04。
-
server上yum install安装pptpd,常规设置好ip分配、用户名密码,添加iptables set mss的参数。
设置/etc/pptpd.conf中的localip与remoteip,分别表示虚拟出来的双方ip范围。
设置/etc/ppp/chap-secrets中的用户名密码和连接ip等。
service pptpd start
iptables -A FORWARD -p tcp –syn -s 172.16.36.0/24 -j TCPMSS –set-mss 1356 -
client上apt-get install安装的pptpsetup,设置好用户名密码,启动vpn连接。
/usr/sbin/pptpsetup –create vpn –server ...(server ip) –username vpn –password ASDF –encrypt –start
-
pptpd v1.4.0
二、遇到困难
-
scp client_file server 时,速度先很快,级数变慢,最后不动了。
-
scp server_file client 时,同上表现。
-
因为server处在vm中(某云主机)。
-
server最后的公网ip并不在eth0,而是由母机网卡决定。
-
server的iptable看上去并不生效。
三、联想
- vpn慢的原因,最大可能是虚拟出的网络mtu大过了中间的网络mtu值。
- 猜测是双方的虚拟网卡上的mtu与实际的网络有差别。
- 分别在server client执行netstat -i。
- 可以看到ppp0默认的mtu值都在1496左右(真实网卡是1500),找到真凶。
四、解决
-
server: /etc/ppp/options.pptpd 最后一行添加 mtu 1300,解决下载慢。
-
client: ifconfig ppp0 mtu 1300 解决上传慢的问题。
-
MTU:Maximum Transmission Unit 网络上传送的最大数据包,单位字节,默认一般是1500。
-
大于mtu的包,在系统层会被拆成多个来发。
-
各层级的网络路由设备,会协商大家的mtu,选择一个最小的。
-
协商mtu的时候要发送ICMP包,很多厂商的防火会关闭它的传输(防ddos等)。真凶在此。
-
在无法实现协商mtu的时候,各种事件都会影响mtu的确定,实际表现为在传大文件的时候,寻找mtu的过程中,数据包丢了。原理在此。
原创文章如转载,请注明:转载自五四陈科学院[http://www.54chen.com]
Posted by 54chen linux