我有一个使用 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 是路由器接口