在尝试将Ubuntu Linux服务器设置为l2tp / IPSEC服务器的客户端时,发现尝试发送数据时出现不一致。
隧道/ VPNbuild立连接/握手正确,从客户端我可以按预期ping / SSH到所有的机器。
在使用scp的时候,当我试图从客户端发送数据到远程机器时,我注意到了这个问题。
我可以复制/得到任何没有问题的东西:
scp user@vpn:/tmp/test.file
但是,如果我尝试发送数据,并且要发送的文件大小> vpn MTU (1280):
scp /tmp/test.file user@vpn:/tmp
我收到“ Packet Corrupt ”消息。
没有成功,我试过这个: ethtool -K eth0 tx off
使用tcpdump我注意到所有的传出包无论大小都包含DF标志,由于某些原因包通过ppp0接口不碎裂。
我正在使用的configuration是:
ipcp-accept-local ipcp-accept-remote refuse-eap require-mschap-v2 noccp noauth idle 1800 mtu 1280 mru 1280 defaultroute usepeerdns debug lock connect-delay 5000
我得到的一些日志:
pppd[26423]: sent [LCP EchoReq id=0x1 magic=0x4501dc87] pppd[26423]: rcvd [LCP EchoRep id=0x1 magic=0xd6736575]
如果我发送的文件大于MTU的大块:
pppd[12603]: Protocol-Reject for unsupported protocol 0xb8af pppd[12603]: rcvd [LCP ProtRej id=0x8 ...]
解决这个问题的方法是使用rsync并限制输出带宽:
rsync -vvv --bwlimit=16 -P -e "ssh -i ssh_key.pem" /tmp.test.file user@vpn:/tmp
从同一networking运行iOS / OS X的其他客户端根本没有问题,都可以发送/获取数据,没有任何问题,所以我不怀疑VPN服务器的问题。
任何想法或可能的补丁来解决这个问题?