我正在尝试阻止来自 iptables 的所有传出流量,用于 docker 的接口 docker0。但我想打开几个域的访问权限:
我怎样才能做到这一点?
我试过了:
iptables -I OUTPUT -o docker0 -j DROP
iptables -I DOCKER -i docker0 -p udp --dport 53 -j ACCEPT
iptables -I DOCKER -i docker0 -p tcp -d mydomain.com --dport 80 -j ACCEPT
iptables -I DOCKER -i docker0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
这是不可能的。
iptables
控制 Netfilter,它是一个 IP 数据包过滤器(防火墙),作用于 OSI 级别 3 和 4。DNS 域名比这更高级别(并且有些正交)。您可以使用 Netfilter控制对某些IP 地址(L3) 和TCP/UDP 端口(L4) 的访问。
如果您想控制对网站的访问,您有以下选项:
iptables
当你给它一个域名时,AFAIK本身就是这样做的;它在 Netfilter 中配置的东西是该名称的解析 IP 地址。当该域的所有者决定更改 IP 地址时,您的规则将不再适用。如果在该服务器上托管了多个具有此 IP 地址的网站(即,有一个托管多个名称的虚拟主机),您将完全允许它们或完全禁用它们。这就是您现在似乎正在做的事情;