想请问一下各位, Wireguard IPv4 连接没问题,但是 IPv6 却遇到下面这样的情况怎么办? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LittleState
V2EX    WireGuard

想请问一下各位, Wireguard IPv4 连接没问题,但是 IPv6 却遇到下面这样的情况怎么办?

  •  
  •   LittleState 2023-08-20 12:10:34 +08:00 2787 次点击
    这是一个创建于 792 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我两台路由器使用 ipv4 连接对端时没有任何问题,但是换成 ipv6 后,我在异地使用 iperf3 测试家中的设备,除了路由器外,其他设备基本都没速度...

    这是是怎么回事,我把 wg 的 mtu 已经改成了 1280 。 大概的网络环境就是下面这样

    image.png

    然后使用 iperf3 测速就这样

    image.png

    大概试了 3 种情况:

    1. OpenWrt-A 和 OpenWrt-B 上运行 wireguard 并连接,就是上面的图那样
    2. 笔记本 和 OpenWrt-A 连接,还是和 1 是一样的效果
    3. 笔记本 和 树莓派 连接,这样没任何问题,访问其他设备也是满速

    两个路由器的配置

    使用的 luci-app-wireguard ,基本上就只改了 mtu 为 1280

    笔记本配置文件

    // 笔记本 [Interface] PrivateKey = Address = 10.10.0.2/32 MTU = 1280 [Peer] PublicKey = AllowedIPs = 10.10.0.0/24, 192.168.2.0/24 Endpoint = <ipv6-ddns-域名>:38538 PersistentKeepalive = 25 

    树莓派配置

    [Interface] PrivateKey = Address = 10.10.0.1/24 ListenPort = 38538 MTU = 1280 #replace eth0 with the interface open to the internet (e.g might be wlan0 if wifi) PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE # IP masquerading PreUp = iptables -t mangle -A PREROUTING -i wg0 -j MARK --set-mark 0x30 PreUp = iptables -t nat -A POSTROUTING ! -o wg0 -m mark --mark 0x30 -j MASQUERADE PostDown = iptables -t mangle -D PREROUTING -i wg0 -j MARK --set-mark 0x30 PostDown = iptables -t nat -D POSTROUTING ! -o wg0 -m mark --mark 0x30 -j MASQUERADE # laptop [Peer] PublicKey = AllowedIPs = 10.10.0.2/32 
    第 1 条附言    2023-08-22 09:58:20 +08:00
    破案了,给 Openwrt-B 刷了官方固件(也可能之前的固件默认也开启了 IPv6 硬件加速吧),同时给家中的 Openwrt-A 关闭了 IPv6 硬件加速就好了,现在 IPv6 wg 隧道速度正常了。也多谢 @zbinlin 帮我排查了一下午。
    27 条回复    2023-08-22 12:24:08 +08:00
    slowman
        1
    slowman  
       2023-08-20 13:40:48 +08:00   1
    有必要 masquerading 吗?
    用 openwrt 了,为什么还手写 iptables,用 luci web ui 配置不更好吗?
    zbinlin
        2
    zbinlin  
       2023-08-20 14:01:19 +08:00   1
    怎么你文中描述的前后矛盾:

    > 除了路由器外,其他设备基本都没速度

    > 笔记本 和 树莓派 连接,这样没任何问题,访问其他设备也是满速

    还有可以试试树莓派跟 OpenWrt-B 看有没有问题
    LittleState
        3
    LittleState  
    OP
       2023-08-20 14:12:06 +08:00
    @zbinlin #2 抱歉,是我的错,问题描述的太混乱了... 可能因为我自己也没理的太清楚

    就是说我的目的是想让路由器 A 、B 使用 ipv6 组网,这样两边局域网内的设备都能互相访问了嘛

    但是就是这个方式连接后,使用 iperf3 测速,除了 A 、B 外,对方的网络内其他设备速度都很慢

    所以我就尝试用身边的笔记本开启 wireguard 连接路由器 A ,结果也是和上面同样的。

    之后就尝试把树莓派作为 peer ,用笔记本连接,也是用 ipv6 ,但是就没有问题了...
    zbinlin
        4
    zbinlin  
       2023-08-20 14:17:14 +08:00   1
    这看明白了。
    那你再试下 树莓派跟 OpenWrt-B 连看有没有问题
    LittleState
        5
    LittleState  
    OP
       2023-08-20 15:13:35 +08:00
    @zbinlin #4 我刚按你说的试了下 OpenWrt-B 连接 树莓派

    然后从 OpenWrt-B 上测试都没问题,速度都满速
    - iperf3 -c 192.168.2.221 (树莓派)
    - iperf3 -c 192.168.2.1 ( Openwrt-A )

    但是从 OpenWrt-B 局域网内的笔记本测试上面的命令,又都是只有几百 KB/s 。

    但是我从树莓派上测试连接对端,都是可以满速...
    - iperf3 -c 192.168.3.1 ( OpenWrt-B )
    - iperf3 -c 192.168.3.230 (笔记本)
    LittleState
        6
    LittleState  
    OP
       2023-08-20 15:16:41 +08:00
    @zbinlin #4 OpenWrt-A 连接 OpenWrt-B 时,我看了两边的路由器,CPU 负载也不高
    zbinlin
        7
    zbinlin  
       2023-08-20 15:47:18 +08:00   1
    你上面的测试是基于 Openwrt A <-> Openwrt B wireguard 隧道来测的吧?
    LittleState
        8
    LittleState  
    OP
       2023-08-20 15:50:14 +08:00
    @zbinlin #7 我在 5 楼回复的那些测试,是 树莓派 <-> Openwrt-B 这样连接的隧道
    zbinlin
        9
    zbinlin  
       2023-08-20 16:01:14 +08:00   1
    你还是基于 Openwrt A <-> Openwrt B wireguard 隧道 来测试,把 mtu 调大点,1340 试试,看有没有变化

    分别测
    树莓派连 Openwrt B
    树莓派连 笔记本
    笔记本连 Openwrt A
    笔记本连 树莓派
    zbinlin
        10
    zbinlin  
       2023-08-20 16:10:13 +08:00   1
    也测试下 iperf3 加参数 --set-mss 900 试试
    LittleState
        11
    LittleState  
    OP
       2023-08-20 16:33:45 +08:00
    好像还是那样子,两边的 mtu 改成了 1340... 不过还是谢谢了,头都大了。

    笔记本连 Openwrt A
    笔记本连 树莓派

    https://sm.ms/image/pugvytqY2CFlmNK

    树莓派连 Openwrt B
    树莓派连 笔记本

    https://sm.ms/image/g86KW2ecrsZzML1
    zbinlin
        12
    zbinlin  
       2023-08-20 16:57:15 +08:00   1
    iperf3 换参数 `--udp` 测下 udp 的看怎样?
    LittleState
        13
    LittleState  
    OP
       2023-08-20 21:10:36 +08:00
    @zbinlin #12 我刚到家里,现在试试啊。使用 --udp 测试 A 、B 路由器的话会报这个错误:`iperf3: error - unable to read from stream socket: Connection refused`

    然后 笔记本 ---> 树莓派 测试结果就是下面这样

    ![image.png]( https://s2.loli.net/2023/08/20/8YQVzJUliZMWgS3.png)
    bobryjosin
        14
    bobryjosin  
       2023-08-21 00:10:06 +08:00   1
    接口的 MTU 是一样的吗,重启一下接口看看?直接用默认的 1420 。
    LittleState
        15
    LittleState  
    OP
       2023-08-21 00:34:20 +08:00
    @bobryjosin #14 是一样的,我刚重启了两边,用默认的 MTU 也还是那样子...

    上面一直就是 OpenWrt-B 用 IPv6 连接的 OpenWrt-A ,但是只要我改成 IPv4 连接就没问题了... 难道是 IPv6 到 IPv4 有损耗吗?
    ysc3839
        16
    ysc3839  
       2023-08-21 01:16:15 +08:00 via Android   1
    WireGuard 接口的 MTU 设置成 1200 甚至更低试试?另外建议抓包看看有没有 ICMP 返回错误
    bobryjosin
        17
    bobryjosin  
       2023-08-21 08:41:05 +08:00 via Android   1
    @LittleState 我之前也是遇到和你一样的问题,mtu 太小导致的,ping 正常但是 ssh http 大包过不去,你看看直接用两台 openwrt 下面的 lan ip 互相用多线程打个流看看,目前我和海外的机器组网也是 ipv6 ,多线程打流没有问题,另外可以把标记由的 postup 语句删了看看?
    LittleState
        18
    LittleState  
    OP
       2023-08-21 09:41:07 +08:00
    @ysc3839 #16

    我试了下改成了 1200 、1000 没有什么变化,我在 OpenWrt-B 上用 tcpdump icmp 好像也没抓到什么错误信息。

    ![image.png]( https://s2.loli.net/2023/08/21/i5I1D28aZHbted9.png)

    现在问题就是,我在两边路由器上用 iperf 测试,它俩互相是正常的,但是访问对方局域网内的其他设备,就不行很慢
    LittleState
        19
    LittleState  
    OP
       2023-08-21 09:47:28 +08:00
    @bobryjosin #17

    是这样测试吗?对了那个 postup 配置是树莓派上的,现在没用树莓派作为 peer ,而是在两台 OpenWrt 路由器上启动的 wg

    左边是 OpenWrt-B ---> OpenWrt-A
    右边是 OpenWrt-B ---> 树莓派

    ![image.png]( https://s2.loli.net/2023/08/21/fq6JFxitdZ2DGEV.png)
    zbinlin
        20
    zbinlin  
       2023-08-21 09:48:00 +08:00
    你直接 ping 下对应的设备看下:

    Openwrt A ping Openwrt B
    树莓派 ping Openwrt B
    树莓派 ping 笔记本
    LittleState
        21
    LittleState  
    OP
       2023-08-21 09:58:52 +08:00
    @zbinlin #20

    好像看起来都挺正常的?

    https://s2.loli.net/2023/08/21/RBEbm4NAt6GjWxo.png
    zbinlin
        22
    zbinlin  
       2023-08-21 10:15:41 +08:00
    @LittleState #21 这看起来没问题。看下 openwrt a/b 上的这些设备信息:

    `ip addr`
    `ip route` 和 `ip -6 route`
    `ip rule` 和 `ip -6 rule`

    openwrt 如果是用最新版的:`nft list ruleset`
    LittleState
        23
    LittleState  
    OP
       2023-08-21 11:18:24 +08:00
    @zbinlin #22 多谢了啊,我把有些公网地址打码了,要是有影响到的话,我重新截图一份

    OpenWrt-A
    - `ip addr`
    https://sm.ms/image/jyAlI6wrLGCbnZK

    - `ip route` 和 `ip -6 route`
    https://sm.ms/image/16M2zuo8Frm9TUA

    - `ip rule` 和 `ip -6 rule`
    https://sm.ms/image/etc1Rd7QHNCSb6I

    OpenWrt-B :
    - `ip addr`
    https://sm.ms/image/pUYuPGFwjyb4Hki

    - `ip route` 和 `ip -6 route`
    https://sm.ms/image/IiPzZ6yTDux1Uh4

    - `ip rule` 和 `ip -6 rule`
    https://sm.ms/image/3YHFrN9d7inCUOI
    zbinlin
        24
    zbinlin  
       2023-08-21 12:05:55 +08:00   1
    看起来都正常,你这问题搞得我都挺感兴趣了,如果方便的,可以 email 联系我远程上去看下 :)
    LittleState
        25
    LittleState  
    OP
       2023-08-21 12:10:22 +08:00
    @zbinlin #24 我给您 outlook 发邮件了
    LittleState
        26
    LittleState  
    OP
       2023-08-22 11:03:42 +08:00
    @bobryjosin #17 话说想问一下,你说的是和海外机器用 ipv6 wg 隧道组网吗,那不会被封吗
    bobryjosin
        27
    bobryjosin  
       2023-08-22 12:24:08 +08:00
    @LittleState 海外除了路由比较烂,现在没有任何审计策略,除了 google ,facebook 一些主流厂商的 ipv6 的地址是直接被阻断的,cloudflare 的 warp ipv6 2606:4700::/32 这段 ip 部分地区 udp 阻断,其他的没有任何限制,wireguard 和 ss 这些非常明显的协议可以随便跑。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3285 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 11:48 PVG 19:48 LAX 04:48 JFK 07:48
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86