Loading... > 从CentOS 官方发行了CentOS 8 后,安装了几个工具。其中Docker安装后,Docker内容器,在防火墙关闭状态无法访问、firewalld 防火墙端口规则开放依然无法访问。处理下,作如下记录。 ## 检查iptables 接下来会清除iptables现有规则,如果你一直使用的是 `firewalld`来管理你的防火墙,就没必要查看现有的iptbales规则了。 ``` iptabels -L ``` ## 关闭firewalld和docker服务 ``` systemctl stop firewalld docker ``` ## 清除现有防火墙规则 由于docker启动容器时会在iptables中添加规则,我们先把原来 ``` iptables -P INPUT ACCEPT ``` **先放行规则,非常重要!** 否则22端口也就是你的SSH服务可能再也连不上了。 清除所有规则 ``` iptables -F ``` ## 开启端口转发 ### 1、开启内核IP地址转发功能 首先查看内核是否开启IP地址转发功能 ``` cat /proc/sys/net/ipv4/ip_forward ``` 返回为1已开启,返回0则需要手动开一下。 复制到终端上!以root用户身份执行 ``` echo "1" >> /etc/sysctl.conf ``` 使更改立即生效 ``` sysctl -p ``` ### 2、防火墙放行IP地址转发 现在将firewalld服务启动 ``` systemctl start firewalld ``` 默认情况下 `firewalld`会禁止转发流量,可以执行 `firewall-cmd --query-masquerade`查看状态,应该是no,请执行下面的命令开启转发。 永久开启IP地址转发 ``` firewall-cmd --add-masquerade --permanent ``` 重载防火墙规则,使之生效 ``` firewall-cmd --reload ``` ## 启动Docker服务 现在可以启动docker服务检查容器网络是否正常。 ``` systemctl start docker ``` ``` docker run -it --rm centos:latest ping baidu.com ``` 额外要注意的一点是,如果你防火墙屏蔽了 `icmp`的 `echo-request`请求,也就是我们说的禁止Ping。那么在容器中Ping别人及其的时候也会被主机防火墙拦截下来,Ping不通的哦。如果Ping不通可以使用 `curl www.baidu.com`看看能不能访问得到百度页面,这样检测。 ♐End Thanks! 最后修改:2020 年 09 月 29 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏