我试图阻止我的 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相同。
如何阻止所有传出连接而不阻止传入连接?