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创建进程的核心系统调用是fork(),它通过复制调用进程(父进程)创建一个新进程(子进程),随后通常调用execve()系列函数加载并执行新程序,替换子进程的地址空间。

    2025年7月24日
    5500
  • 如何查询Linux用户的账户过期时间?

    在Linux系统中,用户账户的过期时间管理是系统安全与资源管理的重要环节,及时查看和处理过期账户可有效避免未授权访问或资源浪费,本文将详细介绍如何查看Linux用户过期时间,涵盖文件结构、命令工具、批量处理方法及注意事项,用户过期时间的存储位置:/etc/shadow文件Linux用户账户的过期时间信息存储在……

    2025年10月2日
    3800
  • cdlinux如何抓包?操作步骤与工具方法详解?

    CDLinux作为一款轻量级的Linux应急响应系统,内置了丰富的网络分析工具,常用于网络故障排查、安全检测和数据包捕获,其抓包功能主要依赖Wireshark(图形界面)和tcpdump(命令行)两大工具,以下是详细操作步骤及注意事项,准备工作:启动系统并确认网络接口启动CDLinux将CDLinux系统通过U……

    2025年9月25日
    2700
  • Linux只读文件如何删除?解除权限或强制操作方法?

    在Linux系统中,只读文件是指文件权限设置中,用户、组用户或其他用户均无写权限(即权限位中的“w”位未被设置)的文件,这类文件通常用于系统保护、配置文件备份或防止意外修改,但有时用户需要删除这些只读文件,本文将详细介绍Linux只读文件的删除方法,包括常规操作、权限调整、强制删除及特殊场景处理,帮助用户高效安……

    2025年10月9日
    3400
  • 在Linux系统中安装JDK的具体操作步骤和注意事项有哪些?

    在Linux系统上安装JDK(Java Development Kit)是进行Java开发的基础步骤,本文将详细介绍几种主流安装方法,包括使用包管理器、手动下载安装包以及通过SDKMAN工具管理,帮助不同需求的用户顺利完成安装,安装前检查:是否已存在JDK在安装新版本前,建议先检查系统是否已安装JDK,避免版本……

    2025年9月25日
    3800

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信