linux怎么查看映射出去的ip
linux怎么查看映射出去的ip详细介绍
在 Linux 系统中查看映射出去的 IP 地址(通常涉及 NAT 或端口映射),可根据具体配置方式选择以下方法:
一、通过 iptables 查看 NAT 规则
1. 查看 NAT 表的所有规则
bash
iptables nat
- 参数说明:
-t nat:指定查看nat表(负责地址转换)。-L:列出规则。-n:不解析 IP 和端口的域名 / 服务名。-v:显示详细统计信息。
- 关键链说明:
- PREROUTING:处理进入的数据包(如 DNAT,目标地址转换)。
- POSTROUTING:处理离开的数据包(如 SNAT,源地址转换)。
- OUTPUT:处理本机生成的数据包。
2. 查看具体映射条目
- SNAT(源地址转换):
bashiptables nat POSTROUTING示例输出:
plaintextChain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)pkts bytes target prot opt in out source destination
100 6000 SNAT all -- * eth0 192.168.1.0/24 0.0.0.0/0 to:203.0.113.1
表示将
192.168.1.0/24网段的源 IP 转换为203.0.113.1。 - DNAT(目标地址转换):
bashiptables nat PREROUTING示例输出:
plaintextChain PREROUTING (policy ACCEPT 0 packets, 0 bytes)pkts bytes target prot opt in out source destination
50 3000 DNAT tcp -- eth0 * 0.0.0.0/0 203.0.113.1:80 to:192.168.1.100:80
表示将进入
eth0接口、目标 IP 为203.0.113.1:80的流量转发到192.168.1.100:80。
二、通过 firewalld 查看 NAT 规则
若系统使用firewalld防火墙:
1. 查看所有 NAT 规则
bash
firewall-cmd --get-all-rules
示例输出可能包含:
plaintext
ipv4 nat POSTROUTING 0 -s 192.168.1.0/24 -o eth0 -j MASQUERADEipv4 nat PREROUTING 0 -d 203.0.113.1/32 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80
2. 查看特定域的 NAT 配置
bash
firewall-cmd --list-all public
若启用了伪装(MASQUERADE),会显示:
plaintext
masquerade: yes
三、查看实时 NAT 转换条目
使用ip命令(需安装iproute2包):
bash
nat show
示例输出:
plaintext
tcp 192.168.1.100:80 203.0.113.1:80udp 192.168.1.200:53 203.0.113.1:53
显示当前活动的 NAT 转换条目。
四、结合网络连接分析
使用ss命令查看实时连接,结合 NAT 规则推断映射 IP:
bash
ss
或直接查看所有连接:
bash
ss
根据源 / 目标 IP 和端口,对照 iptables 规则判断映射关系。
五、验证端口映射
若配置了端口转发,可通过以下方式验证:
1. 检查端口监听情况
bash
端口号
或更高效的ss命令:
bash
ss 端口号
2. 使用外部工具测试
从外网访问映射的公网 IP 和端口,确认是否能到达内部目标。
六、注意事项
- 权限要求:上述命令需
root或sudo权限。 - 工具差异:
- 传统 Linux 发行版(如 CentOS 7)默认使用
iptables。 - 新系统(如 Fedora、CentOS 8+)可能默认使用
firewalld,需通过firewall-cmd管理。
- 传统 Linux 发行版(如 CentOS 7)默认使用
- 持久化规则:
iptables规则默认重启后失效,需通过iptables-save和iptables-restore保存 / 恢复。firewalld规则可通过--permanent参数持久化,生效需执行firewall-cmd --reload。
通过以上方法,可清晰查看 Linux 系统中配置的 NAT 规则、端口映射及实时转换条目。根据具体需求选择合适的工具和命令即可。