![将所有出站连接限制到特定接口,如果不可用则阻止](https://linux22.com/image/741838/%E5%B0%86%E6%89%80%E6%9C%89%E5%87%BA%E7%AB%99%E8%BF%9E%E6%8E%A5%E9%99%90%E5%88%B6%E5%88%B0%E7%89%B9%E5%AE%9A%E6%8E%A5%E5%8F%A3%EF%BC%8C%E5%A6%82%E6%9E%9C%E4%B8%8D%E5%8F%AF%E7%94%A8%E5%88%99%E9%98%BB%E6%AD%A2.png)
我在虚拟机中运行 Centos 7(我不认为这很重要,但就上下文而言......)
在虚拟机中,我正在运行软件来建立隧道。我已经可以接受来自主机的连接,但我想强制所有出站流量通过隧道。
我如何允许现有连接的返回数据包,同时确保除非通过 tun0,否则不会从框中建立新的连接?
我看过这个问题iptables 阻止所有出站连接但它看起来有点蛮力...我一直在使用,firewall-cmd
并且输出iptables -L -n -v
很冗长。
相反,使用特定接口进行出站连接(Ubuntu 9.04),我看不出如何将它应用到centos。
我如何才能可靠地确保所有出站流量都通过 tun0 建立或根本不建立?
答案1
这将有效阻止除 tun0 之外的任何传出(IPv4)流量。
iptables -F OUTPUT
iptables -A OUTPUT -o tun0 -j ACCEPT
iptables -P OUTPUT DROP
请注意,这将阻止任何出站流量任何除 tun0 之外的接口,其中包括 DHCP 流量、已建立的 SSH 隧道或来自已建立隧道的出站数据包。
这可以类似地应用于使用 的 IPv6 ip6tables
。