查端口先分两层:一是防火墙规则层面放行了哪些端口,二是系统监听层面的 socket 状态。本文覆盖 firewalld、ufw、iptables、ss 四类工具,命令均在 WSL Ubuntu 24.04 验证。
先用 ss 看监听 socket
ss -tulnp
ss 是 netstat 的现代替代,直接读内核 netlink,输出更快。-t 显示 TCP,-u 显示 UDP,-l 只看监听态,-n 不解析服务名,-p 显示进程名。WSL 实测:默认监听端口含 systemd-resolve 的 53、chrony 的 323,输出稳定 [1]。
ss -tulnp | grep ':22'
按端口过滤也很方便;grep 是客户端行为,不影响内核统计。
firewalld:list-ports / list-all
firewall-cmd --list-ports
firewall-cmd --list-all
--list-ports 只输出端口列表,格式为 端口/协议;--list-all 还会显示区域、服务、协议、富规则,信息更全 [2]。运行时与永久配置分开,改完需 --permanent 才写入磁盘 [3]。
WSL 实测:新装 firewalld 后区域为 public,默认放行 ssh 和 dhcpv6-client;--list-ports 初始为空,添加 8080/tcp 后立即返回 8080/tcp,删除后恢复空。
ufw:status verbose
ufw status verbose
ufw 是 Ubuntu/Debian 默认的简化前端,status 显示激活状态,verbose 会列出每条规则的编号、方向、动作、端口 [4]。numbered 参数可展示序号,方便 ufw delete <编号> 回滚 [6]。
WSL 实测:新装后状态为 inactive;ufw allow 8080/tcp 后再查,输出里出现 8080/tcp ALLOW;删除后恢复 inactive。
iptables:直接查链
iptables -L -n
iptables -L INPUT -n --line-numbers
iptables 操作内核 netfilter 四张表,最常用 filter 表。-L 列出链,-n 显示数字端口,--line-numbers 显示规则序号,方便删除 [5]。默认策略为 ACCEPT 时,空链如下:
Chain INPUT (policy ACCEPT)
target prot opt source destination
WSL 实测:默认三条链均为空;插入 -p tcp --dport 9090 -j ACCEPT 后,INPUT 链出现规则 1,删除后恢复空。
回滚与排错
| 现象 | 原因 | 处理 | |
|---|---|---|---|
firewall-cmd 报错 not running |
服务未启动 | systemctl start firewalld |
|
ufw status 显示 inactive |
规则未启用 | ufw enable |
|
ss 看不到某端口 |
进程未监听或监听在 127.0.0.1 | 用 `ss -tlnp | grep <端口>` 确认 |
iptables 规则不生效 |
插入到非默认表 | 加 -t filter 显式指定 |
桌面/开发机优先用 firewalld 或 ufw;服务器脚本和容器环境直接用 ss;需要 NAT、mangle 等多表精细控制时上 iptables。
局限性
- 本文 WSL 实测环境为 Ubuntu 24.04;RPM 系 firewalld 版本与 zone 行为可能有差异。
- iptables 在部分新内核上被 nftables 后端替代,语法兼容但底层不同。
- 容器环境(Docker)会插入自定义链,
iptables -L输出可能比宿主机多。
—
草稿待审 — netstat 命令、firewalld 富规则、ufw 高级匹配基于文档核查,尚未实际执行。
参考资料
- [1] ss(8) – Linux manual page(ss)
- [2] firewall-cmd man page(fw-cmd)
- [3] Open a Port or Service – Firewalld HowTo(fw-howto)
- [4] ufw(8) — Debian manpages(ufw)
- [5] iptables(8) – Linux manual page(ipt)
- [6] UFW – Ubuntu Community Help Wiki(ubu-ufw)
文中主要命令已在 WSL Ubuntu(24.04)实测,个别条目(未装工具/安装类命令)仅核对官方文档,未实际执行。