如何查看本机配置了哪些端口转发
在 Linux 系统中,要查看当前系统配置了哪些端口转发规则,你可以使用以下几种方法:
1. 使用 iptables
查看端口转发规则
如果你使用的是 iptables
来配置端口转发,可以通过以下命令查看端口转发规则。
查看 nat
表中的规则:
sudo iptables -t nat -L -n -v
解释:
-t nat
:查看nat
表,该表用于网络地址转换和端口转发。-L
:列出当前的规则。-n
:显示 IP 地址和端口号,而不是名称。-v
:显示详细信息。
在输出中,查看链 PREROUTING
和 POSTROUTING
中的 DNAT
和 SNAT
规则,它们用于端口转发。
示例输出:
Chain PREROUTING (policy ACCEPT 300 packets, 18000 bytes) pkts bytes target prot opt in out source destination 100 6000 DNAT tcp -- * * 0.0.0.0/0 192.168.1.100 tcp dpt:8080 to:192.168.1.200:80
在这个示例中,DNAT
规则将目标地址为 192.168.1.100
的 8080 端口流量转发到 192.168.1.200
的 80 端口。
2. 使用 firewalld
查看端口转发规则(如果使用 firewalld
)
如果你的系统使用 firewalld
而不是 iptables
来管理防火墙,可以通过以下命令查看端口转发规则。
查看转发的端口:
sudo firewall-cmd --list-all
该命令会列出当前区域的所有防火墙规则,包括已配置的端口转发。你可以从中查找转发的端口规则。
3. 使用 netstat
或 ss
查看监听的端口
虽然 netstat
和 ss
命令不会直接显示端口转发规则,但它们可以帮助你查看系统中哪些端口在监听,并找到与端口转发相关的端口。
使用 netstat
:
sudo netstat -tuln
使用 ss
:
sudo ss -tuln
解释:
-tuln
:显示所有 TCP 和 UDP 监听端口,地址和端口号以数字形式显示。
这可以帮助你确定哪些端口正在监听,然后结合你的转发规则确定具体的转发目标。
4. 查看 /proc/net/nf_conntrack
文件
在某些 Linux 系统中,你还可以查看 /proc/net/nf_conntrack
文件,它记录了当前的网络连接状态,包括 NAT 转换。你可以通过以下命令查看:
cat /proc/net/nf_conntrack
在输出中,查找包含 dport
或 sport
的条目,它们表示端口转发信息。
5. 使用 ss
命令查看 SSH 隧道的端口转发
如果你是通过 SSH 隧道设置的端口转发,可以使用 ss
命令查看当前的端口转发规则。
查看监听的端口:
sudo ss -tnlp
这将列出所有监听的 TCP 端口,结合 PID/Program
字段可以查找到与 SSH 隧道相关的端口转发。
总结:
- 使用
iptables
来查看当前配置的端口转发规则(常用于静态端口转发)。 - 使用
firewalld
查看基于firewalld
管理的端口转发规则。 - 使用
netstat
或ss
命令查看监听的端口,帮助排查端口转发的具体端口。 - 查看
/proc/net/nf_conntrack
获取当前 NAT 连接信息。