使用 iptables 阻止 docker 的传出连接,同时允许 Debian 上的某些 IP

使用 iptables 阻止 docker 的传出连接,同时允许 Debian 上的某些 IP

我试图阻止我的 docker 容器的所有传出连接,同时仍允许到特定 IP 和端口的传出流量。但是,当我阻止所有传出端口时,所有传入连接也会被阻止。

以下是我现在所拥有的,它应该可以正常工作。阻止所有 http/https 流量,同时允许某些 IP

iptables -I DOCKER-USER -i eth0 -j RETURN
iptables -I DOCKER-USER -o eth0 -j RETURN

iptables -I DOCKER-USER -i eth0 -p tcp -m multiport --dports http,https -j DROP
iptables -I DOCKER-USER -o eth0 -p tcp -m multiport --dports http,https -j DROP
 
iptables -I DOCKER-USER -p tcp -i eth0 --dport https -s xxx.xxx.xxx.xxx -j RETURN #Allow incoming HTTPS traffic
iptables -I DOCKER-USER -p tcp -o eth0 --dport https -d xxx.xxx.xxx.xxx -m state --state ESTABLISHED -j RETURN #Allow outgoing ESTABLISHED HTTPS traffic

iptables -I DOCKER-USER -p tcp -o eth0 -d yyy.yyy.yyy.yyy --dport https -j RETURN #Allow outgoing HTTPS for this IP

当我尝试使用如下规则阻止所有传出端口时,出现了问题: iptables -I DOCKER-USER -o eth0 -p tcp -m multiport --dports 0:65535 -j DROP 使用此规则,所有传入和传出连接都将被丢弃。

如果我阻止端口 0 到 40000 左右,它就会起作用。通过检查,netstat -p我可以看到 443 上的所有传入连接都被转发了?到 40000 范围左右的端口。

本服务器没有局域网。eth0上的ip与外部公网IP相同。

如何阻止所有传出连接而不阻止传入连接?

相关内容