使用 iptables 阻止来自 wlan0 的流量通过 eth0 路由到互联网

使用 iptables 阻止来自 wlan0 的流量通过 eth0 路由到互联网

我需要限制 Debian 机器上的流量,例如使用 IP 表。具体来说,服务器有 3 个主要网络接口:eth0、wlan0 和 tun0。

eth0 是机器连接到互联网的普通以太网连接 wlan0 是 wifi 热点,即其他设备通过此接口连接到机器 tun0 是一个 IPSec VPN,它“通过”eth0 连接到外部 VPN 服务器 我现在需要限制通过 wifi(即通过 wlan0)连接到机器的设备的所有流量访问互联网。不幸的是,外部 VPN 服务器没有固定的 IP 地址。

因此,我的计划是只允许来自 wlan0 的流量转发到 tun0,而绝不转发到 eth0。据我所知,这会导致所有未通过 VPN 连接路由的流量被丢弃,并且无法访问互联网。同时,服务器本身可以正常访问互联网。

这是可能的吗?或者这会首先干扰 VPN 连接的建立吗?

我的想法有点像使用 iptables:

iptables -A OUTPUT -j DROP -i wlan0 -o eth0 -p all
iptables -A INPUT -j DROP -i eth0 -o wlan0 -p all

我还考虑过以某种方式指定路由,即来自 wlan0 的流量只能通过 tun0 转发,并且不存在其他选项。

哪种做法更加合理?

答案1

总结一下我在这里取得成功所做的事情:

我按照@Tom_Yan的建议将相应的 REJECT 规则添加到 FORWARD 链中:

sudo iptables -I FORWARD -i wlan0 -o eth0 -j REJECT
sudo iptables -I FORWARD -i eth0 -o wlan0 -j REJECT
sudo iptables-save

从而有效地切断从 wifi 网络到“正常” eth0 接口的所有流量(反之亦然)。

这已经奏效了。如果 VPN 断线,任何 wifi 客户端都无法以任何形式访问互联网。一旦重新建立 VPN 连接,这些客户端就可以再次使用互联网。任务成功。

相关内容