1. 前提条件
- 您已经熟悉基本的网络配置和管理,包括IPv4和IPv6。
- 你拥有一个静态的公网IPv4地址或者知道如何更新你的隧道端点
- 你已经在HE Tunnel Broker注册并创建了一个隧道
2. 背景知识
IPv6是一个为互联网下一代协议设计的版本。然而,由于各种因素,全球的IPv6部署进度非常缓慢。Hurricane Electric (HE) 提供了一个免费的服务,使得能够通过IPv4网络建立IPv6隧道。
3. 创建隧道
创建HE的IPv6隧道需要访问其Tunnel Broker网站,并按照提示创建新的IPv6隧道。
在隧道详情页面,您可以获取到如下信息:
- Server IPv4 Address
- Client IPv4 Address
- Server IPv6 Address
- Client IPv6 Address
这些信息将被用于配置您的Debian系统。
4. Debian 通过 HE IPV6 连接互联网
在获得上述详细信息后,您需要将它们配置到Debian系统中。首先,打开 /etc/network/interfaces
文件,向其中添加以下配置项:
1auto he-ipv6
2iface he-ipv6 inet6 v4tunnel
3 address 2001:470:38:9e9::2
4 netmask 64
5 endpoint 216.218.221.42
6 local 110.242.68.68
7 ttl 255
8 gateway 2001:470:38:9e9::1
根据
NOTE: When behind a firewall appliance that passes protocol 41, use the IPv4 address you get from your appliance’s DHCP service instead of the IPv4 endpoint you provided to our broker.
阿里云腾讯云之类的云服务 要将local中的IP修改为内网的IP,即私网IP地址,例如172.16.xxx.xxx,而不是公网IP
然后,重启您的网络服务以应用新的配置。
或者执行
1ifup he-ipv6
停止ipv6
1ifdown he-ipv6
删除 ipv6
1ip tunnel del he-ipv6
- 测试IPv6连接: ping6 ipadd.cn
5. 绑定 Routed /64 分配给局域网
如果你希望局域网(LAN)内其他设备也能利用Debian机器与HE之间的IPv6隧道,那么可能还需要进行一些额外的路由配置。具体来说,首先要启用IPv6转发功能,然后配置合适的IPv6子网地址。
打开 /etc/network/interfaces
文件,向其中添加以下配置项:
1iface eth0 inet6 static
2 address 2001:470:39:9e9::1
3 netmask 64
注意此处ip为 Routed /64:
重起网络应用配置 或执行
1ip addr add 2001:470:39:9e9::1/64 dev eth0
6. 局域网内设备通过 HE IPv6 连接到互联网
如果LAN内的设备希望直接访问Internet上的IPv6资源,你需要在Debian服务器上设置相应的转发规则。使用radvd
。
为了启用IPv6转发,需要编辑 /etc/sysctl.conf
文件并添加以下行:
1net.ipv6.conf.all.forwarding=1
为使局域网内的设备自动获取IPv6地址,你需要安装并配置 radvd
。
radvd
是一个用于Linux系统的路由广告守护进程,它能让系统通过无状态自动配置(SLAAC)机制向网络中的其他设备推送IPv6前缀。在Debian上,你可以使用以下命令来安装 radvd
:
1sudo apt-get install radvd
随后,需要编辑 radvd
的配置文件 /etc/radvd.conf
。以下是一个基本的配置示例:
1interface eth0 {
2 AdvSendAdvert on;
3 AdvLinkMTU 1480;
4 MinRtrAdvInterval 60;
5 MaxRtrAdvInterval 180;
6 prefix 2001:470:39:9e9::1/64 {
7 AdvOnLink on;
8 AdvRouterAddr on;
9 AdvPreferredLifetime 600;
10 AdvValidLifetime 3600;
11 };
12 route ::/0 {
13 };
14};
其中,“2001:470:39:9e9::1”应替换为你的IPv6前缀。这个前缀通常可以从HE的Tunnel Broker网站获取。
完成这些设置并保存配置文件后,需要重启 radvd
服务以应用新的配置。可以使用以下的命令来重启服务:
1sudo systemctl restart radvd
现在,你的Debian服务器应该已经开始在局域网中广播IPv6路由信息,而且网络中的其他设备也应当能够自动获取到IPv6地址,并通过Debian服务器访问Internet。
- AdvSendAdvert on 意味着 radvd 会定期广播路由器公告。如果此设置为关闭,LAN 上的主机需要定期明确发送路由器请求广播。
- AdvLinkMTU 1480 意味着“请注意,此以太网段上的数据包最大为 1480 字节”。理想情况下,可以这样说:“请注意,通过此路由器发送的数据包最大为 1480 字节”,但这是不可能的。然而,对于大多数流量来说,加快 PMTU 发现的速度比在本地段上仅缩小 20 字节的数据包的弊端更大。
- MinRtrAdvInterval 60 和 MaxRtrAdvInterval 180 意味着 radvd 应至少每 3 分钟广播一次路由器公告,但最多每分钟广播一次。单个客户端可以发送路由器请求请求来触发早期广播。
- prefix 2001:470:39:9e9::1/64 告诉客户端,他们可以通过将 2001:470:39:9e9 放在 64 位唯一标识符(通常是 EUI-64 格式的 MAC 地址)的前面来创建自动配置的地址。此选项还告诉客户端路由器的公共 IP(请参阅下面的 AdvRouterAddr)。
- AdvOnLink on 意味着“是的,您可以安全地假设 2001:470:39:9e9::/64 中的每个人都在与您相同的以太网段上,因此无需通过我来,我是一个友好的但工作过度的路由器”。显然,如果您的本地网络跨越多个以太网段,请将其更改为“关闭”。
- AdvRouterAddr on 意味着“您知道我刚刚告诉您的前缀吗?如果您忽略 /64,它也是我的公共 IPv6 地址。如果您愿意,可以使用它而不是我的 fe80:: 地址与我对话”。这来自 Mobile IPv6 规范,但您无需完全部署 Mobile IPv6 才能使用它。
- AdvPreferredLifetime 600 和 AdvValidLifetime 3600 意味着“嘿,如果你 10 分钟内没有收到我的回复,请组建一个搜索队伍,如果你 1 小时内没有收到我的回复,请取消搜索,因为我要么被绑架了,要么死了”。客户端将逐渐停止使用此前缀中的自动配置地址(首先弃用它,然后删除它)。
- route ::/0 告诉客户端,他们可以通过此路由器将流量路由到 IPv6 互联网的其余部分。由于我们没有指定 AdvRouteLifetime,因此该路由有效期为 3*MaxRtrAdvInterval = 9 分钟,并不断通过路由器公告广播进行刷新。
7. 将域名解析到 IPv6 地址
- 配置 DNS 服务器解析域名的 AAAA 记录
- 添加 Hurricane Electric 的 IPv6 DNS 解析服务器
8. 将 IPv6 地址反向解析到域名
- 配置 Hurricane Electric 的反向 DNS 服务
- 测试通过域名访问 Debian 的 IPv6 地址