读过“两个网关/两个具有不同 IP 的提供商”以及它链接到的 Clinton East 文章,我已成功设置了多宿主 RHEL5 系统。但是,我希望有一种比从 rc.local 调用ip rule
和ip route
命令更好的方法来保留此状态。是否有一个我可以编辑的配置文件,它会在接口启动时被读取?也许像 iptables-save 和 iptables-restore 这样的文件?
答案1
在 RHEL 中,这些东西可能应该放在两个地方。
要在 RHEL 中添加静态路由,请将其添加到 /etc/sysconfig/network-scripts/route-界面在哪里界面匹配 ifcfg- 的名称界面条目。当接口启动或关闭时,route-* 文件中的语句将被传递给 和ip route add
。ip route del
现在,对于ip rule
命令,我能想到的最佳位置可能是/sbin/ifup-local
。如果此文件存在,它将在接口启动后运行。请注意,如果/sbin/ifup-local
存在,它将作为可执行文件调用并传递接口名称的参数。因此,您必须编写处理程序代码来根据要为其添加配置的接口检查该参数,然后采取适当的操作。
举个例子:
#/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 路由规则。如果您想在接口关闭时删除相应的规则,您可以创建类似的/sbin/ifdown-local
脚本来处理该问题。
如果是我的话,尽管 RHEL 提供了处理静态路由的标准化方法,我可能还是会按照ifup-local
和的方式做所有事情ifdown-local
,只是为了将所有特定于接口的位保持在一起。
答案2
红帽:
我手头没有任何可以检查的箱子,但应该有一个类似/etc/sysconfig/network/routes
文件的东西来配置静态路由。
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