• 基于openeuler的NAT服务器查看流向内部服务端口的流量


    在网络边界构建NAT服务器统一转发内部服务,有助于安全管理,也有利于业务的灵活性。本文在基于openeuler的NAT服务器通过脚本查看监控流向流向内部服务端口的流量。

     一、基本思路

    用"iptables -t nat -nvL POSTROUTING --line-numbers "获取 NAT 表 POSTROUTING 链中的每一个规则。

    1. [root@localhost]# iptables -t nat -nvL POSTROUTING --line-numbers
    2. Chain POSTROUTING (policy ACCEPT 2356 packets, 150K bytes)
    3. num pkts bytes target prot opt in out source destination
    4. 1 8 480 SNAT tcp -- * * 0.0.0.0/0 192.168.117.229 tcp dpt:80 to:192.168.117.222
    5. 2 258 13416 SNAT tcp -- * * 0.0.0.0/0 192.168.235.55 tcp dpt:4433 to:192.168.117.222
    6. 3 209 10868 SNAT tcp -- * * 0.0.0.0/0 192.168.18.43 tcp dpt:4434 to:192.168.117.222
    7. 4 0 0 SNAT tcp -- * * 0.0.0.0/0 192.168.235.38 tcp dpt:4435 to:192.168.117.222
    8. 5 0 0 SNAT tcp -- * * 0.0.0.0/0 192.168.18.73 tcp dpt:4436 to:192.168.117.222
    9. 6 0 0 SNAT tcp -- * * 0.0.0.0/0 192.168.18.73 tcp dpt:4437 to:192.168.117.222
    10. 7 0 0 SNAT tcp -- * * 0.0.0.0/0 192.168.18.73 tcp dpt:4438 to:192.168.117.222
    11. 8 0 0 SNAT tcp -- * * 0.0.0.0/0 192.168.18.73 tcp dpt:4439 to:192.168.117.222
    12. 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系统,其它系统可能需要根据实际回显情况进行适当的修改。

    1. [root@localhost]# vi monitor.sh
    2. #!/bin/bash
    3. ##__author__='daigjianbing'
    4. # 监控NAT服务器iptables-NAT-POSTROUTING链的目的IP端口和流量
    5. iptables -t nat -nvL POSTROUTING --line-numbers | \
    6. while IFS= read -r line
    7. do
    8. # 检查行是否包含规则,过滤有效行
    9. if [[ $line == *[0-9].*.*.* ]]
    10. then
    11. # 获取目的 IP
    12. ip=$(echo "$line" | awk '{print $10}')
    13. # 获取目的 端口
    14. port=$(echo "$line" | awk '{print $12}'|awk -F ':' '{print $2}')
    15. # 获取数据包和字节数量
    16. packets=$(echo $line | awk '{print $2}')
    17. bytes=$(echo $line | awk '{print $3}')
    18. echo "NAT业务的目的IP和端口: $ip:$port"
    19. echo "数据包总数: $packets"
    20. echo "字节数总数: $bytes"
    21. echo "------------------------------"
    22. fi
    23. done

     三、检测测试

    1. [root@CTNAT10 monitor]# sh monitor.sh
    2. NAT业务的目的IP和端口: 192.168.117.229:80
    3. 数据包总数: 9
    4. 字节数总数: 540
    5. ------------------------------
    6. NAT业务的目的IP和端口: 192.168.235.55:4433
    7. 数据包总数: 301
    8. 字节数总数: 15652
    9. ------------------------------
    10. NAT业务的目的IP和端口: 192.168.18.43:4434
    11. 数据包总数: 244
    12. 字节数总数: 12688
    13. ------------------------------
    14. NAT业务的目的IP和端口: 192.168.235.38:4435
    15. 数据包总数: 0
    16. 字节数总数: 0
    17. ------------------------------
    18. NAT业务的目的IP和端口: 192.168.18.73:4436
    19. 数据包总数: 0
    20. 字节数总数: 0
    21. ------------------------------
    22. NAT业务的目的IP和端口: 192.168.18.73:4437
    23. 数据包总数: 0
    24. 字节数总数: 0
    25. ------------------------------
    26. NAT业务的目的IP和端口: 192.168.18.73:4438
    27. 数据包总数: 0
    28. 字节数总数: 0
    29. ------------------------------
    30. NAT业务的目的IP和端口: 192.168.18.73:4439
    31. 数据包总数: 0
    32. 字节数总数: 0
    33. ------------------------------
    34. NAT业务的目的IP和端口: 192.168.18.73:4440
    35. 数据包总数: 0
    36. 字节数总数: 0
    37. ------------------------------

    效果如上,达到所需目标。

  • 相关阅读:
    基于分布式高可用集群的网购系统优化
    开开开开开,干
    JVM之运行时数据区 PC、虚拟机栈、本地方法栈
    Open3D 进阶(11)使用GMM-Tree算法对点云配准
    上犹县寺下镇泥坑村 国稻种芯·中国水稻节:江西赣州稻种尽收
    Hugging “Hugging Face“
    小程序:uniapp解决主包体积过大的问题
    SQL面试题练习 —— 用户行为路径分析
    leetcode刷题:二叉树15(找树左下角的值)
    这么简单,还不会使用java8 stream流的map()方法吗?
  • 原文地址:https://blog.csdn.net/forestqq/article/details/132831661