V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
webdisk
V2EX  ›  问与答

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

  •  
  •   webdisk · 2019-04-25 17:51:30 +08:00 · 1636 次点击
    这是一个创建于 2021 天前的主题,其中的信息可能已经有所发展或是发生改变。
    网络结构是这样的
    手机 <--- 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, 请问这种情况应该怎么办呢, 目前一个妥协的办法是在 路由器运行一个应用层代理.
    5 条回复    2019-04-25 18:34:53 +08:00
    webdisk
        1
    webdisk  
    OP
       2019-04-25 18:03:27 +08:00
    其中最不能理解的情况是用 curl 请求不存在的文件, 请求的包很小, 返回的 404 响应也很小
    都是只有几百字节, 远小于 MTU, 为什么这时也不能正常 TCP 通信呢
    yzwduck
        2
    yzwduck  
       2019-04-25 18:21:46 +08:00
    会不会路由器上的 iptables 有问题,而且只对 TCP 有影响?
    在路由器上抓个包,也许能找到一些线索。
    saluton
        3
    saluton  
       2019-04-25 18:23:00 +08:00
    WG 配置文件里面都可以设置 mtu
    我猜是你路由器的路由表没搞好
    mason961125
        4
    mason961125  
       2019-04-25 18:24:44 +08:00
    把 OpenVPN + NAT 也换成 WireGuard 试试?其实你这个全程都是一层 VPN 吧,流量到路由器就解密了再加密进 OpenVPN。
    webdisk
        5
    webdisk  
    OP
       2019-04-25 18:34:53 +08:00
    @yzwduck #2 抓过包了, TCP 三次握手就没有然后了
    @saluton #3 当然设置过 WG 的 mtu 了。 路由表没有问题的, 用 netcat 验证过 UDP 通信正常 。
    @mason961125 #4 OpenVPN 换成 WireGuard 需要改天再搭一个吧, 确实怀疑过公用的 OpenVPN 设置可能有问题。
    这个确实不算两层 VPN, 应该是两段 VPN。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5774 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:48 · PVG 09:48 · LAX 17:48 · JFK 20:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.