stream量redirect与Linux? (男人在中间)

我有以下情况:

我有一个有两个网卡的Linux机器,所有networkingstream量都通过一个网卡进入另一个网卡。 所以基本上我已经是中间那个人了。

但是现在, 我想将所有具有目标IP地址“xyz”和目标端口500的stream量redirect到我本地机器上的端口500,这是我自己的deamon正在运行的地方。 然后,在某个事件发生之后,我想停止redirect(通过删除规则等),让交通像所有其他交通一样通过。

我想知道我是否可以使用iptables或其他已经包含在Linux中的工具来做到这一点? 到目前为止我还没有find一个可行的解决scheme 我也有问题以root用户身份从system()调用的shell脚本运行命令。 即使我将脚本的所有权和权限更改为root,它也不会以root身份启动。 我想用shellscript撤消redirect(当我设法得到它的工作)。

这就是你如何做iptables的问题:

 sysctl net.ipv4.ip_forward=1 iptables -t nat -A PREROUTING -p tcp -d xxxx --dport 500 -j DNAT --to-destination 127.0.0.1:500 iptables -t nat -A POSTROUTING -j MASQUERADE 

至于你的shell脚本问题,你要么设置脚本(坏主意),要么使用popen()运行sudo /path/to/yourscript并configurationsudo以允许运行C程序的用户执行此操作。

你应该可以用nat表中的iptables规则和PREROUTING改变来做到这一点。 像这样的东西:

 iptables -t nat -A PREROUTING -d xyz -p tcp --dport 500 -j DNAT --to-destination zyx:1111 

这是假设你有通过sysctl启用ipv4转发,我假设你是因为stream量已经通过路由器。

我目前无法testing,但这应该是一个很好的起点。