我有两个网络:
网络 A 私有 10.0.0.0/24
网络 B 私有 10.0.10.0/24
两者都运行 Sonicwall ~200 台设备,通过 VPN 隧道连接。
我能够从任一位置到达隧道任一端的特定内部地址,效果非常好。
我想要做的是将所有网络流量路由到特定域(例如 whatismyip.com),以便:
当网络 A 上的某人尝试访问网站 whatismyip.com 时,该请求将通过 VPN 路由到网络 B,使用网络 B 的公共 IP 地址。
当网络 B 上的某人尝试访问该站点时,它应该正常来自网络 B 的公共 IP。
我尝试使用 Sonicwall 路由规则来实现这一点,但效果不如我预期。我真的不知道从哪里开始。
实现此目的所需的规则(防火墙/ Nat / VPN / 路由)配置概要是什么?
答案1
这看起来并不复杂...
网络 A 路由器上使用网络 B 路由器作为下一跳的 72.233.89.196/29 路由不能解决问题吗?
在这种情况下,您的路由器可能是您的防火墙 == vpn 设备 == 网关。
当你尝试这样做时会发生什么?
答案2
您可以尝试使用策略路由将发往 whatsmyip.com IP 的任何流量推送到 Sonicwall B 的 LAN 地址。这会将其推送到 VPN,而 Sonicwall B 将使用其路由表将其发送到互联网。您可能还想在 Sonicwall B 上创建防火墙规则以允许来自 LAN A 的流量(如果尚未设置为允许所有流量)。
答案3
您要做的是根据目标主机名而不是目标 IP 设置路由策略。
将所有流量从网络 A 路由到网络 B 并不难。在网络 A 中除作为 vpn 节点的机器之外的每台机器上设置路由策略,以使用 vpn 节点作为默认路由器,网络 A 的 vpn 节点使用网络 B 中的 vpn 对等体作为默认路由器。将网络 B 的最终传出机器设置为 ip_forward 和 masquerade 开启(firewalld 是配置此功能最简单的方法)因此,只要目的地超出网络 A,网络 A 中的每台机器都会寻求 vpn 路由。
一旦成功完成此操作。您需要基于目标主机名的路由分割,即您希望一些站点仍使用网络 A 的原始公共 IP,而其他站点则不使用。
不幸的是,默认路由规则是基于目标 IP 而不是主机名的。首先,您可以设置拆分路由,前提是您至少知道其中一个 IP。尝试先回滚到默认路由,然后添加此特殊 IP 以使用 vpn 节点。请注意,网络掩码现在是 32 位,即 255.255.255.255。要获取网站的 IP,只需简单 ping 即可显示其 IP,例如whatismyip.com @ 104.21.89.158
。它可能有许多 IP,甚至可能会更改它们。
看起来离成功只有一步之遥了。现在你需要劫持本地机器的主机名解析 (DNS)。在 Linux 上,你需要将 IP 主机名链接信息放到/etc/hosts
或/etc/hostname
。这可能会解决问题。
如果仍然不起作用,您可以考虑squid
在网络 A 的 vpn 节点上使用反向代理。它执行透明代理,这意味着劫持任何传出访问。