我有一台 KVM 主机 (A),上面运行着一台虚拟机 (B)。它们各自都有自己的外部 IP 地址,并且使用 A 上的 eth0 和 br0 之间的桥接来设置网络。B 使用 eth0,A 是网关。
问题在于两个外部 IP 地址位于不同的子网(实际上是不同的 /8),因此默认情况下,B 声称无法访问 A(网络不可达)。
我可以通过在 B 上添加静态路由来解决这个问题:
echo "any host gateway_ip dev eth0" > /etc/sysconfig/static-routes
修改 /etc/init.d/networking 以在应用静态路由后重新加载网关(我只在 fi 之前添加了最后一行):
如果 [ -f /etc/sysconfig/static-routes ]; 那么 grep "^any" /etc/sysconfig/static-routes | 读取时忽略参数;执行 /sbin/route 添加 -$args 完毕 路线添加默认网关“${GATEWAY}” 菲
如果我重新启动网络,它就会联机。在安装系统之前,我该如何做这件事(或者用其他方法解决),最好是在 Anaconda kickstart 文件中?
答案1
该/etc/sysconfig/static-routes
文件已被弃用,并且它使用的route
命令语法也已被弃用。
您可以使用ip
文件中 eth0 接口的语法删除规则:
/etc/sysconfig/network-scripts/route-eth0
在 kickstart 文件中没有直接执行此操作的钩子,因此您必须在部分中执行此操作%post
。
答案2
既然你正在运行虚拟机,为什么不使用模板和快照来代替启动呢?自定义可以放在文件中/etc/rc.d/sysinit
,在
# 如果/.unconfigured 存在,则配置机器:
然后运行sys-unconfig
以准备将虚拟机变成模板。
完成此操作后,您可以使用 克隆映像qemu-img convert
或从原始映像中获取快照,以节省磁盘空间,并将克隆/快照映像附加到新 VM。它们都将具有相同的配置和文件,减去由 删除的典型设置sys-unconfig
。当然还有您添加到 rc.sysinit 的其他内容。