在Linux服务器上,我们经常需要运行各种服务,比如Web服务器(80端口)、SSH远程连接(22端口)等。这些服务要能对外提供服务,就需要在服务器的防火墙中开放对应的端口。本文将为Linux新手介绍几种常见的开放端口方法,内容简单易懂,适合初学者快速上手。

一、为什么需要开放端口?

举个例子:如果你的服务器安装了Web服务器(如Nginx、Apache),默认通过80端口提供网页服务。但如果防火墙没开放80端口,外界访问时会提示“连接被拒绝”,服务也就无法正常使用。因此,开放端口是让服务对外通信的必要步骤。

二、常见的Linux防火墙工具

不同Linux发行版(如Ubuntu、CentOS)默认使用的防火墙工具不同,以下是最常见的3种,按新手友好度排序:

1. UFW(Uncomplicated Firewall)

适用系统:Ubuntu、Debian等基于Debian的发行版
特点:操作极简,像“开关”一样简单,适合纯新手入门。

步骤1:检查UFW状态

如果系统未安装UFW,先安装:

sudo apt update && sudo apt install ufw  # Ubuntu/Debian专用

查看UFW是否运行(默认未启用时显示“Status: inactive”):

sudo ufw status
步骤2:开放端口

以开放 22端口(SSH远程连接)80端口(Web服务) 为例:

# 开放22端口(TCP协议)
sudo ufw allow 22/tcp  

# 开放80端口(TCP协议,HTTP服务)
sudo ufw allow 80/tcp  

如果需要开放UDP端口(如DNS的53端口),只需加udp标识:

sudo ufw allow 53/udp
步骤3:启用UFW

开放端口后,必须启用UFW才能生效:

sudo ufw enable

(启用时会提示确认,输入y回车即可)

步骤4:验证开放结果

查看已开放的端口列表:

sudo ufw status

输出类似:

Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere

2. firewalld(适用于CentOS/RHEL/Fedora)

适用系统:CentOS 7+、RHEL、Fedora
特点:动态防火墙管理,支持“区域(zone)”概念,可更灵活地控制不同网络环境的规则。

步骤1:检查firewalld状态

CentOS/RHEL默认已安装firewalld,直接查看状态:

sudo systemctl status firewalld

(显示“active (running)”表示已运行)

步骤2:开放端口

firewalld默认使用public区域(公共网络),开放端口需指定区域和协议:

# 开放22端口(TCP)
sudo firewall-cmd --permanent --zone=public --add-port=22/tcp  

# 开放80端口(TCP)
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp  

参数说明:
- --permanent:规则永久生效(重启后不丢失);
- --zone=public:指定区域为“public”(公共网络);
- --add-port=22/tcp:添加TCP协议的22端口。

步骤3:重新加载规则

添加规则后,需重启firewalld或重新加载规则:

sudo firewall-cmd --reload
步骤4:验证开放结果

查看已开放的端口:

sudo firewall-cmd --list-ports

输出类似:

22/tcp 80/tcp

3. iptables(通用底层工具)

适用系统:几乎所有Linux发行版
特点:功能强大但语法稍复杂,是防火墙的“基石”工具,适合进阶用户。

步骤1:开放端口

以开放22端口(TCP)为例:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT  

参数说明:
- -A INPUT:将规则追加到INPUT链(处理进入服务器的数据包);
- -p tcp:指定协议为TCP;
- --dport 22:目标端口为22;
- -j ACCEPT:允许该数据包通过。

步骤2:保存规则(避免重启丢失)

iptables规则默认在重启后会丢失,需手动保存:
- CentOS/RHEL

  sudo service iptables save
  • Ubuntu/Debian
  sudo iptables-save > /etc/iptables/rules.v4
步骤3:验证开放结果

查看INPUT链的规则:

sudo iptables -L INPUT --line-numbers

三、如何验证端口是否开放?

开放端口后,需确认是否生效,可通过以下方法验证:

  1. telnet测试(需安装telnet客户端):
   telnet localhost 22  # 测试SSH端口22

若显示Connected to localhost.,说明端口开放。

  1. nc(netcat)测试
   nc -zv localhost 80  # 测试Web端口80

若显示Connection to localhost 80 port [tcp/http] succeeded!,说明端口开放。

  1. curl测试(Web服务):
   curl http://localhost  # 若返回Web页面内容,说明80端口开放

四、新手注意事项

  1. 优先用UFW/firewalld:新手建议从UFW(简单)或firewalld(灵活)开始,iptables适合进阶需求。
  2. 不要开放高危端口:除非必要,SSH(22)端口不要对所有公网开放,建议限制IP或使用密钥登录。
  3. 规则需永久生效:UFW和firewalld的--permanent参数可保证重启后规则保留;iptables需手动保存。
  4. 关闭防火墙风险高:生产环境严禁关闭防火墙,仅测试环境临时关闭(sudo ufw disablesystemctl stop firewalld)。
  5. 检查服务是否运行:开放端口后,需确保服务本身已启动(如systemctl start sshd)。

总结

开放Linux服务器端口的核心是通过防火墙工具(UFW/firewalld/iptables)添加规则。新手建议从UFW或firewalld入手,操作简单且足够应对日常需求。开放后务必验证端口状态,确保服务正常运行。

小夜