解决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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)