根据端口重定向流量(iptables)

根据端口重定向流量(iptables)

我目前正在开发一个可以进行 ARP 投毒的应用程序,以便成为中间人并进行一些智能过滤。我将分步详细解释这个问题,以便让大家知道发生了什么。

我有 4 个主机,分别是:

  • A -192.168.1.1
  • B-192.168.1.2
  • C -192.168.1.3
  • D-192.168.1.4

主机 A 是中间人,因此网络内的所有流量都将重定向到他。

假设主机 B 想要 ping 主机 C,但由于主机 A 是 MITM,因此 ping 将被重定向到主机 A。主机 A 上的应用程序必须能够将 ping 数据包转发到主机 C(其原始预定路由)。

但是,应用程序可以决定要转发的某些数据包。

例如,如果主机 B 这次想要 FTP 到主机 C,我希望主机 A 能够改变数据包的目标 IP 地址,以便主机 B 的数据包实际上发往主机 D(仅作为示例,ftp 连接可能不起作用,没关系)

基本思想是应用程序能够根据协议重定向流量。

问题就出在这里,我不确定该怎么做。我读过 iptables 的相关内容,似乎(如果我错了,请纠正我)iptables 能够使用预路由功能来篡改数据包的目标地址。

我还对一个名为 libnetfilter_queue(nfqueue)的特定模块进行了一些搜索,它似乎也能够处理数据包,尽管我并不完全清楚如何进行。

有人能建议我采取什么正确的方法吗?如果可能的话,您能否提供一些能够解决上述场景中的问题的示例?

答案1

如果您所说的确实如此,并且所有流量都通过主机 A,那么您可以在主机 A 上使用 iptables 将流量重定向到其他主机。

fe:将端口 80 上的流量从 D --> C 重新路由到 B

iptables -t NAT -A PREROUTING -p tcp --dport 80 -s 192.168.1.4 -d 192.168.1.3 -j DNAT --to-destination 192.168.1.2:80 

至于你的例子(从 B 到 C 的 FTP)

iptables -t NAT -A PREROUTING -p tcp --dport 21 -s 192.168.1.2 -d 192.168.1.3 -j DNAT --to-destinatin 192.168.1.4:21

将所有来自 B 发往 C 的流量重新路由至 D:

iptables -t NAT -A PREROUTING -p tcp -s 192.168.1.2 -d 192.168.1.3 -j DNAT --to-destination 192.168.1.4

如果需要更多例子我可以再举一些

相关内容