我有一个路由器LEDE。 在那里,我在NAT环境中设置了默认的Portforwarding。 当目的地得到一个请求时,源IP已经被重新写入了路由器的IP地址,并且源端口已经被重写到路由器的一个随机端口。 保留源IP和端口是非常棒的。 可悲的是,当我不得不使用NAT时,这似乎是不可能的。
现在,我search一个方法来获取原始的源IP和端口基于在路由器上打开的伪装端口。 这在理论上是可能的,因为它是在答案包中被回写的信息。 有没有一个命令如何看待? 或者我将不得不重写iptables? 我寻找这样的东西:
$ iptables -t nat --lookup-masquerading-table --masqueraded-port 98765 Original Source-IP: 192.0.2.146 Original Source-Port: 7890 Original Dest-IP: 198.51.100.123 Original Dest-Port: 1234 Masqueraded Source-IP: 10.0.0.1 Masqueraded Source-Port: 98765 Masqueraded Dest-IP: 10.0.0.2 Masqueraded Dest-Port: 1234
提前致谢!
可以在/proc/net/ip_conntrack或/proc/net/nf_conntrack看到伪装的NAT条目。 该文件对于IPTables跟踪的每个连接都有一行。 每行显示特定连接的传入和传出数据包的地址/端口信息。
如果传入的IP地址与传出的IP地址不同,那么这是一个NAT连接,您可以从中parsing出您需要的信息。
还有一个工具netstat-nat ,它处理上面的过程,并简单地显示了通过设备的NAT连接。 还可以通过命令行选项进一步过滤连接。