Linux如何查看防火墙是否开放20端口

admin
在Linux中查看防火墙是否开放20端口,需结合防火墙工具和端口监听状态检查,若使用iptables,执行iptables -L -n --line-numbers,查看规则链中是否有允许20/tcp或20/udp的ACCEPT规则;若使用firewallld,运行firewall-cmd --list-ports检查是否包含20/tcp,或用firewall-cmd --query-port=20/tcp直接查询,需确认服务是否监听该端口,可通过ss -tulnp | grep 20netstat -tulnp | grep 20查看是否有进程监听20端口,确保防火墙开放且服务正常运行。

在Linux系统中,20端口是FTP协议的数据传输端口(主动模式默认使用),常用于文件传输服务,若防火墙未开放20端口,可能导致FTP客户端无法主动连接服务器进行数据传输,本文将介绍在不同Linux发行版中,如何通过常用防火墙工具(firewalld、ufw、iptables)查看20端口是否开放,并提供验证方法。

常见Linux防火墙类型简介

不同Linux发行版默认使用的防火墙工具不同,主要分为三类:

  • firewalld:CentOS 7+、RHEL 7+、Fedora等系统默认防火墙,支持动态规则管理。
  • ufw(Uncomplicated Firewall):Ubuntu、Debian等系统提供的简化防火墙工具,基于iptables封装。
  • iptables:传统Linux防火墙工具,几乎所有Linux发行版均支持,规则较为复杂。

使用firewalld查看20端口开放状态(CentOS 7+/RHEL 7+)

检查firewalld服务状态

首先确认firewalld服务是否运行,若未运行需先启动:

Linux如何查看防火墙是否开放20端口

systemctl status firewalld  # 查看服务状态
systemctl start firewalld   # 若未运行,使用此命令启动

查看当前防火墙规则(重点看20端口)

使用firewall-cmd --list-ports查看已开放的端口列表,或firewall-cmd --list-all查看详细规则(包含端口、服务、区域等):

# 查看已开放端口(仅显示端口/协议)
firewall-cmd --list-ports
# 查看详细规则(包含服务、端口、区域等信息)
firewall-cmd --list-all

示例输出与解读

若20端口已开放,输出中会包含20/tcp(20端口TCP协议):

# firewall-cmd --list-ports 输出示例
22/tcp 80/tcp 20/tcp  # 20/tcp已开放
# firewall-cmd --list-all 输出示例(public区域)
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources:
  services: ssh dhcpv6-client
  ports: 22/tcp 80/tcp 20/tcp  # 20/tcp在此区域开放
  protocols:
  forward: no
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

若输出中没有20/tcp,则表示20端口未开放。

使用ufw查看20端口开放状态(Ubuntu/Debian)

检查ufw状态

ufw默认可能未启用,需先确认状态:

ufw status  # 查看状态(inactive为未启用,active为已启用)

若未启用,使用ufw enable启用(注意:启用前需确保允许SSH端口,避免无法远程连接)。

查看详细规则(包含20端口)

使用ufw status verbose查看详细规则,会显示端口的“允许/拒绝”状态:

ufw status verbose

示例输出与解读

若20端口已开放,输出中会包含“20/tcp”且状态为“ALLOW”:

# ufw status verbose 输出示例
Status: active
To                         Action      From
--                         ------      -----
22/tcp                     ALLOW       Anywhere                   # SSH端口开放
80/tcp                     ALLOW       Anywhere                   # 80端口开放
20/tcp                     ALLOW       Anywhere                   # 20端口开放
22/tcp (v6)                ALLOW       Anywhere (v6)              # IPv6的SSH端口
80/tcp (v6)                ALLOW       Anywhere (v6)              # IPv6的80端口
20/tcp (v6)                ALLOW       Anywhere (v6)              # IPv6的20端口

若没有20/tcp或状态为“DENY”,则表示20端口未开放。

使用iptables查看20端口开放状态(传统Linux系统)

iptables是更底层的防火墙工具,规则需手动管理,查看20端口是否开放,需过滤TCP协议的目标端口(--dport 20)。

查看iptables规则(过滤TCP 20端口)

# 查看INPUT链(入站规则)中TCP 20端口的规则
iptables -L INPUT -n --line-numbers | grep 'tcp.*dpt:20'
# 或直接查看所有规则,过滤20端口
iptables -L -n | grep '20.*tcp'

示例输出与解读

若20端口已开放,输出中会包含ACCEPT

文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码