mrw*_*ter 5 iptables firewall networking ufw
我在使用以下命令运行的 docker 实例中运行了一个 web 服务:
sudo docker run -d -p 4040:4040 ....
Run Code Online (Sandbox Code Playgroud)
我的 UFW 规则如下所示:
~ sudo ufw status
Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
4040 DENY Anywhere
22 ALLOW Anywhere (v6)
4040 DENY Anywhere (v6)
Run Code Online (Sandbox Code Playgroud)
当我通过它的IP直接访问盒子时,我可以访问端口4040。为什么ufw规则没有阻止它?
注意:作为docker安装的一部分,我改变了
DEFAULT_FORWARD_POLICY="DROP" 到 DEFAULT_FORWARD_POLICY="ACCEPT"
在 /etc/default/ufw 根据此处的 dockers 说明(http://docs.docker.io/en/latest/installation/ubuntulinux/#docker-and-ufw)
小智 3
我遇到了同样的问题,并通过使用 IPTABLES 解决了它。
仅允许来自源 ip xxx.xxx.xxx.xxx 的 3306 的示例:
将与我们的 ip 匹配的源的接受添加到 FORWARD 链的第 1 行
iptables -I FORWARD 1 -p tcp -i eth0 -s xxx.xxx.xxx.xxx --dport 3306 -j ACCEPT
删除该端口的 FORWARD 链上的所有其他连接
iptables -I FORWARD 2 -p tcp -i eth0 --dport 3306 -j DROP
使用行号(1 和 2)强制将规则添加到 docker 创建的规则之上,例如:
-A 转发 -d 0.0.0.0/32 !-i docker0 -o docker0 -p tcp -m tcp --dport 3306 -j 接受
小智 0
尝试使用特定 IP 运行容器。
docker run -d -p 127.0.0.1:4040:4040 ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3334 次 |
| 最近记录: |