今天,同事让我添加一台Demo演示代理出去给北京同事用,结果发现配置高端口老是失败,经过一番查证,发现是SELinux为系统里的所有端口进行了分配,缺省条件下http服务是只支持默认配置的几个端口的,通过semanage
工具可以查询、配置。
- 检查
firewalld
防火墙配置 - 检查
semanage
端口配置
Firewalld
配置
防火墙控制命令
systemctl status firewalld
systemctl start firewalld
systemctl restart firewalld
systemctl enable firewalld
systemctl stop firewalld
systemctl disable firewalld
开放或限制端口
-
开放端口
# 开启22端口 firewall-cmd --zone=public --add-port=22/tcp --permanent # 查看是否生效 firewall-cmd --zone=public --query-port=22/tcp # 重载设置,使生效 firewall-cmd --reload # 查看打开的所有端口 firewall-cmd --zone=public --list-ports
-
限制端口
# 关掉刚22端口 firewall-cmd --zone=public --remove-port=22/tcp --permanent
-
批量开放或限制端口
# 批量开放端口,100-500之间的端口 firewall-cmd --zone=public --add-port=100-500/tcp --permanent # 批量限制端口 firewall-cmd --zone=public --remove-port=100-500/tcp --permanent
Semanage
配置
-
查看通信规则
semanage port -l
-
添加通行规则(参数 -a)
semanage port -a -t http_port_t -p tcp 8888 semanage port -a -t http_port_t -p tcp 8888-9999
-
删除通行规则(参数 -d)
semanage port -d -t http_port_t -p tcp 9090 semanage port -d -t http_port_t -p tcp 8888-9999
参考
- Linux系统通过firewall限制或开放IP及端口
- SELinux is preventing /usr/sbin/httpd from name_bind access on the tcp_socket port XXX
- CentOS7使用firewall-cmd打开关闭防火墙与端口
- nginx配置二级目录,反向代理不同ip+端口