我正在尝试编写脚本来在 Linux 机器上的两个接口 wlan0 和 eth0 之间切换。
我的主要参考是: https://askubuntu.com/questions/338100/forwarding-traffic- Between-2-interfaces
-A FORWARD -i eth0 -o wlan0 -j ACCEPT
我的问题是,执行上述命令后,原始数据包是否仍然流经eth0?如果是,如何阻止它们并只让它们流过 wlan0?
当我想切换回 eth0(并将 wlan0 转发到 eth0)时,该怎么办?
最后,如何放弃所有规则并恢复正常?
谢谢。
答案1
如果您想通过不同的接口路由出去,请忽略防火墙(您找到的解决方案是针对完全不同的要求)。相反,请查看路由表。
该命令netstat -rn
将向您显示接受给定目的地的接口。该命令route
可用于修改路由表,包括定义流量的默认网关。
这是路由表的示例
netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.2.254 0.0.0.0 UG 0 0 0 eth1
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
224.0.0.0 0.0.0.0 240.0.0.0 U 0 0 0 eth1
这表明 LAN 子网 192.168.1.0/24 的流量将使用eth0
,并且 192.168.2.0/24 将使用eth1
。所有其他流量将使用“默认网关”(目标 0.0.0.0),即eth1
。您的界面可以轻松地是eth0
和wlan0
;这并不重要。
将默认网关从 切换eth1
为eth0
,并假设该系统的本地 IP 地址为 192.168.1.254eth1
和 192.168.2.254 eth0
,
route delete default gw 192.168.2.254
route add default gw 192.168.1.254