Home Linux如何开放端口
Post
Cancel

Linux如何开放端口

在CentOS 7或RHEL 7或Fedora中防火墙由firewalld来管理,如果要添加范围例外端口,如1000-2000语法命令如下:启用区域端口和协议组合

1
firewall-cmd [--zone=<zone>] --add-port=<port>[-<port>]/<protocol> [--timeout=<s>]

参数解释

1
2
3
4
--zone  # 作用域
--add-port=80/tcp  # 添加端口,格式为:端口/通讯协议
--remove-port=80/tcp  # 移除端口,格式为:端口/通讯协议
--permanent  # 永久生效,没有此参数重启后失效

此举将启用端口和协议的组合。作用域<zone>可以通过命令firewall-cmd --get-active-zones查看,端口可以是一个单独的端口<port>或者是一个端口范围<port>-<port>。协议可以是tcpudp,实际命令如下:

  • 添加

    1
    2
    3
    
    firewall-cmd --zone=public --add-port=80/tcp --permanent 
    firewall-cmd --zone=public --add-port=1000-2000/tcp --permanent
    (--permanent永久生效,没有此参数重启后失效) 
    
  • 重新载入

    1
    
    firewall-cmd --reload
    
  • 查看

    1
    
    firewall-cmd --zone=public --query-port=80/tcp
    
  • 删除

    1
    
    firewall-cmd --zone=public --remove-port=80/tcp --permanent
    
  • 其他命令

    1
    2
    
    firewall-cmd --list-ports # 查看已经开放的端口
    firewall-cmd --state # 查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
    

当然你可以还原传统的管理方式

  • 关闭firewalld防火墙

    1
    2
    
    systemctl stop firewalld
    systemctl mask firewalld
    
  • 检查是否安装了iptables

    1
    
    service iptables status 
    
  • 安装iptables及iptables-services

    1
    2
    
    yum install -y iptables 
    yum install iptables-services
    
  • 设置防火墙开机启动

    1
    2
    
    systemctl enable iptables
    systemctl enable iptables.service 
    
  • 开启防火墙服务

    1
    
    systemctl start iptables.service
    
  • 修改/etc/sysconfig/iptables,增加如下一行

    1
    
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
    
  • 重启防火墙使配置生效

    1
    
    systemctl restart iptables.service 
    

其他命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# iptable
systemctl stop iptables
systemctl start iptables
systemctl restart iptables
systemctl reload iptables

# firewalld
systemctl status firewalld  # 查看防火墙状态
systemctl start firewalld  # 开启防火墙
systemctl stop firewalld  # 关闭防火墙
firewall-cmd --permanent --zone=public --add-port=27017/tcp --permanent  # 开启指定端口
firewall-cmd --zone=public --remove-port=27017/tcp --permanent  # 关闭指定端口
firewall-cmd --permanent --zone=public --add-port=27017-30000/tcp --permanent  # 开启指定范围端口
firewall-cmd --permanent --zone=public --add-port=1-65535/tcp --permanent  # 开启所有端口
firewall-cmd --zone=public --remove-port=27017-30000/tcp --permanent  # 关闭指定范围端口
firewall-cmd --permanent --query-port=27017/tcp  # 查看端口是否开放
firewall-cmd --reload  # 重启防火墙
firewall-cmd --list-ports  # 查看已经开放的端口
iptables -L -n  # 查看规则,这个命令是和iptables的相同的
man firewall-cmd  # 查看帮助
This post is licensed under CC BY 4.0 by the author.