docker -p 时iptables无效问题

2,338 阅读1分钟

有点标题党嫌疑,本质上是chain链顺序问题

问题复现

$ docker run -d -p 11111:80 nginx:alpine
$ iptables -A INPUT -p tcp --dport 11111 -j DROP
$ curl -I http://localhost:11111

HTTP/1.1 200 OK
Server: nginx/1.15.1
Date: Fri, 07 Sep 2018 09:12:59 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Fri, 06 Jul 2018 16:50:07 GMT
Connection: keep-alive
ETag: "5b3f9dbf-264"
Accept-Ranges: bytes

如果各位大佬跟我一样,对linux基础知识不牢固,对iptables仅仅停留在baidu阶段,会很纠结

$ iptables -L INPUT -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:11111

命名已经添加了DROP,也已经生效了,咋就是不好使呢?

通过翻查docker文档Docker and iptables发现,应该使用

iptables -I DOCKER-USER -p tcp --dport 11111 -j DROP 

具体知识请自行百度