启用eth0后WireGuard握手数据包源/目的IP异常变更致接口失效的问题求助
启用eth0后WireGuard握手数据包源/目的IP异常变更致接口失效的问题求助
各位好,我现在碰到一个棘手的网络问题,想请大家帮忙分析下:
当我把网线插到树莓派5的eth0接口后,WireGuard的回复数据包的源地址和目的地址会被错误修改,直接导致WG接口无法正常建立连接。
先说明下我的设备和网络配置:
- 设备:Raspberry Pi 5
- 网络基础:wlan0负责连接外网(IP:192.168.5.160),所有非本地网络的出站流量默认走wg1 VPN接口(这部分功能目前是正常的)
- eth0配置:静态IP为192.168.6.1,仅用于内网局域网的连接
- WireGuard策略:我给所有入站的WireGuard数据包打上了
0x15的标记,目的是让这些回复流量强制从wlan0接口回源,避免走wg1 VPN绕路
未启用eth0时的正常交互日志
当从外部发起wg0连接请求时,内核日志里的正常握手流程如下:
pi5 kernel: Inbound Connection: IN=wlan0 OUT= MAC= SRC=<WANIP> DST=192.168.5.160 LEN=176 TOS=0x00 PREC=0x00 TTL=63 ID=48888 DF PROTO=UDP SPT=44311 DPT=51820 LEN=156 MARK=0x15 pi5 kernel: Outbound Connection: IN= OUT=lo SRC=192.168.5.160 DST=<WANIP> LEN=120 TOS=0x08 PREC=0x80 TTL=64 ID=2721 PROTO=UDP SPT=51820...
可以看到入站包从wlan0进入,被打上了0x15标记;回复的出站包源地址是wlan0的192.168.5.160,目的是外部发起连接的WAN IP,这时候WG握手正常,接口能正常工作。
启用eth0后的异常现象
但只要我插上eth0的网线,问题就出现了:WireGuard的回复数据包源地址会变成eth0的192.168.6.1,而且出站接口也切换成了eth0,导致外部节点根本收不到回复包,WG握手直接失败,接口完全无法使用。
我初步怀疑是路由表或者策略路由的优先级问题?比如启用eth0后,系统的默认路由选择逻辑覆盖了我基于标记的路由规则?但我明明已经给入站WG包打了标记,并且配置了对应策略让标记0x15的流量走wlan0的路由表...
有没有大佬遇到过类似的问题?或者能给我一些排查方向和可能的解决思路?
备注:内容来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

