在REDIRECT之后从iptables检索原始目的地

时间:2011-06-29 10:20:45

标签: linux iptables

我正在编写一个通用的应用程序代理。

我想将它用作透明代理,我的原始计划是使用带有REDIRECT规则的iptables转发到我的应用程序代理的所有连接。

这里的问题当然是我的应用程序代理丢失了有关预期目的地的信息。

是否可以查询iptables以检索最初预期的收件人? 对此问题的任何其他可能的解决方案也表示赞赏!

1 个答案:

答案 0 :(得分:10)

也许这就是你要找的东西?

  

http://www.network-builders.com/iptables-redirect-original-destination-ip-t69515.html

     

读取TCP套接字的SO_ORIGINAL_DST选项   或者在/ proc / net / ip_conntrack中查找连接跟踪表。

#include <linux/netfilter_ipv4.h>

struct sockaddr_in addr;
bzero((char *) &addr, sizeof(addr));
addr.sin_family = AF_INET;
socklen_t addr_sr = sizeof(addr);
getsockopt(fd, SOL_IP, SO_ORIGINAL_DST, &addr, &addr_sz );

我认为你应该能够将它转换成类似于python的东西。