解决docker和ufw冲突,不用禁用 iptables 来解决 UFW 不生效问题.

查看本机dokcer ip

ip a s |grep inet 

   inet 172.20.0.1/16 brd 172.20.255.255 scope global br-6fcdfc299f7a
    inet6 fe80::42:35ff:fe09:c91d/64 scope link 
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0

修改 UFW 的配置文件 /etc/ufw/after.rules,在最后添加上如下规则:

*filter
:ufw-user-forward - [0:0]
:DOCKER-USER - [0:0]
-A DOCKER-USER -j RETURN -s 172.17.0.1/16
-A DOCKER-USER -j RETURN -s 172.20.0.1/16

-A DOCKER-USER -j ufw-user-forward

-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 172.17.0.1/16
-A DOCKER-USER -j DROP -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 172.20.0.1/16
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 172.17.0.0/16
-A DOCKER-USER -j DROP -p udp -m udp --dport 0:32767 -d 172.26.0.0/16

-A DOCKER-USER -j RETURN
COMMIT

注:
由于某些未知原因,重启 UFW 之后规则也无法生效,需重启服务器解决。

如果希望允许外部网络访问 Docker 容器提供的服务,比如有一个容器的服务端口是 80。那就可以用以下命令来允许外部网络访问这个服务:

ufw route allow proto tcp from any to any port 80

开放本机端口正常使用 ufw allow 命令即可.
如 开放本机22端口
ufw allow 22

REF:
https://chaifeng.com/to-fix-ufw-and-docker-security-flaw-without-disabling-iptables

posted @   lvusyy  阅读(2384)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
点击右上角即可分享
微信分享提示