如何仅允许路由到特定接口上的 IP 范围?

如何仅允许路由到特定接口上的 IP 范围?

我的设备(Raspberry Pi,Raspbian GNU/Linux 10(buster))上有两个接口eth0192.168.10.x)和wlan0( )。172.16.30.x

两个网络都可以访问互联网,但我希望我的设备仅使用eth0任何 IP 范围除了172.16.30.x只能通过 的范围wlan0

(为什么?我正尝试将 IoT WiFi 网络上的消息与我的“安全”消息分开 - 请不要建议路由器解决方案,因为由于其他原因这是不可能的。)

所以

172.16.30.x      -->  wlan0
everything else  -->  eth0

我还希望更改在重启后仍然有效。

我以为我应该使用该route命令,但却无法理解它。

我尝试了以下操作ufw,它会阻止接口上的所有数据包(好吧,我正在测试pingwlan0

sudo ufw route allow out on wlan0 to 172.16.30.0/24
sudo ufw deny out on wlan0

有人可以帮忙吗?

编辑

我的路由表(ip route show)是

default via 192.168.10.1 dev eth0 src 192.168.10.50 metric 202
default via 172.16.30.1 dev wlan0 proto dhcp src 172.16.30.103 metric 303
169.254.0.0/16 dev vethd1130f6 scope link src 169.254.204.146 metric 208
172.16.30.0/24 dev wlan0 proto dhcp scope link src 172.16.30.103 metric 303
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
172.19.0.0/16 dev br-97b0ae2f260f7 proto kernel scope link src 172.19.0.1
172.20.0.0/16 dev br-17f0570004a4 proto kernel scope link src 172.20.0.1 linkdown
192.168.10.0/24 dev eth0 proto dhcp scope link src 192.168.10.50 metric 202

那里有很多额外的 Docker 网络。

答案1

假设172.16.30.0/24是你的 WiFi 网络的子网,网关是172.16.30.1,你可以简单地删除接口的默认网关,例如

sudo ip route delete default via 172.16.30.1 dev wlan0

如果172.16.30.0/24位于另一个子网,并且您的 WiFi 例如192.168.1.0/24使用 GW 192.168.1.1,则需要删除默认网关并添加静态路由:

sudo ip route delete default via 192.168.1.1 dev wlan0
sudo ip route add 172.16.30.0/24 via 192.168.1.1 dev wlan0

不要尝试仅通过玩弄防火墙规则来做到这一点:您最终会遇到这样的情况:计算机仍然尝试使用该路由,但它只是失败了,而没有尝试使用其他接口。

相关内容