在维护网络时,经常需要运行透明代理。所谓透明代理是指一种代理方式,它“劫持”出站连接并通过本地服务运行它们。具体来说,我运行一个配置了Squid的Linux防火墙,使所有TCP/IP连接转发到80端口的流量都被Squid代理。
使用IPv4,可以通过iptables的“nat”表实现这一目标。
但是,IPv6的iptables没有“nat”表,因此无法使用相同的实现方法。有什么技术能够用于IPv6连接的透明代理?
--enable-linux-netfilter
和iptables -t mangle -j TPROXY
规则即可。iptables有一个QUEUE目标,您可以使用它将数据包传递到用户空间。我不确定,但也许可以在那里实现一些东西。
除此之外,您可以尝试添加一些内容到内核中以进行重定向。
NAT 在 IPv6 中根本不存在,这是出于设计考虑。
鉴于透明/拦截实际上是通过秘密扭曲 NAT 路由并将其反转的功能。因此,一个没有 NAT 的协议无法以这种方式实现透明度和拦截。
另一种丑陋的黑客方式:
编写自己的IPv6堆栈中NAT实现。
QUEUE
做什么,但基于tun的解决方案应该可以工作,尽管它可能不适合高负载。 - darkk