如何使用firewalld SNAT记录IP地址?

如何使用firewalld SNAT记录IP地址?

我尝试在我的 CentOS 8 PC 上使用firewalld 设置 SNAT,以使 NAT 路由器如下所示。

用户通过CentOS8访问Web服务器。

[UserPC]---(192.168.0.0/24)---[CentOS 8]---(10.0.0.0/24)---[Web Server]

我想在一行记录 4 个 IP 地址,就像防火墙设备一样。

  1. 用户PC
  2. 网络服务器
  3. 用户PC(NAT后)
  4. Web 服务器(NAT 之后,但在本例中我不使用 DNAT。)

我在/var/log/firewall文件中找到了1.UserPC和2.WebServer。但我无法记录“3.UserPC(NAT之后)”和“4.Web服务器(NAT之后)”。

我的 CentOS8 PC 有 2 个网卡。

  • 内部接口:192.168.0.1/24
  • 外部 I/F : 10.0.0.1/24 , 10.0.0.2/24 , 10.0.0.3/24 (3 个 IP 地址)

这是我的防火墙命令规则。

ipv4 filter FORWARD 0 -i <Internal I/F> -o <External I/F> -j ACCEPT
ipv4 filter FORWARD 0 -m tcp -p tcp -j LOG --log-prefix 'FORWARD LOG:'
ipv4 filter FORWARD 0 -i <External I/F> -o <Internal I/F> -m state --state RELATED,ESTABLISHED -j ACCEPT
ipv4 nat PREROUTING 0 -m tcp -p tcp -j LOG --log-prefix 'PREROUTING LOG:'
ipv4 nat POSTROUTING 0 -s 192.168.0.0/24 -o <External I/F> -j SNAT --to-source 10.0.0.3
ipv4 nat POSTROUTING 0 -m tcp -p tcp -j LOG --log-prefix 'POSTROUTING LOG:'
ipv4 nat OUTPUT 0 -m tcp -p tcp -j LOG --log-prefix 'OUTPUT LOG:'

我检查了WebServer中的access.log,源IP地址是“10.0.0.3”。我不知道firewalld规则的顺序不好,我改变了规则的顺序。但效果并不好。

接下来我检查了 nft list 规则集,发现了以下规则。

table ip nat {
    chain PREROUTING{
        blahblahblah
    }
    chain INPUT{
        blahblahblah
    }
    chain POSTROUTING{
        type nat hoook postrouting priority srcnat; policy accept;
        oifname "External I/F" ip saddr 192.168.0.0/24 counter packets 2 bytes 120 snat to 10.0.0.1
        meta l4proto tcp counter packets 100 bytes 0 log prefix "POSTROUTING LOG:"
    }
}

我想我需要添加一些语句或关键字之类的东西。我必须如何以及向此元行添加什么?我的想法正确吗?

如果有人能告诉我,我将不胜感激。谢谢。

相关内容