立即使用 Freenet6 获取 IPv6
IPv6 是我们当前互联网协议 IPv4 的继任者。它提供了许多新功能,包括大大增加的地址空间(128 位地址,而 IPv4 仅为可怜的 32 位)、更简便的自动配置和更好的加密支持。Debian 项目在使其发行版 IPv6 就绪方面做得很好。在这里,我将向您展示如何设置 IPv6-over-IPv4 隧道,并使用免费的 Freenet6 隧道服务和 radvd 为网关后面的主机提供 IPv6 网络。请注意,我假设您正在使用 Debian Woody (3.0) 或 unstable (SID),并且您了解如何通过 apt 安装软件包。我还假设您对 IPv6 有一些了解,例如地址的外观。
您需要在您使用的网关上拥有一个可公开寻址的 IPv4 地址。该网关以及您要连接的任何主机上的内核也必须支持 IPv6;Debian 的标准内核默认支持 IPv6。如果您不确定您的内核是否支持,请检查是否存在 /proc/sys/net/ipv6 目录。另外,查看 ifconfig 的输出是否包含任何 IPv6 地址,例如 fe80::24f:49ff:fe07:2552。确保您的防火墙没有阻止 IPv6 隧道数据包;IP 协议 41(ipv6 over ipv4)不得在任一方向被阻止。
如果您位于 NAT 路由器后面,IPv6 隧道将失败,但好消息是,您不需要从您的服务提供商那里获得静态 IPv4 地址即可拥有静态 IPv6 地址。
首先,使用 apt 安装 Freenet6 客户端软件。Debian 软件包名为 freenet6,在 Woody 及更高版本中可用。RPM 和源代码包也可从 www.freenet6.net/download.shtml 获取。安装完成后,Freenet6 会根据您现有的 IPv4 地址自动获取 IPv6 地址;无需配置。
/etc/init.d/freenet6 脚本只是启动隧道客户端,称为 Tunnel Setup Protocol Client (tspc)。此时,如果您的 IPv4 地址更改,您的 IPv6 地址也会随之更改。没错,只需安装 Freenet6,一切都将在大多数系统上开箱即用。但是,我们希望更进一步;我们想要获得我们自己的 IPv6 子网。为此,我们需要一个用户帐户。
转到 www.freenet6.net,然后单击“创建您的帐户”链接,该链接应位于左侧菜单的 TSP 服务器下。填写您的用户名和电子邮件地址后,您将收到一封邮件,其中包含您请求的用户 ID 的密码。
在您喜欢的编辑器中打开 /etc/freenet6/tspc.conf。此配置文件控制 tspc,默认情况下进行匿名连接。找到 user ID 和 password 行,并将它们的值更改为电子邮件中的值。如果您重新启动 Freenet6,运行 /etc/init.d/freenet6 restart 并在此处停止;您将拥有一个功能完善的 IPv6 设置,其中包含单个静态 IPv6 地址。如果这就是您所需要的全部,您可以立即停止阅读。
假设您确实需要更多,下一步是请求您的 /48 前缀。同样,这可以通过编辑 tspc.conf 来完成。将以下行添加到您的 tspc.conf 文件的末尾
host_type=router prefixlen=48 if_prefix=eth0
if_prefix 选项控制哪个接口将被视为您的内部网络。Freenet6 自动启用此接口和您的 Freenet6 隧道之间的 IPv6 转发。在大多数设置中,eth0 将是正确的。但是,您可以根据需要更改它。在本文的其余部分,您的内部网络接口将被称为 eth0。如果您的设置使用另一个接口,请使用该接口代替。
此时,您可以重新启动 Freenet6;运行 /etc/init.d/freenet6 restart 以加载新配置。我们将不再对其进行任何更改。如果您在重新启动后运行 ifconfig,您会注意到 eth0 上有一个新的 IPv6 地址,格式为 XXXX:XXXX:XXXX:1::1/64。Freenet6 自动为 eth0 提供了来自您的 /48 前缀的这个新地址。XXXX:XXXX:XXXX 部分是您的 /48 前缀的网络部分。您可能希望通过将其添加到 /etc/network/interfaces 中的 eth0 部分来使此地址永久化。这将允许其他主机找到您的网关,即使 Freenet6 软件未运行。为此,找到 eth0 的部分,它应该看起来像这样
iface eth0 inet static address 10.1.1.1 netmask 255.255.255.0 network 10.1.1.0 broadcast 10.1.1.255
在下面添加这些行(将 3ffe:0b80:083b:1::1 替换为 Freenet6 分配的地址,不带 /64 网络掩码)
iface eth0 inet6 static address 3ffe:0b80:083b:1::1 netmask 64使用 ifdown eth0 和 ifup eth0 测试此操作。一个小技巧:如果您正在远程执行此操作,并且 eth0 是您正在通过其连接的接口,您可以避免丢失连接并避免走到您正在工作的实际计算机旁,方法是将这两个命令用分号链接在一起,ifdown eth0 ; ifup eth0。您勇敢的作者就是通过 SSH 连接(我的测试盒在楼下;我在楼上)完成此操作的。
如果到目前为止一切正常,我们可以开始 radvd 设置。IPv6 比 IPv4 更支持自动配置。但是,为了使此自动配置工作,网络的路由器必须响应主机的自动配置请求。在 Linux 上,执行此操作的程序称为 radvd (Router ADVertisement Dæmon)。实际的自动配置通过基于 64 位网络地址和其硬件以太网地址为主机提供新的 IPv6 地址来工作。主机还会被告知它们的默认网关应该是什么。与 Freenet6 一样,radvd 也有一个 Debian 软件包。
安装 radvd 后,我们需要编辑 /etc/radvd.conf 文件。Debian 的默认配置基本上什么都不做,因此将整个内容替换为
interface eth0 { AdvSendAdvert on; prefix 3ffe:b80:840:1::/64 { AdvOnLink on; AdvAutonomous on; }; };
前缀应设置为 eth0 上的网络和网络掩码。例如,如果 Freenet6 分配给 eth0 的 IPv6 地址为 3ffe:b80:83b:1::1/64,则前缀应设置为 3ffe:b80:83b:1::/64,这与 IPv6 地址相同,只是减去了地址的主机部分(:1)。完成此操作后,重新启动 radvd。
重新启动后,尝试在连接到您的内部网络的 IPv6 主机上运行 ifconfig。您应该会在连接到您的内部网络的接口上注意到一个新的 IPv6 地址。例如,使用上述前缀,一个这样的地址可能是 3ffe:b80:840:1:24f:49ff:fe07:2552/64。如果未出现新地址,请检查运行 radvd 的系统上的 /var/log/syslog 中是否存在错误;radvd 不会记录到控制台。
要测试您的 IPv6 连接,首先尝试在网关和连接的主机上使用 ping6 程序 ping 某些内容。您可能会发现您没有安装 ping6。如果未安装,请安装 iputils-ping 软件包。一些可以尝试 ping6 的主机包括 www.6bone.net 和 www.kame.net。如果这不起作用,请仔细检查您的防火墙是否没有阻止 IPv6 数据包。如果这有效,请尝试使用 lynx、Mozilla 或 Konqueror 连接到 www.kame.net。这些浏览器在 Debian testing 中具有 IPv6 支持。如果一切正常,页面顶部将有一个跳舞的“kame”,底部会有一条小消息。如果它仍然显示您正在使用 IPv4,并且 ping6 测试工作正常,请仔细检查您是否拥有最新版本的 Web 浏览器。
安装 IPv6 隧道可能会打开安全漏洞。虽然在 2.4.x 内核中使用 iptables 进行 IPv6 防火墙是可能的,但这超出了本文的范围。强烈建议您评估可能的安全问题。检查是否打开了任何 IPv6 服务的一种快速方法是运行命令 netstat -l -A inet6。这将向您显示打开的、正在侦听的 IPv6 套接字。如果任何套接字处于活动状态,请确保它们可以公开访问。
恭喜!您已进入下一代互联网。现在您拥有了基本的 IPv6,您可能需要研究支持 IPv6 的服务,例如 Web 和电子邮件。Debian IPv6 项目是查找 Debian 软件包的修补版本的一个好的开始。虽然许多客户端程序已经与 IPv6 兼容,但许多基本的服务器守护程序(例如 inetd、apache 等)在主流 Debian 版本中尚不可用。这些软件包易于安装;在您的 APT 配置中添加几行,然后运行 dist-upgrade。如果您有兴趣,请访问 people.debian.org/~csmall/ipv6。
