记一次Docker服务器iptables排查

问题描述

一台服务器使用 iptables -A INPUT 封禁8080后发现目标端口依然可以访问

排查iptabales发现

-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
直接在preROUTING链被劫持到DOCKER
然后在DOCKER中发现规则
-A DOCKER ! -i br-ae1db1ee7ad7 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 172.24.0.3:80
在DOCKER中直接被DNAT到容器

总结

DOCKER中的端口映射会在PREROUTING中被劫持优先于INPUT,所以在INPUT中的规则可能不起作用,需要在PREROUTING中进行处理