我有一个docker-compose部署与一个容器,例如:
version: "3"
services:
web:
image: nginx
ports:
- "8080:80"
Docker版本为20.10.9,操作系统为CentOS 7.
我需要阻止外部IP地址访问8080端口,除非指定。
但是iptables -A INPUT -p tcp -m tcp --dport 8080 --src ! <IP whitelist> -j DROP
不适合docker容器。
在一个有public
区域防火墙设置的系统中,Docker容器没有应用。
docker - user链不需要工作,因为我应该使用--dport 80
(docker容器的内部端口)而不是dport 8080
。但是我需要使用外部端口,因为内部端口80可以有很多容器,但是外部端口是唯一的。
我用
当我想要阻塞容器端口时,我改变DOCKER-USER链。
据我所知:到docker的流量从不触及iptables中的INPUT链。
所以我会尝试:
iptables -A DOCKER-USER -i <INCOMING-INTERFACE> -p tcp -m tcp --dport 8080 --src ! <IP whitelist> -j DROP
更多信息:https://docs.docker.com/network/iptables/