首页 文章

克隆并将数据包转发到多个IP地址

提问于
浏览
7

我正在尝试将所有传入的TCP数据包转发到多个IP地址 .

Build :

A - 10.10.10.10
B - 10.10.10.11
C - 10.10.10.12
D - 10.10.10.13

我希望B,C和D接收(在端口8000上) A 的端口12345上的所有传入数据包 . 理想情况下,我希望A做到这一点 .

我可以在A上使用此规则转发到一台机器:

iptables -t nat -A PREROUTING -p tcp --dport 12345 -j REDIRECT --to 10.10.10.11:8000

我也可以使用TEE选项克隆数据包:

iptables -t mangle -A PREROUTING -p tcp --dport 8000 -d 10.10.10.11 -j TEE --gateway 10.10.10.12

到目前为止一切都还可以 . 问题是C将接收目标IP为B而不是C的数据包 . 此外,我不知道如何转发到D和/或更多其他目的地 .

How can I make A, with iptables rules, send all the incoming packets on port 12345 to all the other machines (B,C and D) to port 8000?

1 回答

  • 0

    你必须使用POSTROUTING:

    iptables -t nat -A POSTROUTING -p tcp --dports 8080 -j SNAT --to-source 10.10.10.12
    

    但你需要找到一种方法来区分哪个数据包用于B或C,否则它们将以C的IP到达 . 如果你有不同的接口,应该用接口来完成;我想你改变网关是这样的,例如:

    iptables -t nat -A POSTROUTING -o eth3 -p tcp --dports 8080 -j SNAT --to-source 10.10.10.12
    

    因此,只有传送到接口eth3的数据包,将其映射到C的路由路径,才会将目标IP更改为C ip .

相关问题