Иногда для обеспечения надёжности соединения с интернет офис можно подключить сразу к нескольким интернет каналам. Распределить нагрузку между каналами можно различными способами.
Условимся что офисный сервер работает под управлением Debian Linux или одного из его клонов.
Договоримся о начальных условиях: у нас есть:
- ADSL-модем, имеющий адрес 192.168.1.1 и работающий роутером для сети 192.168.1.0/24.
- Кабельный модем, имеющий адрес 192.168.0.254 и работающий роутером для сети 192.168.0.0/24.
- Локальная сеть 192.168.10.0/24.
- Сервер с тремя сетевыми картами.
Для начала подключаем ADSL-модем к eth0, кабельный модем к eth1 и локальную сеть к eth2. Далее определяемся что именно нам нужно. Самое простое - поделить трафик между каналами поровну. В случае падения одного из них - второй возьмёт на себя всю нагрузку. В этом случае файл /etc/network/interfaces будет выглядеть примерно так:
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.1.2 netmask 255.255.255.0 network 192.168.1.0 gateway 192.168.1.1 metric 0 auto eth1 iface eth1 inet static address 192.168.0.253 netmask 255.255.255.0 network 192.168.0.0 gateway 192.168.0.254 metric 0 auto eth2 iface eth2 inet static address 192.168.10.1 netmask 255.255.255.0 network 192.168.10.0
В этом случае таблица роутинга будет иметь вид:
# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.254.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0 0.0.0.0 192.168.0.254 0.0.0.0 UG 0 0 0 eth1
Здесь важен параметр metric. Если у нас есть несколько маршрутов по умолчанию с разными метриками, то запросы сначала отправляются по маршруту с меньшей метрикой, в случае не удачи используется маршрут с большей метрикой и так далее (на подобие MX-записей в DNS для почты). Если все маршруты имеют одинаковые метрики - трафик делится между ними поровну, но в случае недоступности одного из них - трафик будет делиться между остальными.
Если нам нужно чтобы использовался кабельный канал и только в случае его недоступности ADSL, то нужно для eth0 поставить метрику больше чем у eth1.
Не зависимо от числа каналов и потребностей все подобные задачи решаются обычно именно указанием правильных метрик интерфейсов.
spamtrap 2008-03-06 15:49:13 (#)
ситуация: удачно отправили через eth1, а у провайдера, к которому подключены через eth1, инета нету. никак такая система не сможет переключиться на eth0