Прочитав «два шлюза / два провайдера с разными IP-адресами»и статью Clinton East, на которую она ссылается, я успешно настроил многосетевую систему RHEL5. Однако я надеюсь найти лучший способ сохранить это состояние, чем вызов ip rule
и ip route
команды из rc.local. Есть ли файл конфигурации, который я мог бы отредактировать, который будет читаться при появлении интерфейсов? Возможно, что-то вроде iptables-save и iptables-restore?
Красная Шапка: У меня нет под рукой коробок для проверки, но должно быть что-то вроде /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
В 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
При желании вы можете включить правила маршрутизации IP для каждого интерфейса в ifup-local
, слишком. Если вы хотите удалить соответствующие правила, когда интерфейс не работает, вы можете создать аналогичный /sbin/ifdown-local
сценарий, чтобы справиться с этим.
Если бы это был я, хотя RHEL предоставляет стандартизованный способ обработки статических маршрутов, я бы, вероятно, сделал все в ifup-local
и ifdown-local
, просто чтобы сохранить вместе все специфические для моего интерфейса части.