TPROXY与ip_conntrack

socket的IP_TRANSPARENT选项实现代理》中,介绍了IP_TRANSPARENT可以使得保留源IP地址的方法,但是使用了ip_conntrack,我们知道ip_conntrack是要么全部conntrack,要么一个不conntrack的,除非你使用了notrack target,但是判决到底使不使用notrack也需要一番功夫,有没有什么办法可以不使用ip_conntrack却又可以使用IP_TRANSPARENT的呢?因为写到了这里,答案显然是有的,那就是TPROXY,这个TPROXY其实也是一个Netfilter模块,它就是平添了一次查找,那就是一个流是不是本地socket相关的,和ip_conntrack没有关系,不过依然要针对每一个数据包的五元组来查找一下是否属于本地的一个socket,看起来显然这是一个轻量级的ip_conntrack(这只是第一印象,到底怎么回事,这里不说,测试了才知道ip_conntrack是多么的高效)。

你可能感兴趣的:(proxy)