Windows VPN 服务器可以与 VPN 客户端通信,但不会将数据包从其本地网络发送到 VPN 客户端

Windows VPN 服务器可以与 VPN 客户端通信,但不会将数据包从其本地网络发送到 VPN 客户端

我想使用采用拆分隧道和子网外寻址的 SSTP VPN 配置 Windows Server 2012 及其 Windows 7 和 Windows 8 VPN 客户端,但遇到了一个问题:RRAS 服务器不会从除其自身之外的任何机器向 VPN 客户端发送数据包。

我的 VPN 服务器在 Amazon 的“虚拟私有云”上运行,因此它只有一个 NIC,其 IP 地址位于与我所有其他 Amazon VPC 服务器共享的私有 RFC1918 网络上,并且有一个公共 IP,该公共 IP 将所有流量通过 NAT 转发到该私有地址(Amazon 称之为“弹性 IP”)。

我已经安装了 RRAS 并设置了 VPN。Amazon 上的私有子网是 172.16.0.0/17(我称之为“Amazon LAN”),但我希望所有 VPN 客户端都使用范围 10.128.0.0/20(我称之为“VPN LAN”)。

在我的亚马逊控制面板中,我完成了以下操作:

  • 禁用 VPN 服务器的源/目标检查
  • 在 10.128.0.0/20 池的路由表中添加了一个指向 VPN 服务器网络接口的条目。

在路由和远程访问 MMC 中,在服务器名称的属性菜单中,我完成了以下操作:

  • 常规选项卡 -> IPv4 路由器(已选中),启用 LAN 和请求拨号路由
  • 常规选项卡 -> IPv4 远程访问服务器(已选中)
  • IPv4 选项卡 -> 启用 IPv4 转发(已选中)
  • IPv4 选项卡 -> 静态地址池,并指定 10.128.0.1-10.128.15.154

在我的客户端和所有服务器上,我都确保防火墙明确允许 ICMP,或者完全禁用防火墙(当然,这不是永久计划)。

在客户端上,为了启用拆分隧道,我转到 VPN 连接的属性->网络->IPv4->属性->高级->IP 设置选项卡,取消选中“在远程网络上使用默认网关”,并选中“禁用基于类的路由添加”。

此时,我的客户端可以使用 Windows 7/8 VPN 客户端进行连接。它们被分配了来自 10.128.0.0/20 池的 IP,但由于它们没有自动设置任何路由,因此无法与远程网络通信。我可以设置到远程网络和 VPN 网络的路由,如下所示(在客户端上):

route add 172.16.0.0/17 <VPN IP ADDRESS> 
route add 10.128.0.0/20 <VPN IP ADDRESS> 

现在客户端可以 ping VPN 服务器的 VPN LAN 地址 (10.128.0.1),以及其 Amazon LAN 地址 (172.16.1.32)。但是,当尝试与 Amazon LAN 上的其他机器通信时,它会遇到一个问题:ping 不会收到回复。

因此,例如,如果客户端尝试 ping 一个我知道已启动的系统并响应 172.16.0.113 之类的 ping,它将看不到这些回复(它会显示“请求超时”)。VPN 服务器上的 Wireshark 确认它看到了来自客户端的 ping,甚至看到了从 172.16.0.113 发送的回复,但该回复显然从未返回到客户端。

此外,如果我从 172.16.0.113 ping 客户端的 VPN LAN 地址,VPN 服务器上的 Wireshark 会看到 ping,但看不到回复。

总结一下:

  • VPN 服务器可以 ping 通 Amazon LAN(172.16.0.0/17)上的其他机器并接收回复,并且该网络上的其他机器也可以对其执行相同的操作。
  • 在客户端按照前面描述的方式添加正确的路由后,VPN 客户端可以 ping 服务器的 Amazon LAN 地址并接收回复。
  • 在客户端按照前面的方法添加正确的路由后,VPN 客户端可以 ping 通服务器的 VPN LAN 地址 10.128.0.1,VPN 服务器也可以 ping 通客户端在 10.128.0.0/20 范围内的 VPN LAN 地址。
  • VPN 客户端可以向 Amazon LAN 上的计算机发送 ping,但当这些计算机发送回复时,它们会停留在 VPN 服务器上 - 它们不会被转发到客户端,从而导致客户端上出现“请求超时”消息。相反,当 Amazon LAN 上的计算机尝试 ping 客户端的 10.128.0.0/20 VPN LAN 地址时,VPN 服务器会看到 ping,但客户端永远不会看到,因此不会生成回复。

为什么 VPN 服务器不将数据包从 Amazon LAN 发送到 VPN LAN 上的客户端?它肯定可以与 VPN LAN 上的客户端通信,并且启用了路由,并且它愿意将数据包从 VPN LAN 路由到 Amazon LAN,但不能反向路由。我在这里遗漏了什么?

航线

以下是 VPN 客户端的路由表。客户端是运行 Windows 8 的 VirtualBox VM。它的 vbox 适配器的 IP 地址是 /24 上的 10.0.2.15。此客户端位于 NAT 后面(实际上,它位于双 NAT 后面,因为 vbox 适配器已 NAT 到我的本地网络,而本地网络又已 NAT 到互联网)。此路由表来自手动添加至 10.128.0.0/20 和 172.16.0.0/17 的路由。

IPv4 Route Table
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0         10.0.2.2        10.0.2.15     10
         10.0.2.0    255.255.255.0         On-link         10.0.2.15    266
        10.0.2.15  255.255.255.255         On-link         10.0.2.15    266
       10.0.2.255  255.255.255.255         On-link         10.0.2.15    266
       10.128.0.0    255.255.240.0         On-link        10.128.0.3     15
       10.128.0.3  255.255.255.255         On-link        10.128.0.3    266
    10.128.15.255  255.255.255.255         On-link        10.128.0.3    266
    54.213.67.179  255.255.255.255         10.0.2.2        10.0.2.15     11
        127.0.0.0        255.0.0.0         On-link         127.0.0.1    306
        127.0.0.1  255.255.255.255         On-link         127.0.0.1    306
  127.255.255.255  255.255.255.255         On-link         127.0.0.1    306
       172.16.0.0    255.255.128.0         On-link        10.128.0.3     15
   172.16.127.255  255.255.255.255         On-link        10.128.0.3    266
        224.0.0.0        240.0.0.0         On-link         127.0.0.1    306
        224.0.0.0        240.0.0.0         On-link         10.0.2.15    266
        224.0.0.0        240.0.0.0         On-link        10.128.0.3    266
  255.255.255.255  255.255.255.255         On-link         127.0.0.1    306
  255.255.255.255  255.255.255.255         On-link         10.0.2.15    266
  255.255.255.255  255.255.255.255         On-link        10.128.0.3    266
===========================================================================
Persistent Routes:
  None

以下是运行 Windows Server 2012 的 RRAS 服务器的路由表。如上所述,此服务器也位于 NAT 后面。它只有一个 NIC。其私有 IP 地址为 172.16.1.32,位于 /23 上(它本身是更大的 /17 网络的一部分;我认为忽略 /23 之外的 /17 部分是公平的,因为 /23 上的其他机器也无法到达或被 VPN 客户端到达)。

VPN 虚拟适配器有自己的地址 10.128.0.1,该地址在客户端首次连接时自动分配。您看到的 10.128.0.1(到自身)和 10.128.0.2(到其唯一客户端)的路由也是在那时自动添加的。无需手动向 VPN 服务器添加任何路由。

IPv4 Route Table
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0       172.16.0.1      172.16.1.32     10
       10.128.0.1  255.255.255.255         On-link        10.128.0.1    286
       10.128.0.2  255.255.255.255       10.128.0.2       10.128.0.1     31
        127.0.0.0        255.0.0.0         On-link         127.0.0.1    306
        127.0.0.1  255.255.255.255         On-link         127.0.0.1    306
  127.255.255.255  255.255.255.255         On-link         127.0.0.1    306
  169.254.169.250  255.255.255.255       172.16.0.1      172.16.1.32     10
  169.254.169.251  255.255.255.255       172.16.0.1      172.16.1.32     10
  169.254.169.254  255.255.255.255       172.16.0.1      172.16.1.32     10
       172.16.0.0    255.255.254.0         On-link       172.16.1.32     11
      172.16.1.32  255.255.255.255         On-link       172.16.1.32    266
     172.16.1.255  255.255.255.255         On-link       172.16.1.32    266
       172.16.2.0    255.255.254.0      172.168.0.1      172.16.1.32     11
        224.0.0.0        240.0.0.0         On-link         127.0.0.1    306
        224.0.0.0        240.0.0.0         On-link       172.16.1.32    266
        224.0.0.0        240.0.0.0         On-link        10.128.0.1    286
  255.255.255.255  255.255.255.255         On-link         127.0.0.1    306
  255.255.255.255  255.255.255.255         On-link       172.16.1.32    266
  255.255.255.255  255.255.255.255         On-link        10.128.0.1    286
===========================================================================
Persistent Routes:
  None

以下是服务器私有网络上另一台机器的路由表,也运行 Server 2012。它有一个 NIC,其私有 IP 地址为 172.16.1.177 - 这意味着它与 VPN 服务器位于同一个 /23 上。(请注意,到 10.128.0.0/20 的路由是在网关上设置的,网关由 Amazon 控制,因此您不会在这里看到它。我已将正确的路由添加到 Amazon,VPN 服务器上的 Wireshark 可以看到数据包就是明证。)

IPv4 Route Table
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0       172.16.0.1     172.16.1.177     10
        127.0.0.0        255.0.0.0         On-link         127.0.0.1    306
        127.0.0.1  255.255.255.255         On-link         127.0.0.1    306
  127.255.255.255  255.255.255.255         On-link         127.0.0.1    306
  169.254.169.250  255.255.255.255       172.16.0.1     172.16.1.177     10
  169.254.169.251  255.255.255.255       172.16.0.1     172.16.1.177     10
  169.254.169.254  255.255.255.255       172.16.0.1     172.16.1.177     10
       172.16.0.0    255.255.254.0         On-link      172.16.1.177    266
     172.16.1.177  255.255.255.255         On-link      172.16.1.177    266
     172.16.1.255  255.255.255.255         On-link      172.16.1.177    266
        224.0.0.0        240.0.0.0         On-link         127.0.0.1    306
        224.0.0.0        240.0.0.0         On-link      172.16.1.177    266
  255.255.255.255  255.255.255.255         On-link         127.0.0.1    306
  255.255.255.255  255.255.255.255         On-link      172.16.1.177    266
===========================================================================
Persistent Routes:
  None

以下是亚马逊控制台中的路线。我认为这些是正确的 - 交通毕竟,它回到了 VPN 服务器,只是消失在里面 - 但如果有人想看到它们,它们就在这里。(亚马逊的做法有点奇怪。eni-2f3e8244 / i-77e26440指的是 VPN 服务器上的 NIC,igw-d4bc27bc指的是亚马逊控制的互联网 NAT/网关,我的所有实例都使用它来与互联网通信。)

10.128.0.0/20   eni-2f3e8244 / i-77e26440   
172.16.0.0/17   local   
0.0.0.0/0       igw-d4bc27bc

答案1

如果您在服务器上添加一条静态路由,告诉它们为了到达 10.128.0.0/20,它们必须通过 VPN 的服务器 LAN 地址,会怎么样?

route add 10.128.0.0 mask 255.255.240.0 a.b.c.d

将 abcd 替换为 VPN 服务器的 LAN 地址。

这至少可以排除亚马逊路由的问题。

相关内容