我两台路由器使用 ipv4 连接对端时没有任何问题,但是换成 ipv6 后,我在异地使用 iperf3 测试家中的设备,除了路由器外,其他设备基本都没速度...
这是是怎么回事,我把 wg 的 mtu 已经改成了 1280 。 大概的网络环境就是下面这样
然后使用 iperf3 测速就这样
使用的 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 slowman 2023-08-20 13:40:48 +08:00 ![]() 有必要 masquerading 吗? 用 openwrt 了,为什么还手写 iptables,用 luci web ui 配置不更好吗? |
2 zbinlin 2023-08-20 14:01:19 +08:00 ![]() 怎么你文中描述的前后矛盾: > 除了路由器外,其他设备基本都没速度 > 笔记本 和 树莓派 连接,这样没任何问题,访问其他设备也是满速 还有可以试试树莓派跟 OpenWrt-B 看有没有问题 |
![]() | 3 LittleState OP @zbinlin #2 抱歉,是我的错,问题描述的太混乱了... 可能因为我自己也没理的太清楚 就是说我的目的是想让路由器 A 、B 使用 ipv6 组网,这样两边局域网内的设备都能互相访问了嘛 但是就是这个方式连接后,使用 iperf3 测速,除了 A 、B 外,对方的网络内其他设备速度都很慢 所以我就尝试用身边的笔记本开启 wireguard 连接路由器 A ,结果也是和上面同样的。 之后就尝试把树莓派作为 peer ,用笔记本连接,也是用 ipv6 ,但是就没有问题了... |
4 zbinlin 2023-08-20 14:17:14 +08:00 ![]() 这看明白了。 那你再试下 树莓派跟 OpenWrt-B 连看有没有问题 |
5 LittleState OP @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 (笔记本) |
![]() | 6 LittleState OP @zbinlin #4 OpenWrt-A 连接 OpenWrt-B 时,我看了两边的路由器,CPU 负载也不高 |
7 zbinlin 2023-08-20 15:47:18 +08:00 ![]() 你上面的测试是基于 Openwrt A <-> Openwrt B wireguard 隧道来测的吧? |
![]() | 8 LittleState OP @zbinlin #7 我在 5 楼回复的那些测试,是 树莓派 <-> Openwrt-B 这样连接的隧道 |
9 zbinlin 2023-08-20 16:01:14 +08:00 ![]() 你还是基于 Openwrt A <-> Openwrt B wireguard 隧道 来测试,把 mtu 调大点,1340 试试,看有没有变化 分别测 树莓派连 Openwrt B 树莓派连 笔记本 笔记本连 Openwrt A 笔记本连 树莓派 |
10 zbinlin 2023-08-20 16:10:13 +08:00 ![]() 也测试下 iperf3 加参数 --set-mss 900 试试 |
![]() | 11 LittleState OP 好像还是那样子,两边的 mtu 改成了 1340... 不过还是谢谢了,头都大了。 笔记本连 Openwrt A 笔记本连 树莓派 https://sm.ms/image/pugvytqY2CFlmNK 树莓派连 Openwrt B 树莓派连 笔记本 https://sm.ms/image/g86KW2ecrsZzML1 |
12 zbinlin 2023-08-20 16:57:15 +08:00 ![]() iperf3 换参数 `--udp` 测下 udp 的看怎样? |
![]() | 13 LittleState OP @zbinlin #12 我刚到家里,现在试试啊。使用 --udp 测试 A 、B 路由器的话会报这个错误:`iperf3: error - unable to read from stream socket: Connection refused` 然后 笔记本 ---> 树莓派 测试结果就是下面这样 ![]()  |
14 bobryjosin 2023-08-21 00:10:06 +08:00 ![]() 接口的 MTU 是一样的吗,重启一下接口看看?直接用默认的 1420 。 |
![]() | 15 LittleState OP @bobryjosin #14 是一样的,我刚重启了两边,用默认的 MTU 也还是那样子... 上面一直就是 OpenWrt-B 用 IPv6 连接的 OpenWrt-A ,但是只要我改成 IPv4 连接就没问题了... 难道是 IPv6 到 IPv4 有损耗吗? |
![]() | 16 ysc3839 2023-08-21 01:16:15 +08:00 via Android ![]() WireGuard 接口的 MTU 设置成 1200 甚至更低试试?另外建议抓包看看有没有 ICMP 返回错误 |
17 bobryjosin 2023-08-21 08:41:05 +08:00 via Android ![]() @LittleState 我之前也是遇到和你一样的问题,mtu 太小导致的,ping 正常但是 ssh http 大包过不去,你看看直接用两台 openwrt 下面的 lan ip 互相用多线程打个流看看,目前我和海外的机器组网也是 ipv6 ,多线程打流没有问题,另外可以把标记由的 postup 语句删了看看? |
![]() | 18 LittleState OP @ysc3839 #16 我试了下改成了 1200 、1000 没有什么变化,我在 OpenWrt-B 上用 tcpdump icmp 好像也没抓到什么错误信息。  现在问题就是,我在两边路由器上用 iperf 测试,它俩互相是正常的,但是访问对方局域网内的其他设备,就不行很慢 |
![]() | 19 LittleState OP @bobryjosin #17 是这样测试吗?对了那个 postup 配置是树莓派上的,现在没用树莓派作为 peer ,而是在两台 OpenWrt 路由器上启动的 wg 左边是 OpenWrt-B ---> OpenWrt-A 右边是 OpenWrt-B ---> 树莓派  |
20 zbinlin 2023-08-21 09:48:00 +08:00 你直接 ping 下对应的设备看下: Openwrt A ping Openwrt B 树莓派 ping Openwrt B 树莓派 ping 笔记本 |
![]() | 21 LittleState OP |
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` |
![]() | 23 LittleState OP @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 |
24 zbinlin 2023-08-21 12:05:55 +08:00 ![]() 看起来都正常,你这问题搞得我都挺感兴趣了,如果方便的,可以 email 联系我远程上去看下 :) |
![]() | 25 LittleState OP @zbinlin #24 我给您 outlook 发邮件了 |
![]() | 26 LittleState OP @bobryjosin #17 话说想问一下,你说的是和海外机器用 ipv6 wg 隧道组网吗,那不会被封吗 |
27 bobryjosin 2023-08-22 12:24:08 +08:00 @LittleState 海外除了路由比较烂,现在没有任何审计策略,除了 google ,facebook 一些主流厂商的 ipv6 的地址是直接被阻断的,cloudflare 的 warp ipv6 2606:4700::/32 这段 ip 部分地区 udp 阻断,其他的没有任何限制,wireguard 和 ss 这些非常明显的协议可以随便跑。 |