IP 地址分配与“路由和远程访问”服务

欲了解关于The Cable Guy的所有专栏的的列表和更多信息,请单击此处。
当使用拔号或虚拟专用网(VPN)连接时,远程访问客户端在点对点(PPP)连接的协商期间通过“Internet协议控制协议(IPCP) IP 地址”选项(RFC 1332)分配到一个 IP 地址。 远程访问服务器通过 DHCP 服务器或本地配置的静态 IP 地址池获得分配给该远程访问客户端的 IP 地址。
“路由和远程访问”服务可以向远程访问客户端分配不同类型的地址: 或者是一个子网内(on-subnet)地址,或者是一个子网外(off-subnet)地址。 所使用的地址类型可能影响可达性(reachability),除非对路由基础结构作出额外变更。
注意: 本文仅描述当远程访问客户端被配置为自动获得 IP 地址,并且当远程访问连接的远程访问策略被配置为允许远程访问服务器提供地址,以及当用户帐户的拔入属性不是被配置为使用静态 IP 地址时的“路由和远程访问”服务的 IP 地址分配行为。
| 分配给远程访问客户端的 IP 地址类型 | |
| 获得 IP 地址的方法 | |
| 地址用尽 | |
| 更多信息 |
分配给远程访问客户端的 IP 地址可以来自以下地址范围:
| • | 子网内地址范围。 这是远程访问服务器所连接到的内部网子网上的一个地址范围。 每当远程访问服务器从 DHCP 服务器获得远程访问客户端的 IP 地址,或者当手动配置的静态池包含某个被连接子网的地址范围内的 IP 地址时,就会使用这类地址。 使用子网内地址的优点在于不需要对路由基础结构作出任何变更。 |
| • | 子网外地址范围 这是表示逻辑地连接到远程访问服务器的一个不同子网的一个地址范围。 当静态池包含位于一个单独的子网上的 IP 地址时,就会使用这类地址。 使用子网外地址的优点在于,远程访问客户端的 IP 地址更容易识别。 |
地址的类型决定了流量从 Intranet 节点转发到连接的远程访问客户端的方式。
当某个连接的远程访问客户端发送一个包时,将发生以下过程:
1. | 包将通过 PPP 链路发送到远程访问服务器。 |
2. | 远程访问服务器使用 IP 转发过程来将包转发到某个连接的子网上的临近主机,或者更可能将它转发到一个连接的 Intranet(内部网) 上的一个临近路由器。 关于 IP 转发过程的更多信息,请参见理解 IP 路由表(Cable Guy 2001年12月文章)。 |
当流量被发送到远程访问客户端时,将它传输到远程访问服务器的过程是不同的,具体取决于远程访问客户端是分配到一个子网内地址,还是分配到一个子网外地址。
对于一个子网内地址,远程访问服务器将充当一个代理“地址解析协议(ARP)”设备,对于分配给连接的远程访问客户端的 IP 地址,它要负责响应针对这些地址的 ARP Request 帧。 远程访问服务器维护着分配给远程访问客户端的 IP 地址的列表,并代表这些客户端响应 ARP 请求。
对于正在使用一个子网上的地址的远程访问客户端,将包传输给它的过程如下:
1. | 远程服务器所连接到的 Intranet 子网上的一个节点发送一个 ARP Request 帧,请求被分配到远程访问客户端的 IP 地址的节点的 MAC 地址。 |
2. | 远程访问服务器接收 ARP 请求,检查连接的远程访问客户端表,并在找到一个匹配项的情况下,使用一个包含它自己的 MAC 地址的 ARP Reply 消息来响应该 ARP 请求。 |
3. | Intranet 子网上的节点将包转发给远程访问服务器。 |
4. | 远程访问服务器接收该包,检查目标 IP 地址,确定对应的 PPP 连接,然后通过这个 PPP 连接转发该包。 |
对于子网内地址,邻近节点将执行直接的传输,似乎就像远程客户端直接连接到邻近节点的子网上一样。 邻近节点不知道目的地实际上是通过远程访问服务器来访问的。
对于子网外地址,远程访问服务器充当路由器,在所连接到的子网上的节点(通常是路由器)和连接的远程访问客户端之间转发包。 对于正在使用一个子网外地址的远程访问客户端,将包传输给它的过程如下:
1. | 远程服务器所连接到的 Intranet 子网上的一个节点发送一个ARP Request帧,请求对应于远程访问服务器的 IP 地址的 MAC 地址。 |
2. | 远程访问服务器使用一个包含它自己的 MAC 地址的 ARP Reply 消息来响应该 ARP 请求。 |
3. | Intranet 子网上的节点将包转发给远程访问服务器。 |
4. | 远程访问服务器接收该包,检查目标 IP 地址,确定对应的 PPP 连接,然后通过这个 PPP 连接转发该包。 |
对于子网外地址,邻近节点执行间接传输,把远程访问服务器当作是一个路由器。
为了使分配了一个子网外地址的远程访问客户端能够访问 Intranet 上的节点,路由基础结构必须包含和子网外地址范围相匹配的路由,并且这些路由要指向远程访问服务器的一个 Intranet 接口。 为了添加这些路由,您可以执行以下操作之一:
| • | 由于对应于子网外地址范围的路由是自动添加到远程访问服务器的路由表中的,您可以给远程访问服务器配置某种路由协议,比如路由信息协议(RIP)或开放最短路径优先(OSPF)协议,以便把不在子网上的路由传播到邻近路由器。 |
| • | 把对应于子网外地址范围的路由当作静态路由添加到某个邻近路由器,并配置该路由器来将那些路由传播到它的邻近路由器。 |
对于没有使用诸如 RIP 或 OSPF 之类的路由协议的小型网络,您还可以手动向路由器添加对应于子网外地址范围的路由。
您可以将“路由和远程访问”服务配置为自动获得远程访问客户端的 IP 地址,或者从某个静态 IP 地址池获得地址。 这个配置将在您使用“路由和远程访问服务器安装向导”时进行,您可以在IP选项卡中对“路由和远程访问”管理单元中的某个远程访问服务器的属性进行更改。
当配置为自动获得 IP 地址时,“路由和远程访问”服务将指示 TCP/IP 的 DHCP 客户端组件使用 DHCP 来一次获得 10 个 IP 地址。
“路由和远程访问”服务在第一个远程访问客户端连接时(而不是在“路由和远程访问”服务器启动时)尝试获得前10个 IP 地址。 “路由和远程访问”服务把从 DHC P获得的第一个 IP 地址用于内部(Internal)接口(可从“路由和远程访问”管理单元中的“IP路由\常规”节点中看到)。 后续的地址将在基于 IP 的远程访问客户端连接时分配给它们。 在远程客户端断开连接时恢复的任何 IP 地址都将被重新使用。
当从 DHCP 获得的前10个 IP 地址全都被同时使用,而此时另一个远程访问客户端尝试建立连接时,“路由和远程访问”服务将使用 DHCP 客户端组件来获得另外10个地址。 您可以通过改变HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ RemoteAccess\Parameters\Ip\InitialAddressPoolSize注册表项的值(DWORD)来修改一次获得的地址数量。
如果不能联系到一个 DHCP 服务器,DHCP 客户端将返回从 169.254.0.1 到 169.254.255.254 的“自动专用 IP 地址(APIPA)”范围内的地址。 APIPA 地址是子网外地址,它们在 Intranet 路由基础结构中没有对应的路由。 远程访问客户端被分配到一个 APIPA 地址,但是却不能越过远程访问服务器开展通信。
注意:存在一些允许将 APIPA 地址用作子网内地址或子网外地址的办法;然而,APIPA 地址的存在或者意味着存在配置错误或者连通性问题,以至于无法连接到 DHCP 服务器,或者意味着在 DHCP 服务器上的范围中缺乏用于远程访问服务器所连接到的子网的 IP 地址。 这些问题应该纠正,而不是配置这些方法来将 APIPA 地址用于远程访问客户端。
“路由和远程访问”服务尝试使用在“路由和远程访问”服务器属性的IP选项卡上的适配器中选择的接口来获得 DHCP 分配的地址,如下图所示。
这个适配器通常是在“路由和远程访问服务器安装向导”的网络选择页面上选择的。 如果选择了错误的适配器(例如选择了Internet接口),那么使用该适配器来联系 DHCP 服务器的尝试就会失败,从而返回 APIPA 地址。 如果选择允许 RAS 选择适配器,“路由和远程访问”服务就会在启动时随机挑选一个局域网接口来使用,从而可能导致使用错误的适配器。
当“路由和远程访问”服务停止时,它将发送 DHCPRelease 消息来释放通过 DHCP 获得的所有 IP 地址。
静态地址池是一个或多个地址范围。 当配置了一个静态 IP 地址时,远程访问服务器就会将第一个地址范围中的第一个 IP 地址用于Internal(内部)接口。 后续的地址将在基于 TCP/IP 的远程访问客户端连接时分配给它们。 在远程客户端断开连接时恢复的任何 IP 地址都将被重新使用。
静态 IP 地址池中的地址范围可以是在子网内的地址范围、子网外的地址范围,或者是子网内或子网外地址的混合。
如果任何地址范围中的任何地址均是子网外地址,您就必须添加路由来向 Intranet 基础结构汇总子网外地址范围,以便发送到远程访问客户端的流量被转发到远程访问服务器,然后再由远程访问服务器转发到适当的远程访问客户端。 为了给路由提供最佳的地址范围汇总,应该选择能够使用单个前缀和子网掩码来表示的地址范围。 例如,从192.168.2.1到192.168.3.254的地址范围可以表示为192.168.2.0,子网掩码为255.255.254.0(192.168.2.0/23)。
在使用上述任一种方法来获得地址时,均有可能发生地址用尽的情况。
在自动获得 IP 地址时,DHCP 服务器有时可能会用完远程访问服务器所连接到的子网的地址。 当发生这种情况时,DHCP 服务器不再响应针对该子网的地址请求,而 DHCP 客户端将返回 APIPA 地址。 远程访问客户端能够连接,但是不能在 Intranet 上通信。
当您用完静态地址池中的地址时,远程访问客户端就不能连接。 由于远程访问服务器没有地址可分配,IPCP 协商就不能完成,连接尝试就会终止。 对于运行 Windows 2000 或 Windows XP 的远程访问客户端,所显示的错误消息将是 “Error 736: The remote computer terminated the control protocol(Error 736: 远程计算机已终止控制协议)”。
为了避免地址用尽,请执行以下步骤:
| • | 当设置为自动获得 IP 地址时,确保用于远程访问服务器所连接到的子网的 DHCP 范围包括足够的地址,以便为可能同时连接到网络的远程访问客户端分配地址。 |
| • | 当从静态池获得 IP 地址时,确保该地址池具有足够的地址,以便为可能同时连接到网络的远程访问客户端分配地址。 |
欲了解关于远程访问连接的更多信息,请参考以下资源:
| • | |
| • |
关于本专栏内容的任何反馈,请给Microsoft TechNet写信。 请注意这不代表技术支持,因此您的来信不保证会得到回复。
欲获得关于The Cable Guy的所有专栏的的列表和更多信息,请点击此处。