读过“两个不同IPS的两个网关/两个提供商” ,以及链接到的克林顿东文章,我成功地build立了一个多宿主的RHEL5系统。 不过,我希望有一个更好的方法来保存这个状态,而不是通过调用rc.local的ip rule和ip route命令。 是否有一个configuration文件,我可以编辑,将读取接口出现? 就像iptables-save和iptables-restore也许?
在RHEL中,有两个地方可能要去做这些事情。
要在RHEL中添加静态路由,请将其添加到/ etc / sysconfig / network-scripts / route- INTERFACE中 ,其中INTERFACE与ifcfg- INTERFACE条目的名称匹配。 route- *文件中的语句将在接口打开或closures时传递给ip route add和ip route del 。
现在,对于ip rule命令,我能想到的最好的地方可能是/sbin/ifup-local 。 如果此文件存在,则在启动界面后运行。 一个注意这个,如果/sbin/ifup-local存在,它将被调用为一个可执行文件并传递一个接口名称的参数。 所以你必须编写处理程序代码来检查你想添加configuration的接口的参数,然后采取适当的行动。
举个例子:
#/bin/bash case $1 in eth0) /sbin/ip rule foo /sbin/ip rule bar ;; eth1) /sbin/ip rule baz /sbin/ip rule quux ;; *) /usr/bin/logger -t 'ifup-local' 'Called with unknown interface: $1' ;; esac
如果你愿意,你也可以在ifup-local包含每个接口的ip route规则。 如果您想在接口closures时删除相应的规则,则可以创build一个类似的/sbin/ifdown-local脚本来处理该规则。
如果是我的话,尽pipeRHEL提供了一个处理静态路由的标准方法,但是我可能会在ifup-local和ifdown-local做所有事情,只是为了保留所有的接口特定位。
RedHat:我手边没有任何文件检查,但是应该有一个/etc/sysconfig/network/routes文件来configuration静态路由。
SuSE的:
$ cat /etc/sysconfig/network/ifroute-eth-id-MAC: #NETWORK/MASK GATEWAY_IP 192.168.100.0/24 192.168.1.1
Debian的:
$ cat /etc/network/interfaces auto eth0 iface eth0 inet static address 192.168.1.2 netmask 255.255.255.0 gateway 192.168.1.1 up ip route add 192.168.100.0/24 via 192.168.1.1 down ip route del 192.168.100.0/24 via 192.168.1.1