考虑以下网络^^^。
Azure 中的虚拟网络设置:
10.10.0.0/16
包含 1 个子网10.10.0.0/16
和一个网关子网10.10.1.0/29
。
Azure 知道我们的网络是什么样的,2 个地址空间:
192.168.101.0/24
&10.246.0.0/16
通过一个额外的路由器。
我想要实现与 Azure 之间的双向通信。
目前,我们在本地机器(具有 IP 192.168.101.36
)上进行了设置,该机器运行带有 RRAS 的 Windows Server 2012 R2。它拨入 Azure,并且我们已建立连接。
RRAS 上的第一个路由是10.10.0.0/16
。这确保本地网络 ( 192.168.101.0/24
) 中的任何计算机都可以访问 Azure 网络。第二个路由是192.168.101.0/24
,这是为了确保 Azure 可以与我们通信。问题:这里的网关应该是什么:192.168.101.1
(DHCP 服务器)还是192.168.101.36
(RRAS 服务器)
第三条路由确保进入 RRAS 服务器且想要与网络通信的任何流量都10.246.0.0/16
被转发到192.168.101.10
3G 调制解调器/路由器。
现在我们缺少一个部分,但让我先解释一下什么是有效的:
- Azure 中的计算机可以 ping 任何
192.168.101.0/24
- 我们本地网络 (
192.168.101.0/24
) 中的一台机器可以 ping Azure 中的任何内容 (10.10.0.0/24
)。 - 我们内部网络中的一台机器 (
192.168.101.0/24
) 可以 ping 3G 调制解调器后面的任何东西 (10.246.0.0/24
)。
但是(这是我的下一个也是最重要的问题)Azure 中没有机器可以 ping 通 3G 网络除非我在 3G 调制解调器/路由器上添加了一条静态路由,内容是:10.10.0.0/16
到网关192.168.101.36
。
为什么 3G 调制解调器/路由器不知道如何将流量重定向回192.168.101.36
,毕竟它有那个特定的 IP 作为网关。
是因为10.*.*.*
和192.168.*.*
不可路由吗?
更新:查看了 3G 路由器/调制解调器,发现了以下情况:
#> display route
Route Table:
Destination Gw Refs Mhome Iface mtu hops ttl flags
0.0.0.0/0 10.246.52.3 1 0 mobile0 1500 1 INF UGS
10.10.0.0/16 192.168.101.36 2 0 eth0 1500 1 INF UGS
10.246.52.0/29 * 1 0 mobile0 1500 0 INF UC
127.0.0.0/8 127.0.0.1 1 0 LOOPBACK 1500 1 INF UGJS
127.0.0.1/32 127.0.0.1 6 0 LOOPBACK 1500 0 INF UH
192.168.101.0/24 * 1 0 eth0 1500 0 INF UC
看起来第一个“吃掉”了所有网络,第二个(即我添加的静态路由)解决了这个问题。最后一个是因为他知道自己在网络上192.168.101.0/24
。但奇怪的是那里没有网关地址。
答案1
如果您需要在 RRAS 服务器上为 192.168.101.0/24 设置静态路由,我会感到惊讶,因为它是一个“直接连接”网络 - RRAS 服务器应该知道如何在没有配置静态路由的情况下到达该网络。无论如何,将 192.168.101.0/24 的网关设置为该网络上的 RRAS 服务器的 IP 是可行的,正如您所发现的(这实际上是将接口连接到子网的默认操作),但如果该网络上的 RRAS IP 发生变化,则会中断,因此删除静态路由可能更容易。
如果没有配置路由,3G 路由器就无法识别 10.10.0.0/16 子网,因为它不是直接连接的接口,因此无需任何进一步的指令,就会通过其默认网关将流量发送到该子网(最有可能直接发送到互联网)。如果没有默认网关,流量将无处可去。
3G 路由器上需要静态路由来告诉它 10.10.0.0/16 的流量必须定向到 192.168.1.36 上的 RRAS 服务器,因为这是该子网的正确网关。
如果没有该路由,Azure 机器就无法 ping 10.246.0.0/24 中的机器,原因是虽然 Azure 机器可以到达 10.246.0.0/24 子网(该方向的路由配置正确),但如果反向路由配置不正确,这些 ping 的答复就无法返回。
我们来举一个两个 IP 之间的 icmp echo 请求的例子:
10.10.1.20 向 10.246.10.10 发送 echo。
Azure 设置知道 RRAS 是 10.246.0.0/16 的网关
RRAS 知道 3G 路由器是 10.246.0.0/16 的网关
3g 路由器将数据包发送到 10.246.10.10 的 10.246.0.0/16 网络
10.246.10.10 接收并生成回复
10.246.10.10 具有 3g 路由器的默认网关,因此它将其发送到 3g 路由器
3g 路由器没有到 10.10.0.0/16 的路径,因此丢弃数据包或将其发送到最后的默认网关(显然不是 RRAS 服务器,或者另一条路由覆盖了默认网关)- 数据包丢失