9

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

这是使用 iptables 'nat' 表,使用 IPv4 实现的。

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

4

6 回答 6

8

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

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

于 2010-09-09T04:10:05.693 回答
2

iptables 有一个 QUEUE 目标,您可以使用它来将数据包传送到用户空间。我不确定,但也许可以在那里实现一些东西。

除此之外,您可以尝试向内核添加一些内容以进行重定向。

于 2009-03-09T06:38:53.357 回答
2

你不能。引用squid-cache.org

IPv6 中根本不存在 NAT。按设计。

鉴于透明/拦截实际上是通过秘密地将 NAT 路由内外扭曲而获得的功能。没有 NAT 的协议无法以这种方式进行透明和拦截,这是很合乎逻辑的。

于 2009-03-25T11:35:16.910 回答
2

这是一个实现:

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

于 2009-06-24T21:06:34.533 回答
0

另一种丑陋的黑客:

  • 用 iptables 标记所有流量(似乎,IPv6 有 CONNMARK 目标)
  • 将所有标记的流量路由到 tun 设备
  • 在监听 tun 设备的守护进程中执行用户空间 NAT
  • ...
于 2009-03-10T18:00:28.687 回答
-2

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

于 2009-03-25T12:04:23.813 回答