![启动网络接口时防止创建路由](https://linux22.com/image/194681/%E5%90%AF%E5%8A%A8%E7%BD%91%E7%BB%9C%E6%8E%A5%E5%8F%A3%E6%97%B6%E9%98%B2%E6%AD%A2%E5%88%9B%E5%BB%BA%E8%B7%AF%E7%94%B1.png)
我正在努力创建一些可供外界访问的虚拟机。我使用的服务器有 4 个 NIC 卡。我想要专用网络上的一张 NIC 卡充当主机操作系统 (em4) 的管理接口。我想要另外一两个 NIC 卡作为我的桥接设备的接口(em1 从属于 br0)。流量不应该从网桥路由到主机操作系统,反之亦然!我不确定我是否已经通过使用桥接方法实现了完全隔离,并且我也愿意接受这方面的建议。
如果我只安装了主机网卡,我的路由表如下所示。请注意,出于安全原因,IP 地址已更改。
[root@someserv ~]# ip route
default via 10.110.0.1 dev em4 proto dhcp metric 101
10.110.0.0/21 dev em4 proto kernel scope link src 10.110.0.235 metric 101
沟通在这里完美进行。当我启动桥接设备时,问题就开始了。我已经设置了 nmcli 选项“ipv4.never-default”,因此永远不会为桥接接口添加默认路由,但在启动 br0 后,无论是使用 DHCP 还是手动分配,我都会在路由表中看到以下内容。
[root@someserv ~]# ip route
default via 10.110.0.1 dev em4 proto dhcp metric 101
10.110.0.0/21 dev em4 proto kernel scop link src 10.110.0.235 metric 101
167.91.112.0/21 dev br0 proto kernel scrop link src 167.91.112.50 metric 425
最后一项是一个问题,因为我的工作计算机与 167.91.112.0 位于同一网络上。该路由无处可去,并且它阻止我管理我的服务器,因此每次我启动网桥时,我都需要删除该路由。这非常烦人,因为我需要连接到实际的终端而不是 SSH。
有谁知道如何阻止接口添加此路由?或者,有没有更好的方法来为我的虚拟机设置界面。我之前在这里看到过这个问题(我可以阻止在启动接口时添加默认路由吗?),但答案很旧,并且肯定与 Oracle Linux 7 或 8 无关。
最后,我尝试的另一个想法是创建一个空的路由文件。
[root@someserv ~]# cd /etc/sysconfig/network-scripts/
[root@someserv network-scripts]# ls -l *route*
-rwxr-xr-x. 1 root root 870 May 22 2020 ifdown-routes
-rwxr-xr-x. 1 root root 2001 May 22 2020 ifup-routes
-rw-r--r--. 1 root root 0 Aug 22 15:02 route-br0
那也行不通。
〜鲍勃
答案1
谢谢你,亚历克斯。
你是绝对正确的。该修复适用于 DHCP 和手动配置。命令“man 8 networkmanager”非常有用。就我而言,我只是在 /etc/NetworkManager/dispatcher.d 中创建一个名为 99-bridge-up 的脚本。
[root@someserv dispatcher.d]# cat 99-bridge-up
#!/bin/bash
if [ "$1" == "br0" ] && [ "$2" == "up" ]; then
ip route del 167.91.112.0/21
fi
答案2
我无法评价您的网络配置的合理性,因此我将重点讨论解决方法。解决你的问题的方法是在启动 br0 后删除路由,对吗?我的猜测是你的接口是由 NetworkManager 控制的。所以我的建议是让NetworkManager在每次你的br0
接口上线时删除你的路由。
您需要在内部创建一个 bash 脚本/etc/NetworkManager/dispatcher.d/
。这个 bash 脚本基本上可以做某物喜欢
ip route del 167.91.112.0/21 dev br0
有很多有关 NetworkManager 脚本的示例。我希望这可以帮助您解决您的问题,至少暂时如此。