在云中创建虚拟机时,您可以选择创建具有多个接口的虚拟机,这意味着您的机器上将有多个网络同时工作并相互影响。在这里,我们将检查多个网络接口如何交互,以及如何避免任何中断和/或问题。
在创建具有两个或多个网络接口的虚拟机时,您可以选择创建一个公共接口和多个专用接口,或者只创建多个专用接口。
公共接口意味着将为你分配一个公共 IP 地址,可以访问互联网并与外部网络通信。
专用接口是指分配给你一个专用 IP 地址,不能访问外部网络。您可以使用专用网络在虚拟机之间建立通信。要在专用接口上访问公共网络,只需为其添加一个浮动 IP 即可。
让我们看看创建一个有两个或更多接口的虚拟机后会发生什么。
在创建了一个公共接口和一个专用接口的虚拟机后,你可能会看到公共网络的样子:
如前所述,如果虚拟服务器有两个或更多接口,它们会以相同的速率同时工作。这会产生冲突,导致网络中断或数据包丢失。
有几种方法可以解决这一问题。
第一种方法 :
- 转到云 - 网络,点击所选网络:
- 点击所选子网络旁边的三个点,然后点击编辑:
- 禁用路由器网关并重启实例:
完成这些操作后,您的公共网络就会稳定下来,看起来就像这样:
您也可以从操作系统内部修复这种行为。
- 登录虚拟机,执行以下命令: ip r。 通过 ipr 的输出,您可以看到两个接口的配置方式相同,都有具有相同指标的默认路由:
- 我们可以通过 netplan 对其进行编辑。使用nano命令打开/etc/netplan/50-cloud-init.yaml:
- 在dhcp4-overrides 的帮助下,我们将专用接口的度量值改为200。这样,指标较低的接口会更受欢迎:
- 使用sudo netplan apply 应用配置,然后就大功告成了!
- 你可以再次查看 ipr输出,检查配置是否生效:
你会发现,你的网络将再次变得稳定:
重新配置网络的另一种方法是通过用户数据使用脚本进行预配置。
#cloud-config
write_files:
- path: /opt/set-route-metrics
content: |
#!/usr/bin/env bash
netplan_config="/etc/netplan/99-custom-overrides.yaml"
metric=200
iface=$(ip r | awk '/172.25.9.0\/24.*link./ {print $3}')
echo "network:" > $netplan_config
echo " ethernets:" >> $netplan_config
echo " $iface:" >> $netplan_config
echo " dhcp4-overrides:" >> $netplan_config
echo " route-metric: $metric" >> $netplan_config
chmod 600 $netplan_config
netplan apply
runcmd:
- [ bash, /opt/set-route-metrics ]
在此,请注意
- 可以选择任何你喜欢的目录;
- Ubuntu 的默认 “度量 ”值是 100,因此指定 200 就可以覆盖它。但其他操作系统会从 DHCP 获取不同的值,例如 CentOS 的默认 “度量 ”值是 400。使用脚本时应考虑到这一点;
- 在这一部分中 “awk ‘/172.25.9.0\/24.*link./ {print $3}’)” 172.25.9.0\/24 应更改为虚拟机专用接口将使用的子网掩码。
评论
0 条评论
请登录写评论。