Skip to main content

使用Hurricane Electric(HE)隧道给IPv4 only服务器添加免费公网IPv6地址

·112 words·1 min· loading · loading ·
网络 隧道 VPS Hurricane Electric IPv6
Author
Red Swan
一个无聊的人
Table of Contents

Hurricane Electric(HE)是一家位于美国的全球互联网服务提供商。该公司提供IPv4和IPv6接入以及位于美国圣荷西(公司总部地址)的数据中心服务。该公司运营了世界上以对等数目计算的最大IPv6网络。其中大多数是原生IPv6对等会话。该公司也提供免费IPv6隧穿服务,为IPv4用户或无法接入IPv6网络的用户通过隧道提供IPv6服务。——维基百科

HE隧道的原理是什么?
#

  知其然更要知其所以然,下面就来简单地讨论一下HE隧道的原理。

IPv6-over-IPv4(6in4)
#

  不妨先思考这样一个问题:众所周知IPv6是无法和IPv4直接进行通信的,那么一个不全拥有IPv6地址的网络路由系统中,IPv6流量应该如何传输?

  为应对类似场景,RFC 4213等定义了相关的6in4标准,简单来说就是允许将IPv6的整个IP报文附到IPv4的有效载荷中,并将IPv4中的协议字段更改为41,以指示其有效载荷是一个完全封装的IPv6报文。一个已经配置好的HE隧道具有以下几个地址:

Server IPv4 Address
HE IPv6 隧道服务器的 IPv4 地址,代表隧道的“远端”。

Server IPv6 Address
HE IPv6 隧道服务器的 IPv6 地址,作为隧道的“远端” IPv6 端点。

Client IPv4 Address
用户端(你这一端)的 IPv4 地址。隧道建立过程中,HE 隧道服务器会将封装的数据包发送至该地址。

Client IPv6 Address
用户端的 IPv6 地址,作为隧道的“本端” IPv6 端点。通过该地址,用户可以访问 IPv6 网络资源。

  下面以下图为例简单说明从发送端通过HE隧道访问IPv6资源的过程

image

  如图所示,假设你的客户端需要访问一个IPv6资源,首先应用程序会生成一个IPv6报文(源地址为Client IPv6 Address,目的地址为要访问的IPv6资源地址),该报文会完整嵌入到一个IPv4报文(源地址为Client IPv4 Address,目的地址为Server IPv4 Address)的有效载荷中。在到达HE隧道的双栈服务器(省略路由过程,假设直接是双栈)后,其中的IPv6报文会被完整提取出来,经由Server IPv6 Address发往资源所在的网络(省略路由过程)。

  回程过程其实也是一样的,资源先被路由到HE隧道的IPv6地址,再经过6in4的过程到达你的机器,这样一来,就得以借用隧道的IPv6地址成功访问IPv6资源。

创建隧道
#

  打开HE Tunnel Broker官网,先注册一个账号,至于怎么注册那就各显神通了,真实点的信息都很容易通过的。

  成功登录之后如箭头所指点击Create Regular Tunnel

image

  注意,每个账号最多创建两个隧道。接着在创建页面的IPv4 Endpoint处填入你机器的公网IPv4地址,这个实际上就是我们上文中所说的Client IPv4 Address。再下拉选择地区,这个自然是离你的机器越近越好,不过你也可以另外ping一下试试,然后划到最下面选择创建隧道。

image

  创建完毕之后,在隧道详情处就可以看到我们之前讨论过的一些隧道的地址参数了,点击左边的'i'标志会弹出详细说明。其中Client IPv6 Address就是你获得的公网IPv6地址(把/64去掉),关于子网划分在这里就不再讨论了。

image

服务器配置隧道
#

  在隧道详情页的Example Configurations处可以找到你对应的示例配置文件,此处以Debian系为例。

image

auto he-ipv6
iface he-ipv6 inet6 v4tunnel
        address xx
        netmask 64
        endpoint xx
        local xx
        ttl 255
        gateway xx

接着在你的机器上执行ifconfig命令,查看主要网卡中inet的值,如果你的网卡中有内网地址比如192.168.x.x, 10.x.x.x, 或172.x.x.x的内网地址,请将上述内容中的local更改为该内网地址,否则不要做任何更改。

根据Example Configurations处的描述,将以上内容粘贴到/etc/network/interfaces中,再执行以下命令重启网卡:

systemctl restart networking

再执行ifconfig,确认是否有名为he-ipv6的网卡出现,以及它的IPv6地址是否正常。

其它系统就请看Example Configurations对应描述了,大同小异。

测试连通性
#

  基本上很多发行版都是默认IPv6优先,所以你只需要ping一下www.google.com或者其它有IPv6的网站,根据其返回IP就可以知道是否连通了。

也可以执行:

curl -6 www.google.com

或者直接ping6一个IPv6地址

Related

使用Realm端口转发工具中转代理流量
·160 words·1 min· loading · loading
网络 端口转发 Realm 中转 Sing-Box
Blowfish主题配置
· loading · loading
Hugo 博客主题 Blowfish
About
··3 words·1 min· loading · loading