Linux下的IPv6流量透明代理

时间:2009-03-09 06:04:07

标签: linux ipv6 nat

在维护网络时,运行透明代理通常是一件有用的事情。透明代理我指的是一个“劫持”传出连接并通过本地服务运行它们的代理。具体来说,我运行一个配置了squid的linux防火墙,以便端口80上的所有tcp / ip连接都由squid代理。

这是使用iptables'nat'表,使用IPv4。

但IPv6的iptables没有'nat'表,所以我不能使用相同的实现。我可以使用什么技术透明地代理IPv6连接的流量?

6 个答案:

答案 0 :(得分:8)

可行的方法是使用iptables中的TPROXY规则,文档可在此处获取:

这应该支持Squid(> =版本3.2)。使用--enable-linux-netfilteriptables -t mangle -j TPROXY规则。

答案 1 :(得分:2)

iptables有一个QUEUE目标,您可以使用该目标将数据包传递到用户空间。我不确定,但也许可以在那里实施。

过去,您可以尝试向内核添加内容以进行重定向。

答案 2 :(得分:2)

你做不到。引自squid-cache.org

  

IPv6在IPv6中根本不存在。通过   设计。

     

鉴于透明度/拦截   实际上是一个获得的功能   秘密扭曲内部的NAT路线   出去和回到自己身上。真是太棒了   逻辑上没有NAT的协议   不能做透明度和   拦截那种方式。

答案 3 :(得分:2)

这是一个实现:

http://www.suse.de/~krahmer/ip6nat/

答案 4 :(得分:0)

另一种丑陋的黑客攻击:

  • 使用iptables标记所有流量(似乎有IPv6的CONNMARK目标)
  • 将所有标记的流量路由到tun设备
  • 在监听tun device的守护进程中执行用户空间NAT
  • ...

答案 5 :(得分:-2)

在IPv6堆栈中编写自己的NAT实现。