如何在 Linux 网关上设置 6in4 / 6to4 隧道服务器?

如何在 Linux 网关上设置 6in4 / 6to4 隧道服务器?

我有原生 IPv6 连接(/64 前缀),并且一直在尝试在 OpenWrt 路由器后面设置 IPv6 连接。但我发现我无法使用 ebtables 传递所有 IPv6 流量(固件限制)或使用 ndppd 代理所有 ICMPv6 请求(邻居请求/广告,我无法控制的上游路由器由于未知原因不接受它们)。

看来我现在唯一的选择就是隧道传输所有 IPv6 流量。以下是网络拓扑:

   互联网 -- 路由器 -- 电脑
            wan 前缀::/64
            湾 219.242.xx
            局域网 10.224.0.1 10.224.36.223

我正在尝试在两个 10.224.xx 地址之间创建一个隧道,以隧道传输所有 IPv6 流量,从而获得 IPv6 连接。

我搜索了一些教程,但我不知道在设置隧道时应该使用哪个地址作为参数。

PC是Windows系统,如果能提供配置示例就更好了。

(网关运行的是 OpenWrt,但我认为它的工作原理几乎像 Linux 网关?)

答案1

隧道不能解决您所面临的问题。

您将通过隧道连接两台机器,而这两台机器之间有直接的物理连接,因此首先就不需要隧道了。任何您想在隧道上执行的寻址都可以直接在两个端点之间的以太网连接上完成。而且在以太网上而不是在隧道上执行此操作可以消除配置中的额外复杂性以及封装开销。

您确实有另一个问题,即您没有任何地址可分配给该连接。但使用以太网上的 IPv6 或隧道上的 IPv6 不会改变这一点。它们都需要相同数量的地址(除了通过以太网执行此操作将允许整个 LAN 使用该前缀)。

如果要正确执行此操作,您需要 LAN 的前缀,该前缀必须路由到您的路由器。根据您的描述,您目前只有一个 WAN 的链接前缀。这还不够,因为您需要另一个 LAN 的链接前缀,该前缀必须从路由到您的路由器的前缀中获取。

我知道一种用于设置此路由前缀的标准化协议,即 DHCPv6。路由器应在其 WAN 接口上发送 DHCPv6 请求并请求路由前缀。路由的 /64 足以满足您现在要做的事情,但您也可以立即使用 /48、/56 或 /60,因为您可能很快就会发现 LAN 上不止一个 /64 的用途。具有前缀委派的 DHCPv6 的替代方案是让您的 ISP 为路由到路由器的前缀配置静态路由。

如果您发现您的 ISP 没有任何 DHCPv6 服务器,或者它甚至不会委派 /60 或 /64,那么您应该联系您的 ISP 询问如何将前缀路由到您的路由器。

如果他们拒绝在您请求时将前缀路由到您的网络,那么是时候寻找解决方法了。我知道的两种解决方法是桥接和邻居发现代理。从 ISP 的角度来看,它们的行为相同,并且会导致路由器的内存消耗增加。他们本可以通过将前缀路由到您来避免额外的内存使用。

您说您的路由器固件不支持这两种解决方法。我认为这意味着您需要升级到支持它的固件。

您还询问了与此无关的 6to4。我认为 6to4 与您的设置基本无关。不过,如果您可以在路由器固件上启用 6to4 中继,我会在路由器上启用 6to4 中继,因为这样在与使用 6to4 的人通信时,您的通信会更加可靠。出于同样的原因,我会启用 Teredo 中继,如果您需要从某个仅 IPv4 网络上的笔记本电脑连接回家,这将非常方便。

答案2

是否可以将您的 OpenWRT 配置为网桥,以便它只传递 IPv6 流量,但将公有和私有 IP 添加到路由器网桥接口,这样您仍然可以拥有带有 NAT 的私有 IPv4 网络,OpenWRT 可以充当单臂路由器。否则,下一步可能是让您的 NDP 代理工作,您确定 Linux 内核没有消耗 NDP 流量吗?检查 /proc/sys/net/ipv6/conf/*/accept_ra 以查看切换内核处理路由器广告是否会改变行为。我不确定你为什么要看 ebtables,除非你想在网桥上过滤第 2 层流量,默认情况下,所有流量在第 2 层都被允许,并且大多数过滤发生在第 3 层的 iptables 中。如果您确实想过滤流量,您可以根据 /etc/ethertypes 中描述的类型仅选择 IPv6 流量,如果您想过滤 IPv4,请确保也允许 ARP,它是一种不同的以太网协议。

相关内容