如何在 Linux 中设置路由以在 Azure 中创建 NVA

How to setup routing in Linux to create a NVA in Azure

我正在尝试在 Azure 上部署中心辐射型拓扑。我有 VNet:hub、spoke1 和 spoke2,分别具有以下 3 个地址 spaces:10.0.0.0/1610.1.0.0/1610.2.0.0/16。并且每个在 /24 地址 space.

上只有一个子网

我已将每个分支与集线器对等并在我的集线器子网中部署了一台 Linux 机器。现在,我想使用那台 Linux 机器作为路由器来转发来自 10.1.0.0/16 并以 10.2.0.0/16 为目标的流量到 spoke2 VNet,反之亦然。

我在每个分支上添加了一个 User Defined Route 以使用 Linux 路由器 IP 地址 (10.0.0.5) 作为目标其他分支时的下一跳。

我在我的 Linux 机器上启用了 ip_forwardingecho 1 > /proc/sys/net/ipv4/ip_forward 并添加了 2 条路由 ip route add 10.1.0.0/24 via 10.0.0.1 dev eth0ip route add 10.2.0.0/24 via 10.0.0.1 dev eth0 因为 10.0.0.1 是我的我路由器上的网关和 eth0 我的网卡。 我还在 Azure 中的路由器的 NIC 上启用了 IP Forwarding

但是...这行不通。数据包未转发到适当的网络,我不明白为什么。

如果你们中的任何人有实现这个的提示或什至解决方案,我将不胜感激。 谢谢。

不要忘记为特定机器设置 NIC:

顺便说一句:微软对此有一个 easy tutorial

您应该将 linux 机器配置为路由器。

  1. 创建一个 linux 桥,并附加 eth0

  2. 设置网桥 ip 为 10.0.0.1/24,并在其上设置一个 dhcp 服务器。

  3. 在每个分支上,将 10.0.0.1 设置为目标网络的下一跳。

  4. 在 linux 机器上,通过 10.0.0.1.

    添加路由器条目到 10.1.0.0/2410.2.0.0/24

好的。

我不知道第一次尝试时到底出了什么问题。

我只是删除了资源组并使用 Windows VM 从头开始​​重新启动,遵循 Microsoft tutorial

然后,我逐步将 Windows VM 替换为 Linux VM...一切正常。 在 NVA 上,您只需:

  1. 启用 IP Forwarding Azure 中 VM 的网络接口,
  2. 启用 IP Forwarding in VM:
sudo sed -i 's/#net.ipv4.ip_forward=/net.ipv4.ip_forward=/' /etc/sysctl.conf
sudo sed -i 's/net.ipv4.ip_forward=0/net.ipv4.ip_forward=1/' /etc/sysctl.conf
sudo sed -i 's/#net.ipv6.conf.all.forwarding=/net.ipv6.conf.all.forwarding=/' /etc/sysctl.conf
sudo sed -i 's/net.ipv6.conf.all.forwarding=0/net.ipv6.conf.all.forwarding=1/' /etc/sysctl.conf
sudo sysctl -p

然后在每个分支的 Azure (Route table + Routes) 中定义路由以将流量转发到 NVA IP。

仅此而已。开箱即用。

我什至在内部 Load BalancerHA-Ports 后面的 Virtual Machine Scale Set 中创建了我的 NVA,所以我的 NVA 是高度可用的。