我们目前有两个站点通过固定 VPN 连接。站点 1(公司办公室)有一台 SonicWall Pro 2040 Enhanced,站点 2(数据中心)有一台 SonicWall NSA 2400。站点 1 的 IP 方案为 10.0.0.0/255.255.255.0,站点 2 的 IP 方案为 10.0.1.0/255.255.255.0。
我遇到的问题是,我们有远程用户通过 GlobalVPN 客户端连接到站点 1,但由于该 VPN 连接的路由设置方式,他们无法访问 10.0.1.0 网络上的资源。我尝试手动添加静态路由,但似乎 SonicWall 阻止了该 VPN 连接跳转到另一台设备。
一种选择是在站点 2 上复制远程 VPN 用户和设置,但这需要我们手动同步这些用户,并且远程用户需要建立两个单独的 VPN 连接——这并不理想。
有没有 SonicWall 专家知道如何配置 VPN 连接以允许访问站点 2 资源?
答案1
我不知道 Pro 的情况,但是当使用 Global VPN 客户端连接到 NSA 时,您必须指定该用户可以访问哪些网络(单独或按他们所属的组)。例如,我创建了一个地址组对象 (REMOTE_USER_ACCESS),其中包含我希望我的 VPN 用户能够访问的所有网络(我们的设置与您的完全相同……办公室和数据中心,两端各有一个由 NSA3500 完成的站点到站点 VPN 隧道……用户连接到站点 A 上的 VPN,但从站点 B 上的专用网络访问资源)。然后,我转到个人用户的帐户(用户 > 本地用户)或组(用户 > 本地组),编辑用户,单击 VPN 访问选项卡并添加 REMOTE_USER_ACCESS 对象。VPN 用户现在可以访问我在该地址对象中指定的任何网络。
就像我说的,这是为 NSA 准备的,但我猜 Pro 不会有太大不同。
答案2
这与防火墙如何在内部识别远程 VPN 用户的 IP 地址有关。对于某些 VPN 客户端,防火墙会将用户 X 识别为其“真实”IP 地址。只要防火墙 A 是所有预期内部目标返回互联网的网关,这就不是问题。但是,如果您通过 VPN 路由数据包,您几乎肯定会发现返回的数据包通过与您预期不同的 NAT 站返回。
假设远程用户 X 访问防火墙 A,该防火墙通过 VPN 连接到防火墙 B,防火墙 B 后面是您希望用户 X 访问的服务器 S。防火墙 A 后面的服务器将来自 X 的原始连接视为其远程 IP 地址。
在这种情况下,来自 X 的数据包通过隧道传输到 A,然后通过 VPN 传输到 B,再由 B 转发到 S。为了闭合循环并发回信息,S 需要将数据包发回 X。数据包发往 B。问题就出在这里:B 到 X 的路由是直接通过互联网——而不是通过 VPN,而 VPN 才是数据包的真正来源。此数据包可能会通过 NAT 传输到 B 的某个地址,然后直接通过互联网发送。因此,当数据包到达 X 时,它上面的 IP 地址(可能还有端口)与 X 认为它实际上试图进行的任何对话都不相关,因此 X(应该)会丢弃它。循环永远不会闭合。
几年前,我在 3Com SuperStack-3 防火墙上就遇到过这种情况,据我所知,它与当时的 Sonicwall 有关。我们在一个将两个 SS3 VPN 连接在一起的站点上也遇到了这个问题。
我们从来没有用该硬件解决这个问题。
我们现在使用的 VPN 解决方案将本地 IP 分配给 VPN 客户端,因此就内部网络而言,VPN 客户端是内部连接的。这意味着在示例情况下,防火墙 B 将 X 视为通过防火墙 A 的 VPN 发起的,并且路由有效。