iptables:如何将所有 TCP 流量重新重定向到 127.0.0.1:1234?

iptables:如何将所有 TCP 流量重新重定向到 127.0.0.1:1234?

我正在尝试制定一条 iptables 规则,以便将所有通过 eth0 传入的 tcp 流量重定向到 127.0.0.1:1234。然后我将使用我的 C 程序监听 127.0.0.1 并将原始数据包打印到控制台。这可能吗?还是我完全用错了方法?

请记住,我对 iptables 的了解非常有限。

以下是我迄今为止尝试过的:

sudo iptables -A INPUT -s 127.0.0.1 -p tcp -j DROP

但我不想 DROP - 我想转发到 127.0.0.1:1234!

答案1

首先启用路由:

 echo 1 > /proc/sys/net/ipv4/ip_forward

尝试这个:

iptables -A PREROUTING -t nat -p tcp -i eth0  -j DNAT --to 127.0.0.1:1234

可选择隐藏真实IP:

iptables -t nat -A POSTROUTING -j MASQUERADE

答案2

更好的想法是配置 iptables 以使用 netlink 将数据包发送到您的进程(在 iptables 手册页中搜索 NFLOG)或仅使用 libpcap 捕获原始流量。

这样您就不会丢失信息并且可以使事情变得简单。

相关内容