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

我有一台运行虚拟机的KVM主机(A)(B)。 它们每个都有自己的外部IP地址,并且在A上使用eth0和br0之间的桥接进行networking设置。B使用eth0,A是网关。

问题是两个外部IP地址在不同的子网(实际上是不同的/ 8),所以默认情况下,B声称它不能到达A(networking不可达)。

我可以通过在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 add  -  $ args  
     DONE  
    路由添加默认gw“$ {GATEWAY}”  
科幻  

如果我然后重新启动networking,它联机。 在安装系统之前,我怎样才能做到这一点(或以其他方式解决)?理想的情况是在Anaconda kickstart文件中?

既然你正在运行虚拟机,为什么不使用模板和快照而不是kickstarting呢? 定制可以放在/etc/rc.d/sysinit文件中

#configuration机器,如果/.unconfigured存在:

然后运行sys-unconfig来准备虚拟机成为一个模板。

完成之后,您可以使用qemu-img convert克隆映像或从原始映像中获取快照,以节省磁盘空间,并将克隆/快照映像附加到新VM。 他们都将具有相同的configuration和文件,减去由sys-unconfig删除的典型设置。 还有其他什么你当然也加到了rc.sysinit中。

/etc/sysconfig/static-routes文件不推荐使用,它使用route命令语法,这也被弃用。

您可以在文件中使用eth0接口的ip语法删除规则:

 /etc/sysconfig/network-scripts/route-eth0 

在kickstart文件中没有直接执行此操作,因此您必须在%post部分执行此操作。