我想限制来自我的 ubuntu 机器的所有流量进出本地网络 ( eth0
) 或来自或到达我的 VPN ( tun0
)。应该可以在本地网络中连接路由器,但不能不使用 VPN 离开本地网络。
由于我没有使用 iptables 的经验,而且我找不到一些操作方法,所以我尝试了 ufw,但没有成功。
感谢您提供一些提示或代码片段,以便我们能够更接近目标!
答案1
您将需要使用默认操作 DROP 对过滤表的 INPUT 链进行操作,然后为每个接口上的传入数据包设置 ACCEPT 规则 (-i)。为了提高安全性,您还可以强制执行源主机的子网,但下面的规则就足够了。
iptables -t filter -p INPUT DROP
iptables -t filter -A INPUT -i eth0 -j ACCEPT
iptables -t filter -A INPUT -i tun0 -j ACCEPT
iptables -t filter -A INPUT -i lo -j ACCEPT
如果您还想对离开主机的流量执行同样的事情,也可以执行以下操作:
iptables -t filter -p OUTPUT DROP
iptables -t filter -A OUTPUT -o eth0 -j ACCEPT
iptables -t filter -A OUTPUT -o tun0 -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
不过,如果你这样做,你实际上可能没有其他接口。此外,之所以lo
在那里,是因为它是环回接口;如果没有这些规则,环回将不再起作用。
请注意,如果您的主机是路由器,这些规则将不适用于它正在路由的流量(仅适用于它自己生成的流量或发往它而不是通过它的流量)。