我想设置一个 IPv6-in-IPv4 SIT 隧道服务器。我仔细研究了Ubuntu IPv6 维基页面但一切都以客户端的身份连接到隧道为目标,而不是托管隧道。我想使用 6in4,因为它非常简单/多功能,并且似乎可以毫无问题地与大多数家用路由器/防火墙进行协商。
这将主要由我们的系统管理员使用,以便在家中通过本身不支持 IPv6 的 DSL/Cable 连接访问 IPv6。我想自己运行它的原因有两个:
- 我发现飓风电气隧道之类的隧道相当慢,有时还不可靠。
- 我不喜欢我们的流量通过 HE 的网络。我们有自己的核心传输网络和来自 RIPE 的 IPv6 分配,所以我们不妨利用它!
这将可供 5-10 个用户同时使用。
我所拥有的可以用作主机的设备:
- 思科 ISR
- 思科 ASA
- Juniper MX
- Linux/Windows 服务器 (最好是 Ubuntu)
提前致谢。
答案1
如果我没记错的话,SIT 是对称的:两侧都做同样的事情。
配置应该非常简单:
思科 IOS:
interface Tunnel0
description 6in4 to <client>
no ip address
ipv6 enable
ipv6 address 2001:db8:::1/64
tunnel source <local ipv4>
tunnel destination <client ipv4 addr>
tunnel mode ipv6ip
瞻博网络 JunOS
interfaces {
ip-0/1/0 {
unit 0 {
tunnel {
source <local ipv4>;
destination <client ipv4 addr>;
}
family inet6 {
address 2001:db8::1/64;
}
}
}
}
Linux iproute2:
ip tunnel add tun-6in4 mode sit remote <client ipv4 addr> local <local ipv4>
ip link set tun-6in4 up
ip addr add 2001:db8:::1/64 dev tun-6in4
我没有 ASA 配置经验,但这也应该是可行的。
然而,6in4 有几个缺点:
中心节点上有 N 个隧道,用于连接 N 个对等体
对于动态 IP 客户端来说,没有简单的方法来更新对等 IP。
您可能需要了解动态 VPN 技术,例如 OpenVPN(解决了问题 2,尽管设备将动态生成)或锡克(解决两个问题),或者任何其他能够使用 Tap 设备封装以太网(因此是 IPv6)的设备。
答案2
为 ISP 员工提供 IPv6 家庭连接非常重要的。
6in4 是对称的,因此您可以在两端以相同的方式设置隧道(在两端之间形成虚拟“电缆”)。然后像往常一样进行路由:“客户”端使用隧道作为默认网关,“服务器”将前缀路由到相应的隧道。最后一点可能需要重新分配一些(手动或自动)路由。
在 Cisco IOS 上,redistribute static
在您的路由协议配置中执行此操作是一种简单的方法,但您可能需要过滤重新分配。我通常在 BGP 中重新分配“客户”路由。它使 IGP(如 ISIS 或 OSPF)更清洁,这将有助于在链路抖动或故障后加快核心的收敛速度。而且 BGP 提供了更好的过滤选项。例如,通过将社区附加到重新分配的路由。
稍微扩展一下 petrus 给出的答案。我将给出 Cisco 符号,但这在其他操作系统中也以大致相同的方式工作。
您可以拥有编号和未编号的链接。编号链接可能会使调试更容易,但它会使您的寻址计划更复杂一些。在这两种情况下,您都必须将一些地址空间委托给用户。链接上的地址仅用于在链路,并且用户可能还需要链路后面的网络地址。因此,将/56
或路由/48
到链路下方。
让我们从一个无编号的链接开始。使用 创建链接以ipv6 enable
在链接上创建链接本地地址。在“服务器”端类似这样:
interface Tunnel1
description 6in4 to <client-1>
no ip address
ipv6 enable
tunnel source <local ipv4>
tunnel destination <client-1 ipv4 addr>
tunnel mode ipv6ip
interface Tunnel2
description 6in4 to <client-2>
no ip address
ipv6 enable
tunnel source <local ipv4>
tunnel destination <client-2 ipv4 addr>
tunnel mode ipv6ip
ipv6 route 2001:db8:a001::/48 Tunnel 1
ipv6 route 2001:db8:a002::/48 Tunnel 2
router bgp 65530
address-family ipv6
redistribute static
在“客户端”方面:
interface Tunnel1
description 6in4 to <server>
no ip address
ipv6 enable
tunnel source <client-1 ipv4>
tunnel destination <server ipv4 addr>
tunnel mode ipv6ip
interface FastEthernet0/0
ipv6 address 2001:db8:a001:1::1/64
ipv6 route ::/0 Tunnel 1
现在,使用编号链接也完全一样。好处是您可以更轻松地 ping 隧道的另一个端点。在“服务器”端,如下所示:
interface Tunnel1
description 6in4 to <client-1>
no ip address
ipv6 address 2001:db8:0:a001::1/64
tunnel source <local ipv4>
tunnel destination <client-1 ipv4 addr>
tunnel mode ipv6ip
interface Tunnel2
description 6in4 to <client-2>
no ip address
ipv6 address 2001:db8:0:a002::1/64
tunnel source <local ipv4>
tunnel destination <client-2 ipv4 addr>
tunnel mode ipv6ip
ipv6 route 2001:db8:a001::/48 2001:db8:0:a001::2
ipv6 route 2001:db8:a002::/48 2001:db8:0:a002::2
router bgp 65530
address-family ipv6
redistribute static
redistribute connected
在“客户端”方面:
interface Tunnel1
description 6in4 to <server>
no ip address
ipv6 address 2001:db8:0:a001::2/64
tunnel source <client-1 ipv4>
tunnel destination <server ipv4 addr>
tunnel mode ipv6ip
interface FastEthernet0/0
ipv6 address 2001:db8:a001:1::1/64
ipv6 route ::/0 2001:db8:0:a001::1
为了方便起见,我选择了2001:db8:0:a001::/64
与委派相关的点对点链接2001:db8:a001::/48
。您可以选择任何您喜欢的前缀,但使用 IPv6 这样大的地址空间保持事物可识别性会有所帮助...