双层 V 匹 N 导致 TCP 能建立链接但是不能通信的问题, MTU MSS 相关的

2019-04-25 17:51:30 +08:00
 webdisk
网络结构是这样的
手机 <--- WireGuard ---> 家里路由器 <--- OpenV 批 N + NAT ---> 集团内部网络
手机可以通过 WireGuard 访问家里的各种网络设备, 也可以通过家里的网络连接外网
家里的网络设备可以通过 OpenV 批 N + NAT 正常访问集团内部网络

手机可以 ping 通集团内部网络, UDP 通信也是正常的, 能 ping 通的最大参数是 ping -s 1472
TCP 链接能建立但是不能通信.

曾把 WireGuard 替换成自己实现的 tun V 批 N, 解果也是一样的.

发现了一篇类似的情况 /t/554155
尝试在单个环节或者各个环节使用 iptables set-mss clamp-mss-to-pmtu, 或者设置 mtu, 都不起作用.

和别的地方不同的是这里用了两层 V 匹 N, 请问这种情况应该怎么办呢, 目前一个妥协的办法是在 路由器运行一个应用层代理.
1640 次点击
所在节点    问与答
5 条回复
webdisk
2019-04-25 18:03:27 +08:00
其中最不能理解的情况是用 curl 请求不存在的文件, 请求的包很小, 返回的 404 响应也很小
都是只有几百字节, 远小于 MTU, 为什么这时也不能正常 TCP 通信呢
yzwduck
2019-04-25 18:21:46 +08:00
会不会路由器上的 iptables 有问题,而且只对 TCP 有影响?
在路由器上抓个包,也许能找到一些线索。
saluton
2019-04-25 18:23:00 +08:00
WG 配置文件里面都可以设置 mtu
我猜是你路由器的路由表没搞好
mason961125
2019-04-25 18:24:44 +08:00
把 OpenVPN + NAT 也换成 WireGuard 试试?其实你这个全程都是一层 VPN 吧,流量到路由器就解密了再加密进 OpenVPN。
webdisk
2019-04-25 18:34:53 +08:00
@yzwduck #2 抓过包了, TCP 三次握手就没有然后了
@saluton #3 当然设置过 WG 的 mtu 了。 路由表没有问题的, 用 netcat 验证过 UDP 通信正常 。
@mason961125 #4 OpenVPN 换成 WireGuard 需要改天再搭一个吧, 确实怀疑过公用的 OpenVPN 设置可能有问题。
这个确实不算两层 VPN, 应该是两段 VPN。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/558696

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX