如何在 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/16
、10.1.0.0/16
和 10.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_forwarding
:echo 1 > /proc/sys/net/ipv4/ip_forward
并添加了 2 条路由 ip route add 10.1.0.0/24 via 10.0.0.1 dev eth0
和 ip 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 机器配置为路由器。
创建一个 linux 桥,并附加 eth0
。
设置网桥 ip 为 10.0.0.1/24
,并在其上设置一个 dhcp 服务器。
在每个分支上,将 10.0.0.1
设置为目标网络的下一跳。
在 linux 机器上,通过 10.0.0.1
.
添加路由器条目到 10.1.0.0/24
和 10.2.0.0/24
好的。
我不知道第一次尝试时到底出了什么问题。
我只是删除了资源组并使用 Windows VM 从头开始重新启动,遵循 Microsoft tutorial。
然后,我逐步将 Windows VM 替换为 Linux VM...一切正常。
在 NVA 上,您只需:
- 启用
IP Forwarding
Azure 中 VM 的网络接口,
- 启用
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 Balancer
和 HA-Ports
后面的 Virtual Machine Scale Set
中创建了我的 NVA,所以我的 NVA 是高度可用的。
我正在尝试在 Azure 上部署中心辐射型拓扑。我有 VNet:hub、spoke1 和 spoke2,分别具有以下 3 个地址 spaces:10.0.0.0/16
、10.1.0.0/16
和 10.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_forwarding
:echo 1 > /proc/sys/net/ipv4/ip_forward
并添加了 2 条路由 ip route add 10.1.0.0/24 via 10.0.0.1 dev eth0
和 ip 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 机器配置为路由器。
创建一个 linux 桥,并附加
eth0
。设置网桥 ip 为
10.0.0.1/24
,并在其上设置一个 dhcp 服务器。在每个分支上,将
10.0.0.1
设置为目标网络的下一跳。在 linux 机器上,通过
添加路由器条目到10.0.0.1
.10.1.0.0/24
和10.2.0.0/24
好的。
我不知道第一次尝试时到底出了什么问题。
我只是删除了资源组并使用 Windows VM 从头开始重新启动,遵循 Microsoft tutorial。
然后,我逐步将 Windows VM 替换为 Linux VM...一切正常。 在 NVA 上,您只需:
- 启用
IP Forwarding
Azure 中 VM 的网络接口, - 启用
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 Balancer
和 HA-Ports
后面的 Virtual Machine Scale Set
中创建了我的 NVA,所以我的 NVA 是高度可用的。