IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    vpn搭建及pptpd因mtu上传下载慢一例

    五四陈科学院发表于 2014-12-30 14:31:30
    love 0

    以下内容由[五四陈科学院]提供

    一、环境及安装

    • 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的过程中,数据包丢了。原理在此。

    想快点找到作者也可以到Twitter上留言: @54chen
    或者你懒得带梯子上墙,请到新浪微博:@54chen


沪ICP备19023445号-2号
友情链接