繁体   English   中英

Linux 下 IPv6 流量的透明代理

[英]Transparent Proxy for IPv6 traffic under Linux

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

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

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

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

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

这是一个实现:

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

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

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

你不能。 引用squid-cache.org

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

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

另一种丑陋的黑客:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM