华三的NAT日志读取

近期有个需求,需要记录华三防火墙的nat日志,以方便溯源。防火墙是华三的ICG3000,配置如下:

nat log enable
nat log flow-begin
userlog flow export version 3
userlog flow export source-ip 1.1.1.1
userlog flow export host 2.2.2.2 port 5140

这样配置后,NAT日志就会以二进制的形式发到2.2.2.2上,端口号是5140。注意我们用的nat日志的版本是3。版本有1、3和5三个,其中3和5基本一样,只是版本5会多点信息过来。接下来是对这个NAT日志的读取,代码如下:

int2ip = lambda x: '.'.join([str(x/(256**i)%256) for i in range(3,-1,-1)])

def getDataV3(cursor,data):
    
    if len(data)<44:
        return None
    #NAT转换前的源IP地址
    mydata=data[20:42]
    SourceIP,SrcNatIP,DestIP,DestNatIP,SrcPort,SrcNatPort,DestPort=struct.unpack( "!LLLLHHH" ,mydata)
    #strTitle="natLog"
    strSourceIP=int2ip(SourceIP)
    strSrcNatIP=int2ip(SrcNatIP)
    strDestIP=int2ip(DestIP)
    strMsg="%s(%s:%d)->%s:%d" %(strSourceIP,strSrcNatIP,SrcNatPort,strDestIP,DestPort)

SourceIP是源IP地址,SrcNatIP是NAT后的公网P,DestIP是目标IP,DestNatIP是NAT后的目标IP。在一般场景下DestNatIP和DestIP应该是一样的。

### H3C 设备 NAT 实验配置教程 #### 配置概述 网络地址转换 (NAT) 是一种用于实现私有网络与公共网络之间通信的技术。在华三(H3C)设备上,可以通过命令行界面完成静态 NAT、动态 NAT 和 PAT 的配置。 以下是基于引用中的实验场景设计的一个完整的 NAT 配置流程: --- #### 基本环境准备 假设存在如下拓扑结构: - 路由器 R3 连接两个网段:内部局域网 `192.168.1.0/24` 和外部公网 `100.2.2.0/24`。 - 接口 G0/0 对应外网 IP 地址 `100.2.2.3/24`。 - 接口 G0/1 对应内网 IP 地址 `192.168.1.3/24` 或作为默认网关 `192.168.1.254/24`。 接口基本配置已通过以下命令完成[^1][^2]: ```bash [R3]int g0/0 [R3-GigabitEthernet0/0]ip add 100.2.2.3 24 [R3-GigabitEthernet0/0]quit [R3]int g0/1 [R3-GigabitEthernet0/1]ip add 192.168.1.254 24 [R3-GigabitEthernet0/1]quit ``` --- #### 静态 NAT 配置 如果需要将特定的内部主机映射到固定的外部 IP 地址,则可以使用静态 NAT。 ##### 步骤说明 1. 定义地址池或指定外部 IP 地址。 2. 创建 ACL 来匹配需要被翻译的流量。 3. 应用 NAT 策略至出口接口。 具体命令如下: ```bash [H3C]acl number 2000 [H3C-acl-basic-2000]rule permit source 192.168.1.3 0 [H3C-acl-basic-2000]quit [H3C]nat address-group 1 100.2.2.100 100.2.2.100 [H3C]interface GigabitEthernet 0/0 [H3C-GigabitEthernet0/0]nat outbound 2000 address-group 1 no-pat [H3C-GigabitEthernet0/0]quit ``` 此配置实现了将内网主机 `192.168.1.3` 映射为固定公网 IP `100.2.2.100` 的功能。 --- #### 动态 NAT 配置 当多个内部主机共享一组外部 IP 地址访问互联网时,可采用动态 NAT。 ##### 步骤说明 1. 定义可用的外部 IP 地址范围。 2. 使用 ACL 匹配需转换的源地址。 3. 将策略绑定到出口接口。 示例命令如下: ```bash [H3C]acl number 2001 [H3C-acl-basic-2001]rule permit source 192.168.1.0 0.0.0.255 [H3C-acl-basic-2001]quit [H3C]nat address-group 2 100.2.2.101 100.2.2.110 [H3C]interface GigabitEthernet 0/0 [H3C-GigabitEthernet0/0]nat outbound 2001 address-group 2 [H3C-GigabitEthernet0/0]quit ``` 该配置允许整个子网内的主机随机分配到定义好的外部 IP 地址范围内[^2]。 --- #### PAT(端口复用型 NAT) PAT 又称为 NAPT,在单个外部 IP 上支持更多会话连接。 ##### 步骤说明 1. 设置 ACL 控制哪些流量参与 PAT。 2. 绑定 PAT 到出口接口并启用端口复用模式。 示例命令如下: ```bash [H3C]acl number 2002 [H3C-acl-basic-2002]rule permit source 192.168.1.0 0.0.0.255 [H3C-acl-basic-2002]quit [H3C]interface GigabitEthernet 0/0 [H3C-GigabitEthernet0/0]nat outbound 2002 [H3C-GigabitEthernet0/0]quit ``` 在此情况下,默认启用了 PAT 模式,所有内部主机都将共用路由器的外网 IP 地址 `100.2.2.3` 访问外界[^1]。 --- #### 测试验证 为了确认 NAT 是否正常工作,可以在路由器上执行调试命令查看数据包处理情况: ```bash [H3C]debugging nat [H3C]display nat session all ``` 以上操作可以帮助管理员实时监控当前活动的 NAT 表项以及其对应关系。 --- ### 注意事项 - 如果涉及安全需求,请考虑额外部署防火墙规则来保护内外部资源交互过程的安全性。 - 当前配置仅适用于 IPv4 环境;对于 IPv6 场景下的 NAT 支持则另作讨论。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值