Linux路由配置求助:有线LAN网段无法访问Mesh无线客户端
兄弟,我来帮你捋捋这个问题!你的情况我大概摸清楚了——之前一直用无线AP模式,现在为了Mesh功能不得不改成路由模式,结果搞出双DHCP不说,还导致192.168.2.x的有线设备访问不了192.168.3.x的无线客户端。你加了路由但没效果,大概率是漏了Mesh路由器那边的关键配置,还有可能是Linux路由或防火墙的小细节没处理好。
下面给你一步步排查解决:
第一步:先把Linux上的路由修正准确
你之前写的ip route add 192.168.3.0/24 dev eth0 via 192.168.2.2可能存在接口名错误的问题。先跑ip addr确认你的NIC2对应的接口名(比如是eth1、enp0s3之类的),然后把命令里的dev eth0换成正确的接口名。
举个例子,如果NIC2的接口名是eth1,IP是192.168.2.1,那正确的命令应该是:ip route add 192.168.3.0/24 via 192.168.2.2 dev eth1执行完后用
ip route show确认这条路由已经成功添加。第二步:给Mesh路由器加静态路由,关闭双重NAT
这才是核心问题!现在Mesh路由器是路由模式,它默认会把无线网段(192.168.3.x)和WAN口(192.168.2.2)隔离开,而且大概率开启了NAT,把无线客户端的流量源地址转换成自己的WAN口IP。这样一来,192.168.2.x的设备访问192.168.3.x时,Mesh路由器要么不知道该把回复包发回哪里,要么直接拦截了请求。
你需要登录Mesh路由器的管理界面做两件事:- 找到NAT设置选项,把NAT功能关闭(如果支持的话)——你的Linux盒子已经在做NAT了,双重NAT会彻底打乱网络逻辑。
- 找到静态路由选项,添加一条规则:目标网段填
192.168.2.0/24,网关填你Linux盒子NIC2的IP(比如192.168.2.1),子网掩码填255.255.255.0。这样Mesh路由器就知道,要去192.168.2.x网段的流量,得转发给Linux的NIC2。
第三步:检查Linux防火墙是否拦截了跨网段流量
很多时候防火墙会偷偷把跨网段的转发流量挡掉。你可以先临时关闭防火墙测试(比如systemctl stop firewalld或者iptables -F),如果此时能正常访问,就说明是防火墙的问题。
要永久放行的话,给iptables添加两条规则:iptables -A FORWARD -s 192.168.2.0/24 -d 192.168.3.0/24 -j ACCEPT iptables -A FORWARD -s 192.168.3.0/24 -d 192.168.2.0/24 -j ACCEPT记得保存iptables规则(比如
iptables-save > /etc/iptables/rules.v4),避免重启后失效。最后测试连通性
先在Linux上ping一个无线客户端的IP,比如ping 192.168.3.100,如果能通就搞定了。要是还不通,用traceroute 192.168.3.100看看数据包走到哪一步停了:如果停在192.168.2.2,那就是Mesh路由器的静态路由没设置对;如果停在Linux自己,那就是路由或防火墙的问题还没解决。
备注:内容来源于stack exchange,提问作者jws




