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

Mic*_*ter 8 vpn routing rras windows-server-2012

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

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

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

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

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

在路由和远程访问 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> 
Run Code Online (Sandbox Code Playgroud)

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

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

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

所以,回顾一下:

  • VPN 服务器可以 ping 亚马逊局域网 (172.16.0.0/17) 上的其他机器并接收回复,该网络上的其他机器也可以对其执行相同操作。
  • VPN 客户端可以 ping 服务器的 Amazon LAN 地址并接收回复,在客户端如前所述添加正确的路由之后。
  • VPN客户端可以ping通服务器的VPN局域网地址10.128.0.1,VPN服务器可以ping通客户端在10.128.0.0/20范围内的VPN局域网地址,客户端按照前面的描述添加路由正确路由后。
  • 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 到 Internet)。这个路由表是从手动添加路由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
Run Code Online (Sandbox Code Playgroud)

以下是来自运行 Windows Server 2012 的 RRAS 服务器的路由表。如上所述,该服务器也位于 NAT 之后。它只有一个网卡。它的私有 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
Run Code Online (Sandbox Code Playgroud)

这是服务器专用网络上另一台机器的路由表,也运行 Server 2012。它有一个 NIC,其专用 IP 地址为 172.16.1.177 - 这意味着它与 VPN 服务器位于同一 /23 上。(注意到10.128.0.0/20的路由是在网关上设置的,是Amazon控制的,所以这里看不到。我已经添加了到Amazon的正确路由,Wireshark在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.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
Run Code Online (Sandbox Code Playgroud)

以下是 Amazon 控制台中的路由。我确实认为这些是正确的 -毕竟,流量正在返回 VPN 服务器,只是消失在其中 - 但如果有人想看到它们,它们就在这里。(Amazon 做的事情有点奇怪。eni-2f3e8244 / i-77e26440指的是 VPN 服务器上的 NIC,igw-d4bc27bc指的是 Amazon 控制的 Internet NAT/网关,我的所有实例都用于与 Internet 通信。)

10.128.0.0/20   eni-2f3e8244 / i-77e26440   
172.16.0.0/17   local   
0.0.0.0/0       igw-d4bc27bc
Run Code Online (Sandbox Code Playgroud)

Sil*_*ina 1

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

route add 10.128.0.0 mask 255.255.240.0 a.b.c.d
Run Code Online (Sandbox Code Playgroud)

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

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