在维护网络时,运行透明代理通常是一种权宜之计。透明代理是指“劫持”传出连接并通过本地服务运行它们的代理。具体来说,我运行一个配置了 squid 的 linux 防火墙,以便端口 80 上的所有 tcp/ip 连接都由 squid 代理。
这是使用 iptables 'nat' 表,使用 IPv4 实现的。
但是 IPv6 的 iptables 没有“nat”表,所以我不能使用相同的实现。我可以使用什么技术来透明地代理 IPv6 连接的流量?
一种可行的方法是使用 iptables 中的 TPROXY 规则,文档可在此处获得:
这应该支持 Squid(>= 版本 3.2)。使用--enable-linux-netfilter
和iptables -t mangle -j TPROXY
规则。
iptables 有一个 QUEUE 目标,您可以使用它来将数据包传送到用户空间。我不确定,但也许可以在那里实现一些东西。
除此之外,您可以尝试向内核添加一些内容以进行重定向。
你不能。引用squid-cache.org:
IPv6 中根本不存在 NAT。按设计。
鉴于透明/拦截实际上是通过秘密地将 NAT 路由内外扭曲而获得的功能。没有 NAT 的协议无法以这种方式进行透明和拦截,这是很合乎逻辑的。
另一种丑陋的黑客:
在 IPv6 堆栈中编写您自己的 NAT 实现。