我尝试在我的 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 地址,就像防火墙设备一样。
- 用户PC
- 网络服务器
- 用户PC(NAT后)
- 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:"
}
}
我想我需要添加一些语句或关键字之类的东西。我必须如何以及向此元行添加什么?我的想法正确吗?
如果有人能告诉我,我将不胜感激。谢谢。