cat /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
1 provider1
2 provider2
sudo apt-add-repository ppa:cz.nic-labs/bird
sudo aptitude update
sudo aptitide install bird
# file /etc/bird.conf
table isp1bird;
table isp2bird;
table mainbird;
protocol device {
scan time 20;
}
protocol kernel {
table isp1bird;
scan time 20;
export all;
kernel table 1;
}
protocol kernel {
table isp2bird;
scan time 20;
export all;
kernel table 2;
}
protocol kernel {
table mainbird;
scan time 20;
export all;
kernel table 254;
}
protocol static {
table isp1bird;
check link on;
route 192.168.1.0/24 via "eth0";
route 0.0.0.0/0 via 192.168.1.1;
}
protocol static {
table isp2bird;
check link on;
route 192.168.11.0/24 via "wlan0";
route 0.0.0.0/0 via 192.168.11.1;
}
prorocol static {
table mainbird;
route 0.0.0.0/0 multipath
via 192.168.1.1 weight 2
via 192.168.11.1;
}
Конфиг демона маршрутизации для твоего случая. Не надо извращатся со скриптами... а, нет, надо, но это уже штатная настройка.
#!/bin/sh
# file: /etc/network/if-up.d/rule
case $IFACE in
'eth0')
ip rule add from 192.168.1.0/24 table provider1
;;
'wlan0')
ip rule add from 192.168.11.0/24 table provider2
;;
esac
exit 0
#!/bin/sh
# file: /etc/network/if-down.d/rule
case $IFACE in
'eth0')
ip rule del from 192.168.1.0/24 table provider1
;;
'wlan0')
ip rule del from 192.168.11.0/24 table provider2
;;
esac
exit 0
Скрипты д.б исполняемыми и не содержать точек в своём названии.
В этом случае скрипты при подъеме интерфейса записывает правила ip rule и удаляют их при опускании. Всем остальным роутингом заведует bird, поэтому маршрут по умолчанию нужно удалить, где он записан.
root@dc1:~# birdc show route table mainbird
BIRD 1.3.7 ready.
0.0.0.0/0 multipath [static3 01:29] * (200)
via 31.130.39.1 on vlan3 weight 20
via 212.1.254.122 on ppp0 weight 30
10.155.1.66/32 via 31.130.39.1 on vlan3 [static3 01:29] * (200)
10.112.2.1/32 via 31.130.39.1 on vlan3 [static3 01:29] * (200)
10.112.1.1/32 via 31.130.39.1 on vlan3 [static3 01:29] * (200)
root@dc1:~# birdc show route table konsulbird
BIRD 1.3.7 ready.
0.0.0.0/0 dev ppp0 [static1 01:29] * (200)
192.168.100.0/27 dev vlan5 [static1 01:29] * (200)
192.168.10.0/24 dev vlan6 [static1 01:29] * (200)
213.141.136.40/29 dev vlan7 [static1 01:29] * (200)
root@dc1:~# birdc show route table comlanbird
BIRD 1.3.7 ready.
0.0.0.0/0 via 31.130.39.1 on vlan3 [static2 01:29] * (200)
192.168.100.0/27 dev vlan5 [static2 01:29] * (200)
192.168.10.0/24 dev vlan6 [static2 01:29] * (200)
213.141.136.40/29 dev vlan7 [static2 01:29] * (200)
root@dc1:~# ip -4 route show table all proto bird
default dev ppp0 table konsul
192.168.10.0/24 dev vlan6 table konsul
192.168.100.0/27 dev vlan5 table konsul
213.141.136.40/29 dev vlan7 table konsul
default
nexthop via 31.130.39.1 dev vlan3 weight 20
nexthop via 212.1.254.122 dev ppp0 weight 30
10.112.1.1 via 31.130.39.1 dev vlan3
10.112.2.1 via 31.130.39.1 dev vlan3
10.155.1.66 via 31.130.39.1 dev vlan3
default via 31.130.39.1 dev vlan3 table comlan
192.168.10.0/24 dev vlan6 table comlan
192.168.100.0/27 dev vlan5 table comlan
213.141.136.40/29 dev vlan7 table comlan
root@dc1:~#
Вот еще один варинт, реализовывай не хочу.