(一)什么是 Tunnel Broker
Tunnel Broker 如字面意思,是一种网络隧道服务,可以通过封装数据包来提供设备间的连通性,其中最常见的就是 IPv6 Tunnel Broker(以下简称 Tunnel Broker)。 大部分的 Tunnel Broker 使用 6in4 协议来封装数据包,也是如字面意思,将 IPv6 数据包封装在 IPv4 数据包中。在维基百科 IPv6隧道中间人列表 页面可以看到,目前仍在运行的 Tunnel Broker 中,HE 不但拥有最多数量的 PoP,还提供最多 5 个免费的隧道。 接下来就来了解一下如何使用 HE 的 Tunnel Broker 服务。
(二)使用 Tunnel Broker
一、准备工作
使用 HE 的 Tunnel Broker 的前提条件很简单,只需在 HE.net IPv6 Tunnel Broker Registration 注册一个账号即可。
二、创建 Tunnel
点击左侧的 Create Regular Tunnel,在 IPv4 Endpoint 中填写你的服务器的 IP 地址,然后在下方选择离你的服务器最近的节点,点击创建即可。
此时在 Tunnel Details 界面可以看到详细信息,其中 Client IPv6 Address 就是分配给你的公网 IPv6 地址。
三、获取配置
在 Tunnel Details 界面的 Example Configurations 标签页选择操作系统,就可以看到相应的配置方法。这里以 Debian 为例,可以看到只需将文本框中的内容粘贴到 /etc/network/interfaces
中即可。
需要注意的是,页面下方的说明中提到了在一些大厂的云服务器中很常见的一种情况:服务器分配到的实际 IP 地址并不是服务器的公网 IP(例如公网 IP 为 1.2.3.4,但使用 ifconfig 命令查看却显示 172.16.1.2)。这种情况下,在粘贴配置时需要将 local 后面的 IP 地址修改为服务器的实际 IP 地址(例如 172.16.1.2)。
[!tip] 如在阿里中,此处应该填入私有ip
(三)在服务器中配置 Tunnel
一、开启 IPV6
部分厂商提供的云服务器镜像默认是关闭了 IPv6 的(例如阿里云),需要手动修改系统配置文件来开启。以 Debian 为例,编辑 /etc/sysctl.conf,将其中和 IPv6 有关字段的值设置为 0 即可:
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
nlaoxiongb2c et.ipv6.conf.lo.disable_ipv6 = 0
net.ipv6.conf.eth0.disable_ipv6 = 0
然后应用配置:
sysctl -p
此时使用 ifconfig 命令就可以看到网卡有了一个 IPv6 链路本地地址:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.39.221 netmask 255.255.192.0 broadcast 172.17.63.255
inet6 fe80::216:3eff:fe00:2109 prefixlen 64 scopeid 0x20<link>
ether 00:16:3e:00:21:09 txqueuelen 1000 (Ethernet)
RX packets 33574372 bytes 5658726074 (5.2 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 26217969 bytes 11529139204 (10.7 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
二、添加 Tunnel
接下来只需要登录云服务器,将配置内容粘贴到 /etc/network/interfaces 即可。以我在阿里云香港的轻量为例,修改后的配置文件如下:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto he-ipv6
iface he-ipv6 inet6 v4tunnel
address 2001:470:
netmask 64
endpoint 216.
local 172.
ttl 255
gateway 2001:470:
可以看到机器的 IP 地址是使用 DHCP 获取的,并非分配的公网 IP,所以需要修改 local 后的地址。 之后启用 he-ipv6 接口:
ifup he-ipv6
此时再使用 ifconfig 命令就可以看到 he-ipv6 接口了:
he-ipv6: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 1480
inet6 fe80::ac11:27dd prefixlen 64 scopeid 0x20<link>
inet6 2001:470: prefixlen 64 scopeid 0x0<global>
sit txqueuelen 1000 (IPv6-in-IPv4)
RX packets 433761 bytes 247586358 (236.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 408948 bytes 54864863 (52.3 MiB)
laoxiongb2c TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
如果没有生效可以尝试使用 systemctl restart network 命令重启网络或者直接 reboot。 最后,使用 ping6 www.google.com 命令来验证一下服务器是否已经可以访问 IPv6 网络了:
PING www.google.com(hkg12s27-in-x04.1e100.net (2404:6800:4005:81b::2004)) 56 data bytes
64 bytes from hkg12s27-in-x04.1e100.net (2404:6800:4005:81b::2004): icmp_seq=1 ttl=121 time=2.76 ms
64 bytes from hkg12s27-in-x04.1e100.net (2404:6800:4005:81b::2004): icmp_seq=2 ttl=121 time=2.75 ms
64 bytes from hkg12s27-in-x04.1e100.net (2404:6800:4005:81b::2004): icmp_seq=3 ttl=121 time=2.85 ms
64 bytes from hkg12s27-in-x04.1e100.net (2404:6800:4005:81b::2004): icmp_seq=4 ttl=121 time=2.85 ms
三、添加 IPV6 DNS
修改/etc/resolv.conf文件,添加下面:
nameserver 2001:4860:4860::8888 # Google IPv6 DNS
nameserver 2001:4860:4860::8844
四、维持 Tunnel 连接
如果一段时间内没有流量,Tunnel 会进入休眠状态。可以使用 crontab 命令添加一个计划任务来使 Tunnel 保持激活:
crontab -e
*/10 * * * * ping6 -c 1 www.google.com
五、验证
运行:
ping6 google.com
[!tips] 可能还需要用到的防火墙配置:
“`bash
ip6tables -A INPUT -p icmpv6 –icmpv6-type destination-unreachable -j ACCEPT
ip6tables -A INPUT -p icmpv6 –icmpv6-type echo-request -j ACCEPT
必须 注册 为本站用户, 登录 后才可以发表评论!