在网络边界构建NAT服务器统一转发内部服务,有助于安全管理,也有利于业务的灵活性。本文在基于openeuler的NAT服务器通过脚本查看监控流向流向内部服务端口的流量。
用"iptables -t nat -nvL POSTROUTING --line-numbers
"获取 NAT 表 POSTROUTING 链中的每一个规则。
- [root@localhost]# iptables -t nat -nvL POSTROUTING --line-numbers
- Chain POSTROUTING (policy ACCEPT 2356 packets, 150K bytes)
- num pkts bytes target prot opt in out source destination
- 1 8 480 SNAT tcp -- * * 0.0.0.0/0 192.168.117.229 tcp dpt:80 to:192.168.117.222
- 2 258 13416 SNAT tcp -- * * 0.0.0.0/0 192.168.235.55 tcp dpt:4433 to:192.168.117.222
- 3 209 10868 SNAT tcp -- * * 0.0.0.0/0 192.168.18.43 tcp dpt:4434 to:192.168.117.222
- 4 0 0 SNAT tcp -- * * 0.0.0.0/0 192.168.235.38 tcp dpt:4435 to:192.168.117.222
- 5 0 0 SNAT tcp -- * * 0.0.0.0/0 192.168.18.73 tcp dpt:4436 to:192.168.117.222
- 6 0 0 SNAT tcp -- * * 0.0.0.0/0 192.168.18.73 tcp dpt:4437 to:192.168.117.222
- 7 0 0 SNAT tcp -- * * 0.0.0.0/0 192.168.18.73 tcp dpt:4438 to:192.168.117.222
- 8 0 0 SNAT tcp -- * * 0.0.0.0/0 192.168.18.73 tcp dpt:4439 to:192.168.117.222
- 9 0 0 SNAT tcp -- * * 0.0.0.0/0 192.168.18.73 tcp dpt:4440 to:192.168.117.222
下面是一个简单的 bash 脚本,然后对于NAT 表 POSTROUTING 链中每一个规则,提取出规则的内部服务 IP和端口,数据包的数量 (packets
) 和字节数量(bytes
)。本脚本适用于openeuler 22.03 LTS系统,其它系统可能需要根据实际回显情况进行适当的修改。
- [root@localhost]# vi monitor.sh
- #!/bin/bash
- ##__author__='daigjianbing'
-
- # 监控NAT服务器iptables-NAT-POSTROUTING链的目的IP端口和流量
- iptables -t nat -nvL POSTROUTING --line-numbers | \
- while IFS= read -r line
- do
- # 检查行是否包含规则,过滤有效行
- if [[ $line == *[0-9].*.*.* ]]
- then
- # 获取目的 IP
- ip=$(echo "$line" | awk '{print $10}')
- # 获取目的 端口
- port=$(echo "$line" | awk '{print $12}'|awk -F ':' '{print $2}')
- # 获取数据包和字节数量
- packets=$(echo $line | awk '{print $2}')
- bytes=$(echo $line | awk '{print $3}')
- echo "NAT业务的目的IP和端口: $ip:$port"
- echo "数据包总数: $packets"
- echo "字节数总数: $bytes"
- echo "------------------------------"
- fi
- done
- [root@CTNAT10 monitor]# sh monitor.sh
- NAT业务的目的IP和端口: 192.168.117.229:80
- 数据包总数: 9
- 字节数总数: 540
- ------------------------------
- NAT业务的目的IP和端口: 192.168.235.55:4433
- 数据包总数: 301
- 字节数总数: 15652
- ------------------------------
- NAT业务的目的IP和端口: 192.168.18.43:4434
- 数据包总数: 244
- 字节数总数: 12688
- ------------------------------
- NAT业务的目的IP和端口: 192.168.235.38:4435
- 数据包总数: 0
- 字节数总数: 0
- ------------------------------
- NAT业务的目的IP和端口: 192.168.18.73:4436
- 数据包总数: 0
- 字节数总数: 0
- ------------------------------
- NAT业务的目的IP和端口: 192.168.18.73:4437
- 数据包总数: 0
- 字节数总数: 0
- ------------------------------
- NAT业务的目的IP和端口: 192.168.18.73:4438
- 数据包总数: 0
- 字节数总数: 0
- ------------------------------
- NAT业务的目的IP和端口: 192.168.18.73:4439
- 数据包总数: 0
- 字节数总数: 0
- ------------------------------
- NAT业务的目的IP和端口: 192.168.18.73:4440
- 数据包总数: 0
- 字节数总数: 0
- ------------------------------
效果如上,达到所需目标。