Linux Iptables 列出并显示所有 NAT IPTables 规则命令
/sbin/iptables用于 IPv4 数据包过滤和 NAT 的命令。网络地址转换 (NAT) 可在通过路由设备传输 IP 数据包时修改 IP 数据包报头中的 IP 地址信息。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 是的 |
要求 | Linux 终端 |
类别 | 防火墙 |
操作系统兼容性 | Alma • Alpine • Arch • Debian • Fedora • Linux • Mint • openSUSE • Pop!_OS • RHEL • Rocky • Stream • SUSE • Ubuntu |
预计阅读时间 | 2 分钟 |
要查看 NAT 规则,请以 root 用户身份在 Linux 中输入iptables 命令或 iptables-save 命令或netstat-nat 命令。让我们详细查看示例和语法。
句法
以 root 用户身份运行 iptables 命令来显示IPv4 规则的语法如下:
示例输出:
# iptables -t nat -L
# iptables -t nat -L -n -v | grep 'something'
# iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 867 packets, 146K bytes) pkts bytes target prot opt in out source destination 0 0 DROP all -- vlan2 * 0.0.0.0/0 192.168.1.0/24 Chain POSTROUTING (policy ACCEPT 99 packets, 6875 bytes) pkts bytes target prot opt in out source destination 0 0 MASQUERADE all -- * vlan2 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT 99 packets, 6875 bytes) pkts bytes target prot opt in out source destination Chain WANPREROUTING (0 references) pkts bytes target prot opt in out source destination root@tswitch:/tmp/home/root#
了解 iptables nat 规则列表选项
- -t nat:此选项指定命令应操作的数据包匹配表。在此示例中,我正在操作nat表。当遇到创建新连接的数据包时,将参考该表。它由四个内置项组成:
- PREROUTING 用于在数据包到达时立即对其进行修改
- INPUT 用于改变发往本地套接字的数据包
- OUTPUT 用于在路由之前更改本地生成的数据包
- POSTROUTING 用于在数据包即将发出时对其进行修改
- -L:列出选定链中的所有规则。
- -n:数字输出。IP 地址和端口号将以数字格式打印。默认情况下,程序将尝试将它们显示为主机名、网络名称或服务(只要适用)。
- -v:详细输出。此选项使 list 命令显示接口名称、规则选项(如果有)和 TOS 掩码。还列出了数据包和字节计数器,后缀“K”、“M”或“G”分别表示 1000、1,000,000 和 1,000,000,000 乘数。
Linux Iptables 列出并显示所有 NAT IPTables IPv6 规则命令
Linux 内核 3.7 版开始支持 IPv6 NAT。列出所有 IPv6 NAT iptables 规则如下:
输出:
# ip6tables -t nat -L
# ip6tables -t nat -L -n -v | grep 'something'
# ip6tables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain INPUT (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination MASQUERADE all fd9d:bc11:xxx::/48 anywhere policy match dir out pol none
这是另一个命令:
$ sudo iptables -t nat -L -n -v
示例输出:
Chain PREROUTING (policy ACCEPT 294K packets, 17M bytes) pkts bytes target prot opt in out source destination 165K 9879K DNAT tcp -- * * 0.0.0.0/0 192.168.203.146 tcp dpt:443 to:10.105.28.42:443 166K 9982K DNAT tcp -- * * 0.0.0.0/0 192.168.203.146 tcp dpt:80 to:10.105.28.42:80 0 0 DNAT tcp -- * * 0.0.0.0/0 192.168.203.146 tcp dpt:443 to:10.105.28.42:443 0 0 DNAT tcp -- * * 0.0.0.0/0 192.168.203.146 tcp dpt:80 to:10.105.28.42:80 22034 1322K DNAT tcp -- * * 0.0.0.0/0 192.168.203.146 tcp dpt:444 to:10.105.28.45:444 22073 1324K DNAT tcp -- * * 0.0.0.0/0 192.168.203.146 tcp dpt:81 to:10.105.28.45:81 31328 1880K DNAT tcp -- * * 0.0.0.0/0 192.168.203.146 tcp dpt:445 to:10.105.28.44:445 19424 1165K DNAT tcp -- * * 0.0.0.0/0 192.168.203.146 tcp dpt:82 to:10.105.28.44:82 Chain INPUT (policy ACCEPT 199K packets, 12M bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 387 packets, 24906 bytes) pkts bytes target prot opt in out source destination Chain POSTROUTING (policy ACCEPT 252K packets, 15M bytes) pkts bytes target prot opt in out source destination 93223 5593K MASQUERADE all -- * * 10.105.28.0/24 !10.105.28.0/24 /* generated for LXD network lxdbr0 */
说你好 netstat-nat
默认情况下,您的系统可能未安装netstat-nat命令。因此,请使用Alpine Linux 上的apk 命令、 RHEL 等上的dnf 命令/ yum 命令、Debian、Ubuntu 等上的apt 命令/ apt-get 命令、SUSE/OpenSUSE 上的 zypper 命令、Arch Linux 上的 pacman 命令来安装 netstat -nat。
# netstat-nat -n
要显示 SNAT 连接,请运行:
# netstat-nat -S
要显示 DNAT 连接,请键入:
# netstat-nat -D
请注意,您可能会在最新版本的 Linux 上收到以下消息:
然后使用 conntrack 命令:
$ sudo conntrack -L # List/dump
$ sudo conntrack -L -n # Filter source NAT connections
$ sudo conntrack -L -g # Filter destination NAT connections
$ sudo conntrack -L -j # Filter any NAT connection
总结
您需要使用 iptables 或 ip6tables 命令,如下所示:
有关更多信息,请使用如下 man 命令参阅以下手册页:
$ sudo iptables -t nat -L # IPv4 rules
$ sudo ip6tables -t nat -L # IPv6 rules
$ sudo conntrack -L -j
$ man iptables <--#IPv4
$ man ip6tables <--#IPv6