被测试的应用部署在docker容器里,只主机上iptables drop某个ip后,此ip依然可以访问容器里的应用,容器里ping ip也可以ping通。所以需要容器里安装iptables并做响应设置。

这个过程中遇到的问题和解决方法如下:

1. iptables安装成功之后,iptables --help可以。但iptables -L -n报Permission denied

docker iptables策开放端口 docker iptables配置_解决方法

 

 这是因为docker run 的时候没有使用 --privileged。可以重现run这个容器,也可以带--privileged重新exec进入容器

docker exec -it --privileged 容器id /bin/bash

(我不想重新run, 尝试了网上说的修改容器配置文件hostconfig.json,但不管用,restart 容器"Privileged":就又被置为false了,(试了拷贝到其他地方再考回来什么的都不行))

再iptables -L -n就可以了

3. 在容器里,iptables -I INPUT -p all -s xxx.xx.xx.xxx -j DROP 就可以了

再ping就ping不通了

4. 之后想不屏蔽,先使用iptables -L -n --line-numbers 查看对应规则的number

再 iptables -D INPUT number

docker iptables策开放端口 docker iptables配置_html_02

 

 

docker iptables策开放端口 docker iptables配置_iptables_03

 

 

docker iptables策开放端口 docker iptables配置_解决方法_04

 

 

docker iptables策开放端口 docker iptables配置_解决方法_05

 

 

docker iptables策开放端口 docker iptables配置_docker_06