ubuntu16.04下docker和ufw防火墙冲突的解决方法
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。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
注意里面的 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