本节书摘来自异步社区《深入解析IPv6(第3版)》一书中的第2章,第2.5节,作者: 【美】Joseph Davies 更多章节内容可以访问云栖社区“异步社区”公众号查看。
2.5 手动配置IPv6协议
不同于Windows XP和Windows Server 2003中的IPv6,Windows Server 2012、Windows Server 2008 R2、Windows Server 2008、Windows 8、Windows 7和Windows Vista中的IPv6协议已经被安装并且默认开启了。Windows的IPv6协议在设计时的目标就是实现自动配置。例如,能够自动配置用于链路上节点间通信的本地链路地址。如果主机子网中有一台IPv6路由器或存在一台ISATAP路由器,那么主机就可以使用接收到的路由器通告信息来自动配置其他的地址、默认路由器以及其他的配置参数了。
用户也可以通过如下方式在Windows中手动配置IPv6地址和其他参数。
- Internet Protocol Version 6(TCP/IPv6)组件的属性:就像用户可以通过“网络连接”文件夹下的Internet Protocol Version 4(TCP/IPv4)组件属性来配置IPv4设置一样,他们现在也可以通过Internet Protocol Version 6(TCP/IPv6)组件属性来配置IPv6设置。配置IPv6的一系列对话框与相应的IPv4配置对话框非常相似。不过,Internet Protocol Version 6(TCP/IPv6)组件属性只提供了IPv6的基本配置。
- Windows PowerShell:可以使用Windows PowerShell命令Set-NetIPAddress、Set-NetIPInterface 、Set-NetIPv6Protocol 、Set-NetNeighbor和Set-NetRoute来进行配置(只适用于运行Windows Server 2012或Windows 8的计算机)。
- Netsh.exe工具:可以在Netsh.exe工具的interface ipv6文本命令来配置IPv6的设置。netsh interface ipv6命令提供了完整的IPv6配置方案。
虽然通常的IPv6主机并不需要手动配置,但IPv6路由器则必须手动进行配置。
2.5.1 通过Internet Protocol Version 6(TCP/IPv6)的属性来配置IPv6
通过“网络连接”文件夹来手动配置IPv6协议,可以按照如下步骤进行。
1.在网络连接文件夹中,右键单击要配置的连接或网络适配器,然后单击“属性”(Properties)选项。
2.在连接或网络适配器属性的“网络”(Networking)选项卡中,在“此连接使用下列项”(This Connection Use The Following Items)下的列表中双击Internet协议版本6(TCP/IPv6)。
Windows会显示“Internet协议版本6属性”(Internet Protocol Version 6 Properties)的对话框。图2-3所示即为该对话框的示例。
常规(General)选项卡
在“Internet协议版本6(TCP/IPv6)属性”对话框的“常规”选项卡中,可以进行如下配置。
- 自动获取IPv6地址(Obtain an IPv6 address automatically):指定该连接或网络适配器自动获取IPv6地址,这个地址获取的过程是通过状态化的或无状态的地址自动配置来实现的。
- 使用如下IPv6地址(Use the following IPv6 address):指定此连接或网络适配器的IPv6地址和默认网关通过手动配置的方法获得。 - IPv6地址(IPv6 address):提供空白位置来输入IPv6单播地址。还可以通过“高级TCP/IP设置”(Advanced TCP/IP Setting)对话框指定更多的IPv6地址。
- 子网前缀长度(Subnet prefix length):提供空白位置以输入IPv6地址的子网前缀长度。对于常见的IPv6单播地址,这个值应该设置为64,即默认值。
- 默认网关(Default gateway):提供空白位置来输入IPv6单播地址的默认网关。
- 自动获取DNS服务器地址(Obtain DNS server address automatically):指定DNS服务器的IPv6地址通过自动获取来获得,这个地址获取的过程是通过状态化的或无状态的地址自动配置来实现的(DHCPv6)。
- 使用如下DNS服务器地址(Use the following DNS server address):指定此连接或网络适配器的首选和备选DNS服务器的IPv6地址通过手动配置来获得。
- 首选DNS服务器(Preferred NDS server):提供空白位置以输入首选DNS服务器的IPv6地址。
- 备选DNS服务器(Alternate DNS server):提供空白位置以输入备选DNS服务器的IPv6地址。还可以通过“高级TCP/IP设置”(Advanced TCP/IP Setting)对话框设置更多的DNS服务器。
高级TCP/IP设置(Advanced TCP/IP Setting)
在“常规”选项卡中,单击“高级”(Advanced)按钮就可以进入“高级TCP/IP设置”对话框。这个对话框非常类似于Internet协议版本4(TCP/IPv4)组件的“高级TCP/IP设置”对话框,两者的区别是这里没有WINS选项卡(IPv6并不使用NetBIOS和Windows Internet命名服务[WINS])和“选项”选项卡(TCP/IP过滤只适用于IPv4流量)。对于IPv6,“高级TCP/IP设置”对话框有“IP设置”(IP Settings)和“DNS”选项卡。图2-4所示为“IP设置”选项卡的示例。
https://yqfile.alicdn.com/84aba88d78d4a78fc97af494077f230617fd519c.png" >
在“IP设置”选项卡中,可以进行如下配置。
- 多个IPv6地址(单击IP地址[IP address]下的“添加”[Add]按钮):对于每个单播IPv6地址,必须指定IPv6地址和子网前缀长度。只有选中“Internet协议版本6(TCP/IPv6)属性”对话框 “常规”选项卡的“使用如下IPv6地址”(Use the following IPv6 address)时,“添加”(Add)按钮才能够使用。
- 多默认网关(单击默认网关[Default gateways]下的添加[Add]按钮):每个默认网关都要指定一个网关的IPv6地址,并指定与之相关的默认路由的度量值(metric)应该手动设置还是根据连接或适配器的速度设定。
- 路由度量:对与IPv6地址或默认网关的配置相关的路由,也可以设置是使用指定的度量值,还是由连接或适配器的速度来决定度量值。
图2-5所示为DNS选项卡的示例。
在DNS选项卡中,用户可以配置以下内容。
DNS服务器的IPv6地址(单击DNS服务器地址,按使用顺序排列[DNS server addresses, in order of use]下的“添加”[Add]按钮)是按使用顺序排列的。
首选及指定连接的DNS后缀、域名注册和授权行为。这些设置和IPv4中的相同。
2.5.2 用Windows PowerShell配置IPv6
Windows 2012和Windows 8的Windows PowerShell命令行也可以对IPv6地址、默认网关和DNS服务器进行配置。
配置地址
配置IPv6地址可以使用命令New-NetIPAddress来实现。比如,如果要在名为“Wired Ethernet Connection”的接口上配置IPv6单播地址2001:db8:290c:1291::1,就要使用如下命令:
New-NetIPAddress –InterfaceAlias "Wired Ethernet Connection" –IPAddress 2001:db8:290c:1291::1
添加默认网关
配置默认网关可以使用命令New-NetRoute来实现。比如,如果要在名为“Wired Ethernet Connection”的接口上添加一条默认路由,即将下一条地址设置为fe80::2aa:ff:fe9a:21b8,就要使用如下命令:
New-NetRoute–DestinationPrefix::/0–InterfaceAlias "Wired Ethernet Connection" –NextHop fe80::2aa:ff:fe9a:21b8
添加DNS服务器
配置DNS服务器的IPv6地址可以使用命令Set-DnsClientServerAddress来实现。比如,如果要在名为“Wired Ethernet Connection”的接口上添加一个IPv6地址为2001:db8:99:4acd::8的DNS服务器,就要使用如下命令:
Set-DnsClientServerAddress -InterfaceAlias "Wired Ethernet Connection"
-ServerAddresses 2001:db8:99:4acd::8
注释
本节只会描述如何在Windows PowerShell命令行中通过命令来添加地址、默认网关和DNS服务器。除此之外,Windows PowerShell命令行还有很多其他用来配置IPv6设置和IPv6组件的命令。
2.5.3 用Netsh.exe工具配置IPv6
用户也可以通过在命令行中使用netsh interface ipv6形式的命令,来配置IPv6地址、默认网关和DNS服务器。
配置地址
配置IPv6地址可以使用命令netsh interface ipv6 add address来实现,该命令语法如下。
netsh interface ipv6 add address [interface=] Interface NameorIndex [address=] IPv6 Address [/PrefixLength] [[type=] unicast|anycast] [[validlifetime=] Time|infinite] [[preferredlifetime=] Time|infinite] [[store=] active|persistent]
- interface:连接或适配器的名称或接口编号。
- address:要添加的IPv6地址,后接子网前缀长度(可选,默认值为64)。
- type:IPv6地址的类型,可以是单播(默认)或任播。
- validlifetime:地址保持有效的生存时间。生存时间的值可以用日、小时、分钟和秒表示(如1d2h3m4s)。默认值是infinite(无穷)。
- preferredlifetime:地址保持选用的生存时间。生存时间的值可以用日、小时、分钟和秒表示。默认值是infinite(无穷)。
- store:IPv6地址如何进行存储。可以是active(系统重启时地址会消失)或persistent(系统重启后地址仍保留)。后者为默认值。
例如,如果要在名为“Local Area Connection”的接口上配置IPv6单播地址2001:db8:290c:1291::1,让这个地址长期有效且处于被选用的状态,而且该地址在系统重启之后仍然保留,要使用如下命令:
netsh interface ipv6 add address "Local Area Connection" 2001:db8:290c:1291::1
添加默认网关
配置默认网关可以使用命令netsh interface ipv6 add route来实现,并添加一条默认路由(::/0),该命令语法如下。
netsh interface ipv6 add route [prefix=]::/0 [interface=] InterfaceNameorIndex [[nexthop=] IPv6Address] [[siteprefixlength=] Length] [[metric=] MetricValue] [[publish=]no|yes|immortal] [[validlifetime=]Time|infinite] [[preferredlifetime=]Time|infinite] [[store=]active|persistent]
- prefix:默认路由的IPv6地址前缀和前缀长度。若是其他路由,则将::/0替换为地址前缀/前缀长度。
- interface:连接或适配器的名称或接口编号。
- nexthop:当目的前缀所指不在本地链路上时,邻居路由器的IPv6地址。
- siteprefixlength:若目的前缀所指在本地链路上,用户可以指定分配给此IPv6节点所属站点的地址前缀的长度,这是可选的。
- metric:使用路由时设定优先值。值越小,路由越会获得优选。
- publish:若设备充当IPv6路由器,则此选项能设置下述内容:该路由所对应的子网前缀是否包含在路由通告中,以及前缀的生存时间是否为无限(immortal选项)。
- validlifetime:路由保持选用的生存时间。生存时间的值可以用日、小时、分钟和秒表示。默认值是infinite(无穷)。
- preferredlifetime:路由被选用的生存时间。生存时间的值可以用日、小时、分钟和秒表示。默认值为infinite。
- store:路由如何进行存储。可以是active(系统重启时地址会消失)或persistent(系统重启后地址仍保留)。后者为默认值。
例如,如果要在名为“Local Area Connection”的接口上添加一条默认路由,并将下一跳地址设置为fe80::2aa:ff:fe9a:21b8,要使用如下命令:
netsh interface ipv6 add route ::/0 "Local Area Connection" fe80::2aa:ff:fe9a:21b8
添加DNS服务器
配置DNS服务器的IPv6地址可以使用命令netsh interface ipv6 add dnsserver来实现,该命令语法如下。
netsh interface ipv6 add dnsserver [name=] Interface Name [[address=] IPv6Address] [[index=] Preference Value]
- name:连接或适配器的名称。
- address:DNS服务器的IPv6地址。
- index:DNS服务器地址的优先权。
默认情况下,DNS服务器会被添加到DNS服务器列表的末尾。若指定了索引号,则DNS服务器会被放到列表中相应的位置,其他DNS服务器则相应后移。
例如,如果要在名为“Local Area Connection”的接口上添加一个IPv6地址为2001:db8:99:4acd::8的DNS服务器,要使用如下命令:
netsh interface ipv6 add dnsserver "Local Area Connection" 2001:db8:99:4acd::8
注释
本节只会描述如何使用Netsh命令来添加地址、默认网关和DNS服务器。除此之外,还有许多配置IPv6设置和IPv6组件的Netsh命令。如果读者需要全部的配置命令集,请参见Windows系统的“帮助”和“支持”。