仅从一个进程转发stream量

我想检查和修改发送给另一个进程的http请求。 为此,我有一个在本地主机端口8080 / tcp上运行的代理。 进程所有者是root,并且它发送的应用程序在localhost port 50000 / tcp上运行。 该过程产生新的子过程,这就是为什么我select上述路线。 我不能使用--pid-owner 。 这个iptables命令怎么样呢?

或者换句话说:

情况:

  • 有一个进程p2,使用HTTP与另一个进程p1进行通信。
  • p2和p1在本地主机上运行
  • p1在50000 / tcp上运行
  • p2 – > p1

目标:

  • 通过代理运行stream量。
  • 代理也在本地主机上运行。
  • 端口8080 / tcp。
  • p2 – >代理 – > p1

难点:

  • 我没有select在p2中指定代理。
  • 一切运行在本地主机上

我们需要拦截到localhost TCP / 50000的P2连接,并将它转发到在TCP / 8080上监听的PROXY – 必须configurationPROXY来将请求转发到LOCALHOST TCP / 5000。

为此,我们需要激活localhost端口转发到IPTABLES,改变以下系统参数:

 sysctl -w net.ipv4.conf.all.route_localnet=1 

之后,这个IPTABLES命令应该把P2连接到TCP / 50000,并且对在端口TCP / 8080上监听的PROXY做NAT:

 iptables -t nat -A OUTPUT -m addrtype --src-type LOCAL --dst-type LOCAL -m owner --uid-owner 0 -p tcp --dport 50000 -j DNAT --to-destination 127.0.0.1:8080 

此configuration也可以使用外部PROXY(意味着不在运行P1和P2的同一台计算机上运行)将IP地址127.0.0.1更改为外部IP地址:

 --to-destination XXXX:8080 

希望这可以帮助。