我两台路由器使用 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
1423 2023-08-20 13:40:48 +08:00 1
有必要 masquerading 吗?
用 openwrt 了,为什么还手写 iptables,用 luci web ui 配置不更好吗? |
2
zbinlin 2023-08-20 14:01:19 +08:00 1
怎么你文中描述的前后矛盾:
> 除了路由器外,其他设备基本都没速度 > 笔记本 和 树莓派 连接,这样没任何问题,访问其他设备也是满速 还有可以试试树莓派跟 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 1
这看明白了。
那你再试下 树莓派跟 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 1
你上面的测试是基于 Openwrt A <-> Openwrt B wireguard 隧道来测的吧?
|
8
LittleState OP @zbinlin #7 我在 5 楼回复的那些测试,是 树莓派 <-> Openwrt-B 这样连接的隧道
|
9
zbinlin 2023-08-20 16:01:14 +08:00 1
你还是基于 Openwrt A <-> Openwrt B wireguard 隧道 来测试,把 mtu 调大点,1340 试试,看有没有变化
分别测 树莓派连 Openwrt B 树莓派连 笔记本 笔记本连 Openwrt A 笔记本连 树莓派 |
10
zbinlin 2023-08-20 16:10:13 +08:00 1
也测试下 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 1
iperf3 换参数 `--udp` 测下 udp 的看怎样?
|
13
LittleState OP @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) |
14
bobryjosin 2023-08-21 00:10:06 +08:00 1
接口的 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 1
WireGuard 接口的 MTU 设置成 1200 甚至更低试试?另外建议抓包看看有没有 ICMP 返回错误
|
17
bobryjosin 2023-08-21 08:41:05 +08:00 via Android 1
@LittleState 我之前也是遇到和你一样的问题,mtu 太小导致的,ping 正常但是 ssh http 大包过不去,你看看直接用两台 openwrt 下面的 lan ip 互相用多线程打个流看看,目前我和海外的机器组网也是 ipv6 ,多线程打流没有问题,另外可以把标记路由的 postup 语句删了看看?
|
18
LittleState OP @ysc3839 #16
我试了下改成了 1200 、1000 没有什么变化,我在 OpenWrt-B 上用 tcpdump icmp 好像也没抓到什么错误信息。 ![image.png]( https://s2.loli.net/2023/08/21/i5I1D28aZHbted9.png) 现在问题就是,我在两边路由器上用 iperf 测试,它俩互相是正常的,但是访问对方局域网内的其他设备,就不行很慢 |
19
LittleState OP @bobryjosin #17
是这样测试吗?对了那个 postup 配置是树莓派上的,现在没用树莓派作为 peer ,而是在两台 OpenWrt 路由器上启动的 wg 左边是 OpenWrt-B ---> OpenWrt-A 右边是 OpenWrt-B ---> 树莓派 ![image.png]( https://s2.loli.net/2023/08/21/fq6JFxitdZ2DGEV.png) |
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 1
看起来都正常,你这问题搞得我都挺感兴趣了,如果方便的,可以 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 这些非常明显的协议可以随便跑。
|