我正在使用 UFW 来设置防火墙规则。
但是docker一直在iptables中覆盖它们,打开所有从容器映射到主机的端口。
我只想从外部访问 Docker 容器中的两个端口,但阻止访问其他 Docker 容器端口,并且只允许本地主机访问它们(在 ssh 隧道之后)。
除了 iptables=false 之外还有其他解决方案吗?
答案1
简单的答案是跳过任何 iptables 更改,并将您需要从本地主机访问的端口发布到仅环回接口。例如
docker run -p 127.0.0.1:2222:22 -d your_ssh_image
这只会将端口 2222 发布到 127.0.0.1 接口,而不是所有接口(0.0.0.0)。
如果你确实需要以影响 docker 容器的方式修改 iptables 规则,请使用该DOCKER-USER
表,如下由 docker 记录,例如:
iptables -I DOCKER-USER -p tcp -m tcp --dport 2222 ! -s 192.168.1.1 -j DROP