V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
evemoo
V2EX  ›  宽带症候群

虚拟机 + Wireguard 的 NAT 问题

  •  
  •   evemoo · 2021-07-22 21:35:13 +08:00 · 3755 次点击
    这是一个创建于 1246 天前的主题,其中的信息可能已经有所发展或是发生改变。

    阿里云轻量服务器:

    有公网 IP + 安全组端口全开 + 打上 Fullcone 补丁 。 snipaste_20210722_212017

    服务器配置:

    192.168.1.222 是 NS 的 局域网地址。 snipaste_20210722_212523

    Virtualbox 虚拟机:

    有线桥接模式,连上后能互相 ping 通。 snipaste_20210722_212629

    客户端配置: snipaste_20210722_213217

    防火墙配置: snipaste_20210722_212133

    存在问题: Nintendo Switch 将网关设置成虚拟机 IP 后,网络测试结果为服务器地址,但 NAT 类型没有提升到 A 。 snipaste_20210722_212227

    17 条回复    2021-07-30 10:47:40 +08:00
    nuk
        1
    nuk  
       2021-07-23 01:26:26 +08:00
    做两次 port static map,直接给 switch 分配你的公网地址,没必要搞这么复杂
    evemoo
        2
    evemoo  
    OP
       2021-07-23 01:39:16 +08:00
    @nuk
    目前已有的 iptables tproxy 方案做成透明代理网关没问题,但还是想排查一下这种威皮恩方案问题在哪。
    顺便对比一下这两种方案哪个对主机 p2p 游戏( MHR )加速效果比较好。
    evemoo
        3
    evemoo  
    OP
       2021-07-23 02:06:47 +08:00   ❤️ 1
    谷歌翻了很多主机代理资料和实际折腾经历总结一下, 如果有错误请指正。

    多个玩家都在国内联机 P2P 游戏,即便拥有 NAT A 条件但游戏内玩家瞬移瞬移的情况还是存在,至于校园网或 NAT C 玩家就更卡了。各运营商链路质量不同或者存在丢包情况都是导致瞬移的原因,此时搭建中心节点让双方走代理能改善这种情况。

    在不过墙的时候 $$ 因为 0-RTT 的缘故是个不错的选择,但拿来加速游戏则需要 L5 转 L3,不那么适合加速游戏(实际用途 vs 特殊需求)。

    Windows 路由表不像 Linux 那么好处理,虚拟机方案需要有线桥接,无线模式下真机流量无法被转发。
    绝大部分无线网卡不支持混杂模式: https://www.virtualbox.org/manual/ch06.html#network_bridged
    目前能找到的方案是 socks5 + pcap2socks ( Netch 已整合)。

    同时选择香港联机节点,不同厂商加速器的联机效果也不完全能保证稳定,技术壁垒或劣化特定 IP 段暂未考证。
    guanyin8cnq12
        4
    guanyin8cnq12  
       2021-07-23 07:53:51 +08:00
    参考,https://vps.gitbook.io/discount/pubglite-jia-su-dai-li-shi-xian

    客户端,建议不要搞的 那么复杂,不需要在 op 上搞 udp 全局代理,用 tunsafe,或者官方指定的 wireguard client 。
    guanyin8cnq12
        5
    guanyin8cnq12  
       2021-07-23 08:03:56 +08:00
    udp 数据包会被 qos,你需要解决 udp over tcp(tls)。不要用 udpspeeder,根本没用。在 udp over tls 上 多想想出路。
    cwbsw
        6
    cwbsw  
       2021-07-23 08:35:11 +08:00
    不用 FullCone 补丁,入站流量全部 DNAT 到 NS 呢?
    evemoo
        7
    evemoo  
    OP
       2021-07-23 12:52:39 +08:00
    @guanyin8cnq12
    目标是主机加速,NS 不支持 Socks 代理只能走网关形式了。
    至于 qos 问题,国内服务器我用 udpping 测过,没有丢包。
    evemoo
        8
    evemoo  
    OP
       2021-07-23 12:55:16 +08:00
    @cwbsw
    让 NS 数据走隧道到服务器后再进行 NAT 转换,这么理解?
    guanyin8cnq12
        9
    guanyin8cnq12  
       2021-07-23 13:11:45 +08:00
    @evemoo 不丢包 不等于 qos
    cwbsw
        10
    cwbsw  
       2021-07-23 13:25:04 +08:00
    @evemoo
    "让 NS 数据走隧道到服务器后再进行 NAT 转换" 你本来就是这样了啊。我看你的拓扑,OpenWrt 没有做 NAT,VPS 上 AllowedIP 也写了 NS 地址。
    我的意思是不要用 FullCone 补丁,简单粗暴地把所有入站流量全部转发到 NS 。
    iptables -t nat -I POSTROUTING -o eth0 -s 192.168.1.222 -j SNAT --to-source eth0's address
    iptables -t nat -I PREROUTING -i eth0 -j DNAT --to-destination 192.168.1.222
    类似这样。
    另外据 Support,Type B 应该是不影响联机的。
    https://www.support.com/how-to/how-to-change-nat-type-on-nintendo-switch-12474
    cwbsw
        11
    cwbsw  
       2021-07-23 13:30:39 +08:00
    @guanyin8cnq12
    现在 TLS 也没法用了。
    https://v2ex.com/t/788719
    evemoo
        12
    evemoo  
    OP
       2021-07-23 13:33:10 +08:00
    @guanyin8cnq12
    原 $$ 方案实际游戏体验还行,联机还要套个 tls 有点累
    evemoo
        13
    evemoo  
    OP
       2021-07-23 13:49:52 +08:00
    @cwbsw
    在服务器执行吗,我可能需要 dd 系统
    evemoo
        14
    evemoo  
    OP
       2021-07-28 16:11:31 +08:00
    @cwbsw
    所有入站流量全部转发到 NS 能 NAT A,但 SSH 反而连不上了
    cwbsw
        15
    cwbsw  
       2021-07-28 17:40:47 +08:00
    @evemoo DNAT 前加个规则排除掉吧。
    evemoo
        16
    evemoo  
    OP
       2021-07-29 11:44:40 +08:00
    @cwbsw
    iptables 这块不太熟,能讲解一下吗
    cwbsw
        17
    cwbsw  
       2021-07-30 10:47:40 +08:00
    @evemoo
    iptables -t nat -I PREROUTING 1 -i eth0 -p tcp --dport 22 -j ACCEPT
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1084 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:11 · PVG 03:11 · LAX 11:11 · JFK 14:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.