Iptables NAT 日志

Iptables NAT 日志

我有一个使用 Iptables(伪装)设置为路由器的盒子,记录所有网络流量。

问题:

从 LAN IP 到 WAN 的连接显示良好,即 SRC=192.168.32.10 -> DST=60.242.67.190

但是对于从 WAN 到 LAN 的流量,它将显示 WAN IP 作为源,但路由器 IP 作为目的地,然后路由器 -> LAN IP。

即 SRC=60.242.67.190 -> DST=192.168.32.199 SRC=192.168.32.199(路由器) -> DST=192.168.32.10

我该如何配置它才能正确记录对话?

SRC=192.168.32.10 -> DST=60.242.67.190 SRC=60.242.67.190 > DST=192.168.32.10

任何帮助表示感谢,欢呼

答案1

您需要的信息仅在连接跟踪表中。查看 conntrack(8) 了解如何获取它。不过,实时记录它可能有点棘手,也许可以使用 -j ULOG 和 ulogd。

答案2

要记录所需的所有信息,您需要两条日志规则。一条用于记录从 WAN 接口到路由器的数据,另一条用于记录从路由器到 LAN 主机的数据包。

换句话说,当数据包通过路由表时,目的地将被重写。如果我理解正确的话,您希望在数据包重写之前和之后查看该数据包的信息(这样您就可以知道它要去哪个主机)。

规则可能看起来像这样:显示 wan 到路由器的现有规则:

iptables -I INPUT -m state --state NEW -j LOG --log-prefix " New Incoming Packet"

新的附加规则:

iptables -I FORWARD -d LAN_HOST_IPADDR -m state --state NEW -j LOG --log-prefix " [>] NEW FORWARD"

或者为了获得额外的积分,并使事情变得更清晰一些,为转发到 LAN HOST 的流量创建一个新的链,如下所示:

iptables -t nat -N forward_to_mypc
iptables -t nat -A forward_to_mypc -m state --state NEW -j LOG --log-prefix " [>] New Forward"
iptables -t nat -A forward_to_mypc -j DNAT --to <address_of_mypc>

然后像这样使用新的链:

iptables -t nat -I PREROUTING -i <WANADAPTER> -p tcp --dport 3389 -j forward_to_mypc

这会将进入 wan 适配器的任何端口 3389 tcp 数据包转发到您的 LAN PC,如果该数据包是新的,则会被记录。

答案3

您可以尝试在 -j SNAT --to-ip ... 行之前登录 -t nat -L POSTROUTING

HTH 奥利弗

答案4

$iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE

其中 eth0 是路由器接口

相关内容