我有一些 TCP 流只通过我的 Linux 机器。理论上,它只转发数据包。现在出现了一些新的想法,现在我认为,最好也改变它们的内容。
我的想法是转发的 tcp 流应该像传入流一样处理,然后由我自己的工具处理。
这有可能吗?我认为,在处理传入数据包的早期阶段,应该以某种方式处理数据包,就好像它已发送到机器而不是转发一样。
我有一些 TCP 流只通过我的 Linux 机器。理论上,它只转发数据包。现在出现了一些新的想法,现在我认为,最好也改变它们的内容。
我的想法是转发的 tcp 流应该像传入流一样处理,然后由我自己的工具处理。
这有可能吗?我认为,在处理传入数据包的早期阶段,应该以某种方式处理数据包,就好像它已发送到机器而不是转发一样。
@telcoM 解释了一个非常有用的解决方案:PREROUTING iptables 部分的 REDIRECT 目标。这会在决定目标之前影响传入数据包(它们将由本地套接字转发或处理)。
iptables -t nat -A PREROUTING -p tcp --dport <orig dest port> -j REDIRECT --to-ports <new local port>
他还提到,加密协议往往会解决这个问题,因为它可能导致 MiTM 攻击。然而,由于没有窃听或更改内容的意图,这可能不是一个严重的问题。
还有一个重要的事情是,这个解决方案破坏了原始目的端口和地址的信息。没有简单的方法可以显着不同地做到这一点。