我正在编写一个通用的应用程序代理.
我想将它用作透明代理,我的原始计划是使用带有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类似的东西.