NAT64 服务器搭建

NAT64 是 IPv4 向 IPv6 过渡时出现的一项技术。它通过将 IPv4 的地址映射到一个 IPv6 地址段上,来让仅支持 IPv6 的设备同样能够访问 IPv4 网络。但由于仅支持 IPv6 的设备并不多,目前它在国内的应用主要是两个方面:

  1. 对于 IPv4 收费 / 限速 / 限流量而 IPv6 免费 / 不限速 / 不限流量的教育网用户,可以使用公共 NAT64 服务来省钱。
  2. 对于 iOS 应用开发者,用于搭建测试环境以通过 App Store 的审核。

我们也可以在自己的同时拥有 IPv4 和 IPv6 连接的路由器上安装相应的软件,来搭建 NAT64 服务器。常用的软件是 Tayga 和 Jool。其中 Tayga 年久失修,上次更新已经是 2011 年的事了,而 Jool 一直在活跃地更新,因此本文采用 Jool 来搭建。

安装 Jool
第一步是安装 Jool。Arch Linux 的 AUR 上有 Jool,而 Jool 在 Debian 和 Ubuntu 的官方源中都找不到,因此在这两个系统下需要手动编译安装。

对于 Arch Linux,直接

  1. yaourt -S jool-dkms-git

即可。对于树莓派,需要修改 PKGBUILD,将

  1. arch=('i686' 'x86_64')

修改成

  1. arch=('i686' 'x86_64' 'armv7h')

,即添加树莓派的架构信息,否则会提示没有对应的可以安装的架构。安装完成后,从下面的 “设置内核模块开机自动加载” 这一步开始做。

对于 Debian 和 Ubuntu,执行如下指令:

  1. # 安装依赖
  2. apt-get install build-essential dkms autoconf automake linux-headers
  3. # 下载 Jool
  4. https://github.com/NICMx/Jool/releases/download/v4.1.6/jool-4.1.6.tar.gz
  5. tar zxvf jool-4.1.6.tar.gz
  6. cd jool-4.1.6
  7. # 安装内核模块
  8. dkms install .
  9. # 安装管理软件(可选)
  10. cd usr
  11. ./configure && make && make install
  12. # 设置内核模块开机自动加载
  13. cat >/etc/modprobe.d/jool.conf <<EOF
  14. options jool pool6=64:ff9b::/96
  15. EOF
  16. echo jool > /etc/modules-load.d/jool.conf
  17. # 加载内核模块
  18. modprobe -v jool pool6=64:ff9b::/96

安装完成后执行 jool,如果看到类似 Status: Enabled 的字样,就说明安装成功了。

测试 NAT64 ¶
IPv6 地址中专门给 NAT64 划了一个地址池,就是上文的

  1. 64:ff9b::/96

。使用 64:ff9b:: 加上 IPv4 地址就可以通过 NAT64 访问了,例如如果我们的原 IP 是 8.8.8.8,那么使用

  1. 64:ff9b::8.8.8.8

就能访问。

但是在安装 Jool 的本机上直接访问这个地址是不通的,必须让本机作为路由器,让其它机器通过它才能访问 NAT64 的地址。我将树莓派作为路由器并打开 WiFi 热点,并用自己的电脑连接,可以 ping 通相应的地址就是成功了。

点赞