我有大约 40 亿个 IPV6 ip,我想将其中一些分配给不在同一个 DC 中的外部 vps,这些 ipv6 ip 也在运行 ubuntu 10.04 的 VPS 上
我该怎么做?例如,将我的 VPS 上的 10 个 ipv6 ips 分配给另一个外部 VPS,以便外部 VPS 可以使用它们??
答案1
除非您对地址空间的路由有一定的控制权,否则所有 IPv6 流量都必须通过您的 Ubuntu 机器传输。
一个简单的方法是使用 GRE 隧道(如果您的所有客户端都有公共可访问地址)或 openvpn。由于您的机器不在同一个数据中心,因此最好在 tun 模式下使用 openvpn。
首先,您需要为每个站点选择一个 IPv6 子网和前缀。您说您有大约 40 亿个地址,那将是 /96 前缀。假设您的网关服务器有地址2001:xx..xx::1/96
。决定分配给其他服务器的前缀。例如,使用 /112 将让您拥有 65k 个 vps,每个 vps 有 65k 个地址。假设您的第一个客户端将有2001:xx..xx:1::/112
。在此块中,2001:xx..xx:1::1/112
将由网关使用,其余的可供客户端使用。(从技术上讲可以避免这种情况,但通常就是这样做的)
以下是 Ubuntu 的两个教程,分别用于6to4和 研究生入学考试 (GRE)隧道。你想要的是介于两者之间的某种东西。
在客户端上,使用类似
auto tun0
iface tun0 inet6 static
address 2001:xx..xx:1::2
netmask 112
pre-up iptunnel add tun0 mode gre local <client IPv4> remote <gateway IPv4>
pointopoint 2001:xx..xx:1::1
post-down iptunnel del tun1
up ip route add 2000::/3 dev tun1
在网关上,对于每个客户端:
auto tun-server1
iface tun-server1 inet6 static
address 2001:xx..xx:1::1
netmask 112
pre-up iptunnel add tun-server1 mode gre local <gateway IPv4> remote <client IPv4>
pointopoint 2001:xx..xx:1::2
post-down iptunnel del tun1
或者,您也可以在 tun6 模式下使用 openvpn。每个隧道都需要一个单独的 openvpn 实例。网关和每个客户端(使用静态密钥)的最小配置如下:
secret "/etc/openvpn/server1.key"
dev-type tun
tun-ipv6
dev tun-server1
local <Gateway IPv4>
proto tcp-server
在客户端上,有一个实例:
secret "/etc/openvpn/server1.key"
dev-type tun
tun-ipv6
dev tun0
remote <Gateway IPv4>
proto tcp-client
如果您的客户端具有公共的、可访问的地址,您可以删除proto
使用 UDP 的指令(更高效),只要您在双方添加回缺失的remote
和指令即可。local
该文件server1.key
必须包含一个共享密钥,最好每个客户端都不同。您可以使用以下方式生成它们openvpn --genkey --secret server1.key
之后,您需要像以前一样设置正确的路由。这里有关于如何操作的文档(第一部分是关于使用证书设置 openvpn;您可以先使用静态密钥,因为设置速度更快):