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

Dog*_*rld 8 linux iptables

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

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

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

是否可以查询iptables以检索最初预期的收件人?任何其他可能解决这个问题的方法也很感激!

Cas*_*per 11

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

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 );
Run Code Online (Sandbox Code Playgroud)

  我认为你应该能够将其转换为python类似的东西.