不同 Linux 发行版中通过命令行开启(放行)指定端口的教程
Panda 管理组 已认证 25天前
83

以下是在不同 Linux 发行版中通过命令行开启(放行)指定端口的教程,涵盖 **firewalld(CentOS/RHEL/Fedora)、ufw**(Ubuntu/Debian)和 **iptables**(传统工具)三种常见防火墙工具的操作方法:


方法1:使用 firewalld(CentOS/RHEL/Fedora)

1. 检查防火墙状态

sudo systemctl status firewalld  # 确保防火墙已运行
sudo firewall-cmd --state       # 显示防火墙状态(应为 "running")

2. 开放指定端口

  • 开放TCP端口(示例:开放 80 端口):

    sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
  • 开放UDP端口(示例:开放 53 端口):

    sudo firewall-cmd --zone=public --add-port=53/udp --permanent

3. 重新加载防火墙配置

sudo firewall-cmd --reload

4. 验证端口是否开放

sudo firewall-cmd --list-ports      # 列出所有开放的端口
sudo firewall-cmd --zone=public --list-all  # 查看详细配置

方法2:使用 ufw(Ubuntu/Debian)

1. 检查防火墙状态

sudo ufw status  # 若显示 "Status: inactive" 需先启用防火墙
sudo ufw enable  # 启用防火墙(若未启用)

2. 开放指定端口

  • 开放TCP端口(示例:开放 22 端口):

    sudo ufw allow 22/tcp
  • 开放UDP端口(示例:开放 1194 端口):

    sudo ufw allow 1194/udp
  • 同时开放TCP/UDP(示例:开放 443):

    sudo ufw allow 443

3. 验证端口规则

sudo ufw status numbered  # 显示所有规则(带编号)

方法3:使用 iptables(传统方法,适用于所有系统)

1. 开放TCP端口(示例:开放 3306

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

2. 开放UDP端口(示例:开放 123

sudo iptables -A INPUT -p udp --dport 123 -j ACCEPT

3. 保存规则(避免重启后丢失)

# 根据系统选择保存命令:
sudo apt-get install iptables-persistent -y  # Debian/Ubuntu
sudo netfilter-persistent save               # 保存规则

# 或 CentOS/RHEL:
sudo service iptables save

4. 验证规则

sudo iptables -L -n -v  # 查看所有规则

通用验证方法

无论使用哪种工具,最终确认端口是否开放:

# 检查端口监听状态(本地)
sudo netstat -tuln | grep <端口号>   # 示例:grep 80
sudo ss -tuln | grep <端口号>       # 更现代的替代命令

# 外部测试(从另一台机器执行)
telnet  <端口号>          # 测试TCP连通性
nc -zv  <端口号>          # 测试TCP(示例:nc -zv 192.168.1.1 80)
nc -zuv  <端口号>         # 测试UDP

注意事项

  1. 协议类型

    • TCP:适用于HTTP、SSH、MySQL等需要可靠连接的协议。
    • UDP:适用于DNS、视频流、VoIP等实时性要求高的协议。
  2. 服务依赖

    • 开放端口后,确保服务已启动并在监听该端口(如Nginx监听80端口)。
  3. 防火墙默认策略

    • 如果防火墙默认拒绝所有流量(deny 策略),需明确放行所需端口。
  4. 安全风险

    • 仅开放必要的端口,避免暴露敏感服务(如数据库端口 3306 不应公开暴露)。

操作示例

场景:在 CentOS 上开放 8080 端口(TCP)

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports  # 确认输出包含 8080/tcp

场景:在 Ubuntu 上开放 27017 端口(MongoDB)

sudo ufw allow 27017/tcp
sudo ufw status  # 检查规则是否添加成功
暂无收藏
最新回复 (0)