如果网关位于不同的子网中,则通过网络安装 CentOS

如果网关位于不同的子网中,则通过网络安装 CentOS

我有一台 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 的其他内容。

相关内容