ubuntu16.04下docker和ufw防火墙冲突的解决方法

来源:赵克立博客 分类: Docker 标签:Docker发布时间:2019-12-07 02:13:38最后更新:2019-12-24 14:04:07浏览:1751
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2019-12-24 14:04:07
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章

前言

注意:目前还有一个未解决的问题,容器里面取不到外网的ip地址,解决方法肯定是有,需要对docker网络这一块特别了解

冲突的原因这里不细说啦,可以自己去网上查找,这里只记录遇到的问题和解决方法,服务器环境如下

  • Ubuntu 16.04.6 LTS 

  • docker 19.03.5

  • redis 6379

  • phpmyadmin 8080

部署好后使用ufw做商品防护,发现不管怎么设置上面那些端口都能访问得到,

解决方法

打开 /etc/docker/daemon.json 这个文件添加下面配置项

{
"iptables": false
}

加上后会影响容器中的网络访问,比如容器1访问容器2,容器中访问外网等.会出问题,需要添加路由转发来解决.

启用封包转发

ufw default allow routed

打开 etc/ufw/before.rules 在 *filter之前添加下面规则 

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING ! -o dnmp_default -s 172.18.0.0/16 -j MASQUERADE
COMMIT

1912231577097016435767.png

注意里面的 dnmp_default 是你的网桥的名字

里面的ip段可以用下面命令查询 

docker network inspect dnmp_default | grep Subnet

禁用并启用ufw

ufw disable
ufw enable

如果没有生效,重启服务器就可以啦。

ufw配置端口

先设置成默认

默认外部不让访问,内部可以访问

 ufw default deny incoming
 ufw default allow outgoing

允许http/https/ssh

ufw allow http
ufw allow https
ufw allow ssh

允许指定ip访问

ufw allow from 192.168.1.1

允许指定网段连接

ufw allow from 10.10.10.0/24

允许指定ip连接到指定的端口

这里的ip可以改成一个网段

ufw allow from 10.10.10.10 to any port 22



微信号:kelicom QQ群:215861553 紧急求助须知
Win32/PHP/JS/Android/Python