Измененные мной файлы:
Код: Выделить всё
cat -n /etc/rc.d/init.d/network
1 #! /bin/bash
2 #
3 # network Bring up/down networking
4 #
5 # chkconfig: 2345 10 90
6 # description: Activates/Deactivates all network interfaces configured to \
7 # start at boot time.
8 #
9 ### BEGIN INIT INFO
10 # Provides: $network
11 # Should-Start: iptables ip6tables
12 # Short-Description: Bring up/down networking
13 # Description: Bring up/down networking
14 ### END INIT INFO
15
16 # Source function library.
17 . /etc/init.d/functions
18
19 if [ ! -f /etc/sysconfig/network ]; then
20 exit 6
21 fi
22
23 . /etc/sysconfig/network
24
25 if [ -f /etc/sysconfig/pcmcia ]; then
26 . /etc/sysconfig/pcmcia
27 fi
28
29 if [ -f /etc/sysconfig/static-rules ];then
30 sh /etc/sysconfig/static-rules
31 fi
32
33 # Check that networking is up.
34 [ "${NETWORKING}" = "no" ] && exit 6
35
36 # if the ip configuration utility isn't around we can't function.
37 [ -x /sbin/ip ] || exit 1
38
39 CWD=$(pwd)
40 cd /etc/sysconfig/network-scripts
41
42 . ./network-functions
43
44 # find all the interfaces besides loopback.
45 # ignore aliases, alternative configurations, and editor backup files
46 interfaces=$(ls ifcfg* | \
47 LANG=C sed -e "$__sed_discard_ignored_files" \
48 -e '/\(ifcfg-lo$\|:\|ifcfg-.*-range\)/d' \
49 -e '/ifcfg-[A-Za-z0-9#\._-]\+$/ { s/^ifcfg-//g;s/[0-9]/ &/}' | \
50 LANG=C sort -k 1,1 -k 2n | \
51 LANG=C sed 's/ //')
52 rc=0
53
54 # See how we were called.
55 case "$1" in
56 start)
...
Код: Выделить всё
cat /etc/sysconfig/static-rules
#!/bin/bash
INET_IP1=$(ifconfig | grep -A 2 eth1 | grep "inet addr" | awk -F':' '{print $2}' | awk -F' ' '{print $1}')
INET_IP2=$(ifconfig | grep -A 2 eth2 | grep "inet addr" | awk -F':' '{print $2}' | awk -F' ' '{print $1}')
GW1=$(cat /etc/sysconfig/network-scripts/ifcfg-Auto_eth1 | grep GATEWAY | awk -F'=' '{print $2}')
GW2=$(cat /etc/sysconfig/network-scripts/ifcfg-Auto_eth2 | grep GATEWAY | awk -F'=' '{print $2}')
ip rule add from $INET_IP1 lookup 1
ip rule add from $INET_IP2 lookup 2
ip route del default
ip route add default equalize nexthop via $GW1 dev eth1 nexthop via $GW2 dev eth2
Код: Выделить всё
cat -n /etc/sysconfig/network-scripts/ifup-routes
76
77 grep "^advanced " /etc/sysconfig/static-routes | while read ignore dev args;do
78 if [ "$dev"="$1" ];then
79 /sbin/ip route add $args
80 fi
81 done
Код: Выделить всё
cat /etc/sysconfig/static-routes
advanced eth0 <$NET_NET> via <$IP_NET> table 1
advanced eth0 <$NET_NET> via <$IP_NET> table 2
advanced eth1 0/0 via <$IP_INET1> table 1
advanced eth2 0/0 via <$IP_INET2> table 2
<$NET_NET> - локальная сеть,
<$IP_NET> - IP этого ПК в локальной сети
<$IP_INET1> - IP в сети первого провайдера
<$IP_INET2> - IP в сети второго провайдера
Если все эти действия в скриптах выполнять в ручном режиме, то все работает. А при переподнятии интерфейсов нет.
Возможно, что у меня слишком старый мануал был...
Как заставить применяться правила маршрутизации автоматически?