《深入解析IPv6(第3版)》——10.4 Windows的IPv6协议的静态路由

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

本节书摘来自异步社区《深入解析IPv6(第3版)》一书中的第10章,第10.4节,作者: 【美】Joseph Davies 更多章节内容可以访问云栖社区“异步社区”公众号查看。

10.4 Windows的IPv6协议的静态路由

运行Windows Server 2012、Windows Server 2008 R2、Windows Server 2008、Windows 8、Windows 7和Windows Vista协议支持静态路由。可以用以下方法配置静态IPv6路由。

对于运行Windows Server 2012或Windows 8,可以使用Windows PowerShell命令行中的Set-NetRoute、Remove-NetRoute和Get-NetRoute命令。
对于运行Windows Server 2012、Windows Server 2008 R2、Windows Server 2008、Windows 8、Windows 7和Windows Vista的计算机,可以使用netsh interface ipv6命令行的命令。
对于运行Windows Server 2012、Windows Server 2008 R2、Windows Server 2008的计算机,可以使用路由和远程访问。
在实验室中使用这些命令建立静态路由的例子,请参见附录C。

10.4.1 用Windows PowerShell配置静态路由
要在Windows Server 2012和Windows 8的Windows PowerShell中创建静态路由,管理员必须在所需接口上通过下列命令来启用发送和通告:

Set-NetIPInterface -InterfaceAlias Name -AddressFamily IPv6 -Forwarding Enabled -Advertising Enabled

在默认情况下,所有IPv6接口的发送和通告都是禁用的。

例如,现在要将一台运行Windows Server 2012、名为ROUTER1的计算机配置为一台路由器。该ROUTER1有3个接口,分别名为Wired Ethernet Connection、Wired Ethernet Connection 2和Wired Ethernet Connection 3。Wired Ethernet Connection和Wired Ethernet Connection 2接口都和非主要子网连接。Wired Ethernet Connection 3接口则连接到了一个含有名为ROUTER2的相邻IPv6路由器的子网。图10-5所示为本示例的配置。


ad1f456216dacc68d3fdbbaf600183648039abb2

为了在Wired Ethernet Connection和Wired Ethernet Connection 2接口上启用发送与通告,并在Wired Ethernet Connection 3接口上启用发送,需要在ROUTER1上运行下列命令:

Set-NetIPInterface -InterfaceAlias "Wired Ethernet Connection" -AddressFamily IPv6 -Forwarding
Enabled -Advertising Enabled
Set-NetIPInterface -InterfaceAlias "Wired Ethernet Connection 2" -AddressFamily IPv6 -Forwarding
Enabled -Advertising Enabled
Set-NetIPInterface -InterfaceAlias "Wired Ethernet Connection 3" -AddressFamily IPv6 -Forwarding
Enabled

Wired Ethernet Connection 3接口所连接的子网已拥有通告路由器ROUTER2。

这些命令成功运行之后,ROUTER1会在两个非主要子网上使用Wired Ethernet Connection和Wired Ethernet Connection 2接口发送路由通告消息。然而,路由通告中不包含任何“前缀信息”或“路由信息”可选项(可以用于让所连接子网上的主机自动配置地址和路由)。为了通告“前缀信息”或“路由信息”可选项,必须配置ROUTER1,使它发布路由。

可以在Windows PowerShell中使用下述命令来添加一条路由,并将它发布出去:

Add-NetRoute -DestinationPrefix Prefix -InterfaceAlias Name -NextHop IPv6Address -AddressFamily IPv6 -Publish Yes -RouteMetric Metric

在默认情况下,没有下一跳地址(前缀在链路上),路由度量是自动判断出来的,路由条目也是不发布的。

例如,为了配置ROUTER1并在Wired Ethernet Connection上通告链路上的子网前缀2001:db8:0:1::/64,同时在Wired Ethernet Connection 2上通告链路上的子网前缀2001:db8:0:2::/64,需要使用如下命令:

Add-NetRoute -DestinationPrefix 2001:db8:0:1::/64 -InterfaceAlias "Wired Ethernet Connection"
-AddressFamily IPv6 -Publish Yes
Add-NetRoute -DestinationPrefix 2001:db8:0:2::/64 -InterfaceAlias "Wired Ethernet Connection 2"
-AddressFamily IPv6 -Publish Yes

通过配置在接口上通告出去的路由,其“前缀信息”可选项中的链路中(On-link)标记会被置位。如果链路中通告的路由前缀长度是64,ROUTER2就会将前缀信息可选项中的自治标记设置为允许主机创建无状态地址。注意,没有Add-NetRoute参数可以清除前缀信息可选项中的自治标记。

为了向主机提供到达通告路由器的直连子网的可达性,ROUTER1包含了一个子网前缀,这个子网前缀按“路由器通告”消息中的“路由器信息”可选项的要求,配置为在其他接口上发布。RFC 4191中描述了路由器信息可选项的用法。路由器信息可选项中的前缀会作为静态路由添加到接收方主机上,使接收方主机可以到达通告路由器直连的其他子网。例如,ROUTER1包含了前缀2001:db8:0:2::/64,该前缀会作为路由器通告中的“路由器信息”可选项在Wired Ethernet Connection上进行发送。同样,ROUTER1还包含了前缀2001:db8:0:1::/64,并将它作为路由器通告中的“路由器信息”选项在Wired Ethernet Connection 2上进行发送。

在这个配置环境中,ROUTER1不会将自己通告为默认路由器。在2001:db8:0:1::/64和2001:db8:0: 2::/64子网上的主机会自动配置地址并向它们的路由表添加路由,但是它们不会自动配置默认路由(::/0)。运行Windows系统的计算机不会将自己通告为默认路由器,除非计算机上配置了一条需要发布的默认路由。

为了将路由器配置为2001:db8:0:1::/64和2001:db8:0:2::/64子网上主机的默认路由器,必须在这台路由器上添加一条默认路由并且将它通告出去。例如,Wired Ethernet Connection 3的子网中包括了链路本地地址为fe80::2aa:ff:fe98:2ab1的ROUTER2。因此,需要在ROUTER1上运行如下命令,添加一条默认路由并将这条路由通告出去:

Add-NetRoute -DestinationPrefix ::/0 -InterfaceAlias "Wired Ethernet Connection 3" -NextHop
fe80::2aa:ff:fe98:2ab1 -AddressFamily IPv6 -Publish Yes

在运行命令之后,ROUTER1会在Wired Ethernet Connection和Wired Ethernet Connection 2上发送路由器生存时间字段为65535的路由器通告消息,表示这是具有最长生存时间的默认路由器。

上例中我们只使用了最有限的命令和可选项,来启用转发、通告行为,并对外通告路由。如需进一步了解使用命令Set-NetIPInterface 和 Add-NetRoute来配置高级IPv6路由器行为的内容,请参阅Windows PowerShell命令行提示符中以下命令的帮助。

注意,Netsh命令中没有可选项能够指定如下内容。

  • 路由器通告消息中的路由器生存时间字段:如果路由器将自己通告为默认路由器,IPv6则会将路由器生存时间设置为一个比默认路由选用生存时间和有效生存时间都小的值。如果这两个值都没有指定,Windows中的IPv6会将这个值设置为65535。
  • 路由器通告消息中的默认路由器优先级字段:IPv6将默认路由器优先级字段作为中等优先级并设置为0。
  • 路由器通告消息中的当前跳数限制字段:IPv6会将当前跳数限制字段设置为0,向发送主机表示路由器没有指定默认跳数限制值。
  • 在前缀信息可选项中清除自治标记:IPv6会将自治标记设置为0,这是为了告知接收方的主机,它们不应该根据通告的前缀来配置无状态地址。
  1. 10.4.2 用Netsh配置静态路由

为了用Netsh工具创建静态IPv6路由器,必须在所需接口上启用发送和通告。在某接口上启用发送和通告,可以使用下述命令来实现:

netsh interface ipv6 set interface InterfaceNameOrIndex forwarding=enabled advertise=enabled

在默认情况下,所有IPv6接口上的发送和通告都是禁用的。

例如,现在要将一台运行Windows Server 2008 R2、名为ROUTER1的计算机配置为一台路由器。该ROUTER1有3个接口,分别名为Local Area Connection、Local Area Connection 2和Local Area Connection 3。Local Area Connection和Local Area Connection 2接口都和非主要子网连接。Local Area Connection 3接口则连接到了一个含有名为ROUTER2的相邻IPv6路由器的子网。图10-6所示为本示例的配置。


5f066d1cb3712104feb3419a324324917ae93613

为了在Local Area Connection和Local Area Connection 2接口上启用发送与通告,并在Local Area Connection 3接口上启用发送,需要在ROUTER1上运行下列命令:

netsh interface ipv6 set interface "Local Area Connection"
forwarding=enabled advertise=enabled
netsh interface ipv6 set interface "Local Area Connection 2"
forwarding=enabled advertise=enabled
netsh interface ipv6 set interface "Local Area Connection 3" forwarding=enabled

Local Area Connection 3接口所连接的子网已拥有通告路由器ROUTER2。

这些命令成功运行之后,ROUTER1会在两个非主要子网上使用Local Area Connection和Local Area Connection 2接口发送路由通告消息。然而,路由通告中不包含任何“前缀信息”或“路由信息”可选项(可以用于让所连接子网上的主机自动配置地址和路由)。为了通告“前缀信息”或“路由信息”可选项,必须配置ROUTER1,使它发布路由。

可以使用下述命令来添加一条路由,并将它发布出去:

netsh interface ipv6 add route IPv6Address/PrefixLength interface=InterfaceNameOrIndex
nexthop=IPv6Address metric=Integer publish=yes

在默认情况下,没有下一跳地址(前缀在链路上),路由度量是自动判断出来的,路由条目也是不发布的。

例如,为了配置路由器1并在Local Area Connection上通告链路上的子网前缀2001:db8:0: 1::/64,同时在Local Area Connection 2上通告链路上的子网前缀2001:db8:0:2::/64,需要使用如下命令:

netsh interface ipv6 add route 2001:db8:0:1::/64 "Local Area Connection" publish=yes
netsh interface ipv6 add route 2001:db8:0:2::/64 "Local Area Connection 2" publish=yes

通过配置在接口上通告出去的路由,其“前缀信息”可选项中的链路中(On-link)标记会被置位。如果链路中通告的路由前缀长度是64,ROUTER2就会将前缀信息可选项中的自治标记设置为允许主机创建无状态地址。注意,没有参数可以清除前缀信息可选项中的自治 标记。

在ROUTER 1上添加如下命令可以添加一条默认路由,并将它通告出去:

netsh interface ipv6 add route ::/0 "Local Area Connection 3" nexthop=fe80::2aa:
ff:fe98:2ab1 publish=yes

在运行命令之后,ROUTER1会在Local Area Connection和Local Area Connection 2上发送路由器生存时间字段为65535的路由器通告消息,表示这是具有最长生存时间的默认路由器。

上例中我们只使用了最有限的Netsh命令和可选项,来启动转发、通告行为,并对外通告路由。

注意,Netsh命令中没有可选项能够指定如下内容。

  • 路由器通告消息中的路由器生存时间字段:如果路由器将自己通告为默认路由器,IPv6则会将路由器生存时间设置为一个比默认路由选用生存时间和有效生存时间都小的值。如果这两个值都没有指定,Windows中的IPv6会将这个值设置为65535。
  • 路由器通告消息中的默认路由器优先级字段:IPv6将默认路由器优先级字段作为中等优先级并设置为0。
  • 路由器通告消息中的当前跳数限制字段:IPv6会将当前跳数限制字段设置为0,向发送主机表示路由器没有指定默认跳数限制值。
  • 在前缀信息可选项中清除自治标记:IPv6会将自治标记设置为0,这是为了告知接收方的主机,它们不应该根据通告的前缀来配置无状态地址。

10.4.3 使用路由和远程访问来配置静态路由
在运行Windows Server 2012、Windows Server 2008 R2或Windows Server 2008的计算机中,可以使用路由和远程访问管理单元来启用IPv6路由并配置静态IPv6路由。

如需启用对IPv6路由的支持,可执行如下操作。

1.在“路由和远程访问”管理单元的控制台树中,右键单击服务器名称,然后单击“属性”(Properties)。

2.在“常规”(General)选项卡中,单击“IPv6路由器”(IPv6 Router),然后选择“仅局域网路由”(Local Area Network[LAN] Routing Only)或“LAN和按需拨号路由”(LAN And Demand-Dial Routing)。

3.单击“确定”(OK)按钮。

如需添加静态IPv6路由,可执行如下操作。

1.在路由和远程访问管理单元的控制台树,打开IPv6。

2.右键单击“静态路由”(Static Routes),然后单击“新建静态路由”(New Static Route)。

3.在“IPv6静态路由”(IPv6 Static Route)对话框中,选择接口并输入目的地址、前缀长度、网关(下一跳IPv6地址)以及静态路由的度量(metric)。对于按需拨号路由,也可以选中“使用此路由来初始化按需拨号连接”(Use this route to initiate demand-dial Connections)复选框,这可以为匹配路由的流量启动按需拨号连接。图10-6所示为IPv6静态路由对话框的示例。

4.单击“确定”铵钮。

5.若要设置其他IPv6静态路由,则重复第2步~第4步。

如需修改“路由与远程访问”管理单元中现有的IPv6静态路由,在详细窗格右键单击路由并单击“属性”。如需删除“路由与远程访问”管理单元中现存的IPv6静态路由,在详细窗格中右键单击路由并单击“删除”按钮。


348192b9e10550e986cb1ee2abe0264b63b2e551
相关文章
|
21天前
|
域名解析 存储 网络协议
深入解析网络通信关键要素:IP 协议、DNS 及相关技术
本文详细介绍了IP协议报头结构及其各字段的功能,包括版本、首部长度、服务类型、总长度、标识、片偏移、标志、生存时间(TTL)、协议、首部检验和等内容。此外,还探讨了IP地址的网段划分、特殊IP地址的应用场景,以及路由选择的大致流程。最后,文章简要介绍了DNS协议的作用及其发展历史,解释了域名解析系统的工作原理。
79 5
深入解析网络通信关键要素:IP 协议、DNS 及相关技术
|
1月前
|
网络协议 大数据 云栖大会
2024云栖大会 预告:IPv6与DNS基础资源专场
2024云栖大会 预告:IPv6与DNS基础资源专场
2024云栖大会 预告:IPv6与DNS基础资源专场
|
17天前
|
前端开发 JavaScript 安全
深入解析 http 协议
HTTP(超文本传输协议)不仅用于传输文本,还支持图片、音频和视频等多种类型的数据。当前广泛使用的版本为 HTTP/1.1。HTTPS 可视为 HTTP 的安全增强版,主要区别在于添加了加密层。HTTP 请求和响应均遵循固定格式,包括请求行/状态行、请求/响应头、空行及消息主体。URL(统一资源定位符)用于标识网络上的资源,其格式包含协议、域名、路径等信息。此外,HTTP 报头提供了附加信息,帮助客户端和服务端更好地处理请求与响应。状态码则用于指示请求结果,如 200 表示成功,404 表示未找到,500 表示服务器内部错误等。
16 0
深入解析 http 协议
|
1天前
|
弹性计算 安全 关系型数据库
阿里云国际版远程连接Windows系统的ECS服务器时提示协议错误
阿里云国际版远程连接Windows系统的ECS服务器时提示协议错误
|
27天前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
在网络数据的海洋中,网络爬虫遵循HTTP协议,穿梭于互联网各处,收集宝贵信息。本文将从零开始,使用Python的requests库,深入解析HTTP协议,助你构建自己的网络爬虫帝国。首先介绍HTTP协议基础,包括请求与响应结构;然后详细介绍requests库的安装与使用,演示如何发送GET和POST请求并处理响应;最后概述爬虫构建流程及挑战,帮助你逐步掌握核心技术,畅游数据海洋。
53 3
|
1月前
|
消息中间件 安全 Kafka
Kafka支持SSL/TLS协议技术深度解析
SSL(Secure Socket Layer,安全套接层)及其继任者TLS(Transport Layer Security,传输层安全)是为网络通信提供安全及数据完整性的一种安全协议。这些协议在传输层对网络连接进行加密,确保数据在传输过程中不被窃取或篡改。
63 0
|
2月前
|
开发者 C# Windows
WPF与游戏开发:当桌面应用遇见游戏梦想——利用Windows Presentation Foundation打造属于你的2D游戏世界,从环境搭建到代码实践全面解析新兴开发路径
【8月更文挑战第31天】随着游戏开发技术的进步,WPF作为.NET Framework的一部分,凭借其图形渲染能力和灵活的UI设计,成为桌面游戏开发的新选择。本文通过技术综述和示例代码,介绍如何利用WPF进行游戏开发。首先确保安装最新版Visual Studio并创建WPF项目。接着,通过XAML设计游戏界面,并在C#中实现游戏逻辑,如玩家控制和障碍物碰撞检测。示例展示了创建基本2D游戏的过程,包括角色移动和碰撞处理。通过本文,WPF开发者可更好地理解并应用游戏开发技术,创造吸引人的桌面游戏。
120 0
|
2月前
|
存储 开发者 C#
WPF与邮件发送:教你如何在Windows Presentation Foundation应用中无缝集成电子邮件功能——从界面设计到代码实现,全面解析邮件发送的每一个细节密武器!
【8月更文挑战第31天】本文探讨了如何在Windows Presentation Foundation(WPF)应用中集成电子邮件发送功能,详细介绍了从创建WPF项目到设计用户界面的全过程,并通过具体示例代码展示了如何使用`System.Net.Mail`命名空间中的`SmtpClient`和`MailMessage`类来实现邮件发送逻辑。文章还强调了安全性和错误处理的重要性,提供了实用的异常捕获代码片段,旨在帮助WPF开发者更好地掌握邮件发送技术,提升应用程序的功能性与用户体验。
42 0
|
2月前
|
API C# Shell
WPF与Windows Shell完美融合:深入解析文件系统操作技巧——从基本文件管理到高级Shell功能调用,全面掌握WPF中的文件处理艺术
【8月更文挑战第31天】Windows Presentation Foundation (WPF) 是 .NET Framework 的关键组件,用于构建 Windows 桌面应用程序。WPF 提供了丰富的功能来创建美观且功能强大的用户界面。本文通过问题解答的形式,探讨了如何在 WPF 应用中集成 Windows Shell 功能,并通过具体示例代码展示了文件系统的操作方法,包括列出目录下的所有文件、创建和删除文件、移动和复制文件以及打开文件夹或文件等。
54 0
|
2月前
|
数据库 Windows
超详细步骤解析:从零开始,手把手教你使用 Visual Studio 打造你的第一个 Windows Forms 应用程序,菜鸟也能轻松上手的编程入门指南来了!
【8月更文挑战第31天】创建你的第一个Windows Forms (WinForms) 应用程序是一个激动人心的过程,尤其适合编程新手。本指南将带你逐步完成一个简单WinForms 应用的开发。首先,在Visual Studio 中创建一个“Windows Forms App (.NET)”项目,命名为“我的第一个WinForms 应用”。接着,在空白窗体中添加一个按钮和一个标签控件,并设置按钮文本为“点击我”。然后,为按钮添加点击事件处理程序`button1_Click`,实现点击按钮后更新标签文本为“你好,你刚刚点击了按钮!”。
126 0

推荐镜像

更多