菜鸟科技网

防火墙端口命令有哪些?

查询防火墙端口命令是网络管理和系统运维中常用的操作,用于检查防火墙规则、开放的端口以及网络连接状态,不同操作系统(如Linux、Windows、macOS)和防火墙工具(如iptables、firewalld、Windows Defender Firewall)提供的命令有所不同,以下将详细介绍各类系统中常用的查询命令及其使用方法。

防火墙端口命令有哪些?-图1
(图片来源网络,侵删)

Linux系统中的防火墙端口查询命令

Linux系统中最常用的防火墙工具是iptables和firewalld(CentOS 7+、RHEL 7+等发行版默认使用)。

使用iptables查询端口

iptables是Linux内核的经典防火墙工具,通过iptables -L命令可以列出所有规则,但需结合-n(以数字形式显示地址和端口)、--line-numbers(显示规则编号)等参数提高可读性。

sudo iptables -L -n --line-numbers  # 列出所有规则,显示IP和端口
sudo iptables -L INPUT -n -v        # 查看INPUT链的详细规则,包括流量统计

若需查询特定端口(如80端口)是否开放,可结合grep过滤:

sudo iptables -L INPUT -n | grep 80

使用firewalld查询端口

firewalld支持动态管理防火墙规则,查询命令更简洁。

防火墙端口命令有哪些?-图2
(图片来源网络,侵删)
sudo firewall-cmd --list-all          # 查看所有规则和开放的端口
sudo firewall-cmd --list-ports       # 仅列出开放的端口
sudo firewall-cmd --query-port=8080/tcp  # 查询特定端口(8080/TCP)是否开放

若需查看服务的端口映射(如http服务对应80端口),可使用:

sudo firewall-cmd --list-services

使用ss/netstat查询端口连接状态

ss(推荐)和netstat命令用于查看网络连接状态,可结合防火墙规则判断端口是否被监听或连接。

ss -tulnp | grep 80    # 查看监听80端口的进程
netstat -tuln | grep 80 # 传统方式查看监听端口

Windows系统中的防火墙端口查询命令

Windows系统主要通过netsh命令行工具和PowerShell管理防火墙。

使用netsh命令

netsh advfirewall firewall show rule name=all  # 显示所有防火墙规则
netsh advfirewall firewall show rule name="允许HTTP"  # 查看特定规则(如“允许HTTP”)
netsh advfirewall firewall show portprotocol=tcp localport=80  # 查询80端口的TCP规则

使用PowerShell命令

PowerShell提供了更强大的管理功能,

Get-NetFirewallRule | Format-Table Name, DisplayName, Enabled, LocalPort, RemotePort, Protocol  # 列出所有规则
Get-NetFirewallRule -DisplayName "允许HTTPS" | Select-Object *  # 查看特定规则详情
Get-NetFirewallPortFilter -Protocol TCP | Where-Object LocalPort -eq 443  # 查询443端口的TCP规则

使用Windows Defender Firewall GUI

通过控制面板“Windows Defender防火墙”>“高级设置”可图形化查看规则,但命令行方式更适合批量操作。

macOS系统中的防火墙端口查询命令

macOS默认使用pfctl(Packet Filter)管理防火墙,可通过以下命令查询:

sudo pfctl -sr  # 显示防火墙规则
sudo pfctl -ss  # 显示当前状态连接
sudo pfctl -a info 'port 80'  # 查询80端口相关规则

lsof命令也可用于查看端口占用情况:

lsof -i :80  # 查看使用80端口的进程

常用查询命令对比表

系统/工具 命令示例 功能说明
Linux (iptables) sudo iptables -L -n 列出所有防火墙规则
Linux (firewalld) sudo firewall-cmd --list-ports 列出开放的端口
Windows (netsh) netsh advfirewall firewall show rule name=all 显示所有防火墙规则
Windows (PowerShell) Get-NetFirewallRule 列出所有规则,支持格式化输出
macOS (pfctl) sudo pfctl -sr 显示防火墙规则
通用 (ss/netstat) ss -tulnp 查看端口监听状态及进程

相关问答FAQs

Q1: 如何判断防火墙是否阻止了特定端口的连接?
A: 可通过以下步骤排查:

  1. 使用查询命令(如iptables -L INPUT -nfirewall-cmd --list-ports)检查端口是否在允许规则中;
  2. 使用telnet IP 端口nc -zv IP 端口测试端口连通性;
  3. 若被阻止,需添加允许规则(如iptables -A INPUT -p tcp --dport 80 -j ACCEPTfirewall-cmd --add-port=80/tcp --permanent)。

Q2: 为什么查询结果显示端口开放,但外部仍无法访问?
A: 可能原因包括:

  1. 防火墙规则顺序问题(如iptables中拒绝规则位于允许规则之前);
  2. 服务未正确监听该端口(需用ss -tulnp确认进程);
  3. 网络设备(如路由器、交换机)的ACL规则拦截;
  4. 云服务器安全组未开放端口(需在云平台控制台检查)。

建议结合网络连通性测试和分层排查(本地防火墙→系统服务→网络设备)定位问题。

分享:
扫描分享到社交APP
上一篇
下一篇