Linux如何放行端口?防火墙规则配置步骤有哪些?

在Linux系统中,放行端口是确保网络服务(如Web服务、数据库、SSH等)能够正常访问的关键操作,由于不同Linux发行版默认使用的防火墙工具不同(如CentOS/RHEL常用firewalld,Ubuntu/Debian常用iptables或ufw),且云服务器(如AWS、阿里云)还需额外配置安全组,因此需根据具体场景选择合适的方法,本文将详细介绍Linux系统放行端口的多种方式,包括不同防火墙工具的操作步骤、注意事项及验证方法。

linux 如何放行端口

使用firewalld放行端口(CentOS/RHEL默认)

firewalld是CentOS 7及以上版本、RHEL 7及以上版本默认的动态防火墙管理工具,支持区域(Zone)管理,可灵活配置信任网络和端口。

操作步骤:

  1. 检查firewalld状态
    首先确认firewalld是否运行,若未运行需先启动并设置开机自启:

    systemctl status firewalld  # 查看状态(inactive为未运行)
    systemctl start firewalld    # 启动firewalld
    systemctl enable firewalld   # 设置开机自启
  2. 添加端口规则

    • 临时放行(重启后失效):直接添加端口,无需--permanent参数。
      firewall-cmd --zone=public --add-port=8080/tcp  # 放行TCP 8080端口
    • 永久放行(重启后生效):添加--permanent参数,修改后需重新加载防火墙。
      firewall-cmd --permanent --zone=public --add-port=8080/tcp
      firewall-cmd --reload  # 重新加载防火墙使规则生效
    • 批量放行多个端口:用逗号分隔端口,如8080-8082表示放行8080至8082端口:
      firewall-cmd --permanent --zone=public --add-port=8080-8082/tcp
      firewall-cmd --reload
  3. 查看已开放端口

    firewall-cmd --list-ports          # 查看所有已开放端口
    firewall-cmd --zone=public --list-ports  # 查看指定区域(public)的端口
  4. 设置服务别名(可选)
    若需放行常见服务(如http、https),可直接通过服务名配置,无需记忆端口:

    firewall-cmd --permanent --add-service=http  # 放行HTTP服务(默认80端口)
    firewall-cmd --permanent --add-service=https # 放行HTTPS服务(默认443端口)
    firewall-cmd --reload

firewalld常用命令总结

操作场景 命令示例
启动firewalld systemctl start firewalld
开机自启firewalld systemctl enable firewalld
永久放行端口(需重载) firewall-cmd --permanent --add-port=端口号/协议
临时放行端口(无需重载) firewall-cmd --add-port=端口号/protocol
重新加载防火墙 firewall-cmd --reload
查看已开放端口 firewall-cmd --list-ports
删除端口规则 firewall-cmd --permanent --remove-port=端口号/协议

使用iptables放行端口(Ubuntu/Debian默认或CentOS旧版)

iptables是Linux内核级的防火墙工具,功能强大但规则复杂,常见于Ubuntu/Debian系统或未启用firewalld的CentOS 6及以下版本。

操作步骤:

  1. 检查iptables状态

    iptables -L -n  # 查看当前规则(-n不解析域名,-L列出规则链)
    systemctl status iptables  # 查看iptables服务状态(CentOS)

    若未运行,需启动并设置开机自启(CentOS):

    systemctl start iptables
    systemctl enable iptables
  2. 添加端口规则
    iptables规则按“链”(Chain)和“表”(Table)管理,常用filter表的INPUT链(控制入站流量)。

    linux 如何放行端口

    • 开放TCP端口
      iptables -A INPUT -p tcp --dport 8080 -j ACCEPT  # 追加规则:允许TCP 8080端口入站
    • 开放UDP端口
      iptables -A INPUT -p udp --dport 53 -j ACCEPT  # 允许UDP 53端口(DNS服务)
    • 开放端口范围
      iptables -A INPUT -p tcp --dport 8080-8082 -j ACCEPT
  3. 保存规则(关键步骤)
    iptables规则默认重启后失效,需手动保存:

    • CentOS
      service iptables save  # 保存至/etc/sysconfig/iptables
    • Ubuntu/Debian
      iptables-save > /etc/iptables/rules.v4  # 保存至IPv4规则文件
  4. 设置开机自启

    • CentOSchkconfig iptables on
    • Ubuntu/Debiansystemctl enable iptables
  5. 查看与删除规则

    • 查看规则编号iptables -L INPUT --line-numbers(带编号,方便删除)
    • 删除指定规则iptables -D INPUT 编号(如iptables -D INPUT 3删除第3条规则)

iptables常用命令总结

操作场景 命令示例
开放TCP端口 iptables -A INPUT -p tcp --dport 端口号 -j ACCEPT
开放UDP端口 iptables -A INPUT -p udp --dport 端口号 -j ACCEPT
保存规则(CentOS) service iptables save
保存规则(Ubuntu/Debian) iptables-save > /etc/iptables/rules.v4
查看规则带编号 iptables -L INPUT --line-numbers
删除规则 iptables -D INPUT 编号

使用ufw放行端口(Ubuntu简化防火墙)

ufw(Uncomplicated Firewall)是Ubuntu提供的简化防火墙工具,命令更直观,适合新手。

操作步骤:

  1. 检查ufw状态

    ufw status  # 默认为inactive(未启用)
    ufw enable  # 启用ufw(会提示防火墙规则变更,输入y确认)
  2. 添加端口规则

    • 开放指定端口
      ufw allow 8080/tcp  # 放行TCP 8080端口
      ufw allow 53/udp    # 放行UDP 53端口
    • 开放端口范围
      ufw allow 8080:8082/tcp  # 放行8080-8082 TCP端口
    • 开放服务
      ufw allow http   # 放行HTTP(80端口)
      ufw allow ssh    # 放行SSH(22端口)
  3. 查看与删除规则

    • 查看规则ufw status numbered(带编号)
    • 删除规则ufw delete 编号(如ufw delete 3)或直接指定规则:ufw delete allow 8080/tcp

ufw常用命令总结

操作场景 命令示例
启用ufw ufw enable
开放TCP端口 ufw allow 端口号/tcp
开放UDP端口 ufw allow 端口号/udp
开放端口范围 ufw allow 起始端口:结束端口/tcp
查看规则(带编号) ufw status numbered
删除规则 ufw delete 编号

云服务器安全组配置(额外步骤)

若使用云服务器(如AWS EC2、阿里云ECS、腾讯云CVM),仅开放系统防火墙端口可能仍无法访问,需额外配置安全组(虚拟防火墙,控制云服务器的网络流量)。

操作步骤(以阿里云为例):

  1. 登录云平台控制台,进入“云服务器ECS”管理页面。
  2. 选择目标实例,点击“安全组”配置,进入安全组列表。
  3. 点击“配置规则”,添加“入方向”规则:
    • 授权策略:允许
    • 授权对象:0.0.0.0/0(允许所有IP,或指定IP段,如192.168.1.0/24)
    • 端口范围:输入需放行的端口(如8080),或选择“全部端口”
    • 协议类型:TCP/UDP/ICMP,根据服务选择(如TCP)
  4. 保存规则,等待1-2分钟生效。

注意:云服务器安全组规则与系统防火墙规则需协同配置,缺一不可。

linux 如何放行端口

验证端口是否开放

配置完成后,需验证端口是否真正开放,可通过以下方法:

  1. 使用telnet测试(需安装telnet工具,Ubuntu/Debian:apt install telnet,CentOS:yum install telnet):

    telnet IP地址 端口号  # 如telnet 192.168.1.100 8080

    若端口开放,会显示“Connected to …”;若未开放,则显示“Connection refused”。

  2. 使用netcat(nc)测试

    nc -zv IP地址 端口号  # 如nc -zv 192.168.1.100 8080

    成功时显示“Connection to IP地址 port [端口号] [tcp/udp] succeeded!”。

  3. 使用ss或netstat检查监听状态

    ss -tuln | grep 端口号  # 查看端口是否处于监听状态(LISTEN)
    netstat -tuln | grep 端口号

注意事项

  1. 权限问题:所有防火墙操作均需root权限或sudo权限,普通用户无法执行。
  2. 端口冲突:确保需开放的端口未被其他服务占用(通过ss -tuln | grep 端口号检查)。
  3. 服务状态端口放行后,需确认对应服务已启动并监听该端口(如nginx:systemctl status nginx)。
  4. 规则顺序:iptables按规则顺序匹配,添加规则时需注意位置(-I插入到指定位置,-A追加到末尾)。
  5. 安全限制:为避免安全风险,建议仅开放必要的端口,并限制访问IP(如ufw:ufw allow from 192.168.1.100 to any port 8080)。

相关问答FAQs

Q1:为什么端口已通过firewalld开放,但外部设备仍无法访问?
A:可能原因包括:① firewalld未运行或规则未重新加载(需执行firewall-cmd --reload);② 服务未监听0.0.0.0(如服务仅监听127.0.0.1,需修改配置为0.0.0:8080);③ 云服务器安全组未开放该端口(需登录云平台配置安全组入方向规则);④ 外部网络防火墙或运营商策略拦截(可尝试用telnet本地IP测试,排除本地防火墙问题)。

Q2:如何永久删除firewalld中已添加的端口规则?
A:删除firewalld端口规则需分“临时”和“永久”两种情况:① 若规则是临时添加(无--permanent),直接删除即可,重启后自动失效;② 若规则是永久添加(带--permanent),需使用--remove-port参数并重新加载防火墙,具体命令为:firewall-cmd --permanent --remove-port=端口号/协议,然后执行firewall-cmd --reload,若需批量删除,可通过firewall-cmd --list-ports --permanent查看所有永久规则,再逐个删除。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/37511.html

(0)
酷番叔酷番叔
上一篇 2025年10月7日 08:17
下一篇 2025年10月7日 08:29

相关推荐

  • 如何将文件上传到Linux?

    将文件上传到Linux服务器是日常运维、开发和数据管理中的基础操作,根据文件大小、网络环境、安全需求及用户习惯,可选择多种方法,本文将详细介绍主流上传方式的操作步骤、适用场景及优缺点,帮助用户高效完成文件传输,使用SCP(Secure Copy)上传文件SCP基于SSH协议,通过加密传输确保文件安全,适合上传单……

    2025年9月16日
    4600
  • Linux如何暂停打印任务?暂停操作方法详解

    在Linux系统中,打印任务通常由CUPS(Common UNIX Printing System)服务管理,这是一个开源的打印系统,广泛用于各类Linux发行版,要暂停打印操作,可能涉及暂停特定打印任务、暂停整个打印机的打印服务,或临时阻止新任务进入队列,以下是详细的操作方法,涵盖命令行和图形界面两种方式,并……

    2025年9月22日
    1900
  • Linux系统如何新建用户组?详细操作步骤和命令是怎样的?

    在Linux系统中,用户组是管理用户权限和资源分配的重要机制,通过将用户划分到不同的组,可以简化对文件、目录等资源的访问控制权限设置,新建用户组是系统管理中的基础操作,本文将详细介绍在Linux系统中新建用户组的方法及相关注意事项,新建用户组主要使用groupadd命令,其基本语法为groupadd [选项……

    2025年9月27日
    1600
  • Linux无法读写U盘?,Linux U盘识别失败怎么办?,Linux挂载U盘权限错误?

    检测U盘是否被识别物理连接插入U盘后,观察指示灯(如有),系统通常发出提示音(需启用声音提示),终端检测打开终端(Ctrl+Alt+T),执行命令:lsblk # 列出所有块设备(含U盘)dmesg | tail # 查看内核日志末尾的U盘识别记录输出示例: sdb 8:16 1 14.9G 0 disk└─s……

    2025年7月29日
    3500
  • 如何轻松创建Linux系统镜像文件?

    在Linux环境中制作镜像文件是备份系统、迁移数据或创建可部署模板的关键操作,以下是三种主流方法,涵盖不同场景需求:制作整个磁盘/分区的原始镜像(适用于系统克隆)工具:dd命令原理: 逐字节复制原始设备,生成.img或.iso格式的精确副本,包含分区表、引导扇区和所有数据,操作步骤:识别设备路径sudo fdi……

    2025年8月7日
    3600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信