今天,同事让我添加一台Demo演示代理出去给北京同事用,结果发现配置高端口老是失败,经过一番查证,发现是SELinux为系统里的所有端口进行了分配,缺省条件下http服务是只支持默认配置的几个端口的,通过semanage工具可以查询、配置。

  1. 检查firewalld防火墙配置
  2. 检查semanage端口配置

Firewalld配置

防火墙控制命令

systemctl status firewalld
systemctl start firewalld
systemctl restart firewalld
systemctl enable firewalld
systemctl stop firewalld
systemctl disable firewalld

开放或限制端口

  1. 开放端口

    # 开启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
    
  2. 限制端口

    # 关掉刚22端口
    firewall-cmd --zone=public --remove-port=22/tcp --permanent
    
  3. 批量开放或限制端口

    # 批量开放端口,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
    

参考