Top
FreeBSD手册第7.3.3~7.3.7讲解了如何配置IPv6。

目录:

7.3.3 IPv6

IPv6优势: IPv6有三种不同类型: IPv6的规范形式表示为:x:x:x:x:x:x:x:x。
共8段,每个x表示一个16bit,以十六进制值表示,例如:
FEBC:A574:382B:23C1:AA49:4592:4EFE:9982

通常地址内会包含全都是0的一段子串。双冒号(::)可用来取代这些子串。
此外,每个十六进制值最多可以省略三个前导0。
例如,fe80::1对应的规范形式为:fe80:0000:0000:0000:0000:0000:0000:0001

第三种形式是使用众所周知的IPv4表示法写入最后32位。
例如:2002::10.0.0.1对应于十六进制规范表示2002:0000:0000:0000:000:0000:0a00:0001,这反过来又等效于2002::a00:1。

在FreeBSD系统中可以使用ifconfig命令查看IPv6地址:
em0: flags=8863 metric 0 mtu 1500
        options=481249b
        ether 00:1f:16:0f:27:5a
        inet 192.168.1.150 netmask 0xffffff00 broadcast 192.168.1.255
        inet6 fe80::21f:16ff:fe0f:275a%em0 prefixlen 64 scopeid 0x1
        media: Ethernet autoselect (1000baseT )
        status: active
        nd6 options=23
此例中,网络接口em0使用fe80::21f:16ff:fe0f:275a%em0,根据MAC地址自动生成的自动配置的链路本地地址。
某些IPv6地址已保留。可以在下表中查看保留地址列表:
IPv6地址 前缀长度(位) 描述 备注
:: 128位 未说明 相当于IPv4的0.0.0.0
::1 128位 环回地址 相当于IPv4的127.0.0.
::00:xx:xx:xx:xx 96位 嵌入式IPv4 较低的32位是兼容的IPv4地址
::ff:xx:xx:xx:xx 96位 IPv4映射的IPv6地址 低32位是不支持IPv6的主机的IPv4地址
fe80::/10 10位 link-local(本地链接) 相当于IPv4的169.254.0.0/16
对于DHCP客户端,意味着未能获取到正确的IP地址。
fc00::/7 7位 unique-local(独特本地) 唯一的本地地址用于本地通信,并且只能在一组协作站点内路由
ff00:: 8位 多播
2000::-3fff:: 3位 全局单播 所有全局单播地址都是从该池分配的。前3位为001
详情参阅RFC3513

7.3.4 配置静态IPv6地址

要将FreeBSD系统配置为具有静态IPv6地址的IPv6客户端,需要设置IPv6地址。
执行以下命令以满足要求:
# sysrc ifconfig_em0_ipv6="inet6 2001:db8:4672:6565:2026:5043:2d42:5344 prefixlen 64"
要分配默认路由器,请执行以下命令指定其地址:
# sysrc ipv6_defaultrouter="2001:db8:4672:6565::1"

7.3.5 配置动态IPv6地址

如果网络中有一个DHCP服务器,则很容易将网络接口配置为使用DHCP:
# sysrc ifconfig_em0_ipv6="inet6 accept_rtadv"
# sysrc rtsold_enable="YES"      实际上,如果在安装FreeBSD过程中配置IPv6,rc.conf文件中无此句

7.3.6 路由器播发和主机自动配置

本节演示如何在IPv6路由器上设置rtadvd(8)以通告IPv6网络前缀和默认路由。
使用以下命令启用rtadvd(8):
# sysrc rtadvd_enable="YES"
指定在其上执行IPv6路由器播发的接口是很重要的。例如:
# sysrc rtadvd_interfaces="em0"
接下来创建配置文件/etc/rtadvd.conf,类似如下示例:
em0:\
	:addrs#1:addr="2001:db8:1f11:246::":prefixlen#64:tc=ether:

7.3.7 IPv6和IPv4地址映射

在服务器上启用IPv6时,可能需要启用IPv4映射的IPv6地址通信。
此兼容性选项允许将IPv4地址表示为IPv6地址。允许IPv6应用程序与IPv4通信,反之亦然可能是一个安全问题。

在大多数情况下,此选项可能不是必需的,并且仅用于兼容性。
此选项将允许仅IPv6的应用程序在双堆栈环境中使用IPv4。这对于可能不支持仅IPv6环境的第三方应用程序最有用。

执行以下命令启用该功能:
# sysrc ipv6_ipv4mapping="YES"