Linux下的IPv6流量透明代理

9

在维护网络时,经常需要运行透明代理。所谓透明代理是指一种代理方式,它“劫持”出站连接并通过本地服务运行它们。具体来说,我运行一个配置了Squid的Linux防火墙,使所有TCP/IP连接转发到80端口的流量都被Squid代理。

使用IPv4,可以通过iptables的“nat”表实现这一目标。

但是,IPv6的iptables没有“nat”表,因此无法使用相同的实现方法。有什么技术能够用于IPv6连接的透明代理?

6个回答

8

2

2

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

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


2
你无法这样做。引用自 squid-cache.org

NAT 在 IPv6 中根本不存在,这是出于设计考虑。

鉴于透明/拦截实际上是通过秘密扭曲 NAT 路由并将其反转的功能。因此,一个没有 NAT 的协议无法以这种方式实现透明度和拦截。


0

另一种丑陋的黑客方式:

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

1
这真的可能吗?你有任何关于如何开始实现支持IPv6的TUN的想法吗? - Jerub
在我看来,这应该是可能的。Linux tun/tap驱动程序似乎支持IPv6。如果我错了并且不支持IPv6,请尝试使用tap驱动程序(虚拟以太网)。我不知道可以用iptables QUEUE做什么,但基于tun的解决方案应该可以工作,尽管它可能不适合高负载。 - darkk

-3

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接