Loading... 首先,运行的容器应用与远程访问之间的关系,如下图: ![2024-08-09T00:45:45.png][1] 容器运行后,会通过ports命令将自身端口通过docker-proxy操作netfilter实现端口映射。 如果防火墙开启,且没有放行策略,也就无法访问。 需要将防火墙增加策略或者直接关闭。 ``` # 检查当前防火墙状态 systemctl status firewalld # 关闭防火墙并禁用开机启动 systemctl stop firewalld systemctl disable firewalld # 再次检查防火墙状态 systemctl status firewalld ``` 其次,Linux防火墙中的几个关键部件的关系。 Linux防火墙在内核层面表现为netfilter模块,该模块在TCP/IP协议转运行过程中增加部分钩子实现对数据包的处理功能。 iptables是一个命令,用于用户在shell环境下调用netfilter模块操作防火墙规则增删改查。 ufw/firewalld,是另外多种操作netfilter方式的软件,并且通过systemd注册为系统服务。 再次,实现容器端口从远端访问还有另外一种方式,通过bt panel面板,或者nginx等反向代理进行。这个时候牵扯到路由转发,需要打开系统转发内核参数。 ![2024-08-09T00:54:25.png][2] ``` # 修改/etc/sysctl.conf文件 ,增加如下内容 net.ipv4.ip_forward=1 # 使用sysctl命令生效配置 sysctl -p # 检查是否生效 cat /proc/sys/net/ipv4/ip_forward ``` 还有一个selinux的问题。在使用过程中,一般会在云主机或者裸金属机器安装完系统后进行初始化配置,并及时将selinux禁用掉。如果开启selinux,可能会出现权限等异常问题。 ``` # 检查当前状态 getenforce # 临时关闭selinux setenforce 0 # 设置永久关闭selinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config ``` [1]: https://www.sddts.cn/usr/uploads/2024/08/3204009622.png [2]: https://www.sddts.cn/usr/uploads/2024/08/2557446174.png 最后修改:2024 年 08 月 09 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏