Доброго дня. Делаю ping через основной интерфейс, он проходит, а через запасной выходит destination host unreachable.
Меняю местами шлюз по умолчанию с основного на резервный - меняется и интерфейс где прорывается пинг. Локальной сети нет, только 2 интернета. Скрипт:
#!/bin/bash
# Основной интерфейс
PRIMARY_IF="eth0"
PRIMARY_IP="10.0.2.15"
PRIMARY_NET="10.0.2.0/24"
PRIMARY_GW="10.0.2.1"
# Запасной интерфейс
RESERVE_IF="eth1"
RESERVE_IP="20.0.2.4"
RESERVE_NET="20.0.2.0/24"
RESERVE_GW="20.0.2.1"
# Заглушка
LOOP_IF="lo"
LOOP_IP="127.0.0.1"
LOOP_NET="127.0.0.0/8"
# Включаем пересылку пакетов между сетевыми интерфейсами
echo '1' > /proc/sys/net/ipv4/ip_forward
# Очистка таблиц маршрутизации по провайдерам
ip route flush table PRIMARY
ip route flush table RESERVE
# Таблица маршрутизации основного интерфейса (PRIMARY)
ip route add $PRIMARY_NET dev $PRIMARY_IF src $PRIMARY_IP table PRIMARY
ip route add $RESERVE_NET dev $RESERVE_IF table PRIMARY
ip route add $LOOP_NET dev $LOOP_IF table PRIMARY
# Таблица маршрутизации резервного интерфейса (RESERVE)
ip route add $RESERVE_NET dev $RESERVE_IF src $RESERVE_IP table RESERVE
ip route add $PRIMARY_NET dev $PRIMARY_IF table RESERVE
ip route add $LOOP_NET dev $LOOP_IF table RESERVE
# Правила маршрутизации для интерфейсов
ip rule add from $PRIMARY_IP table PRIMARY
ip rule add from $RESERVE_IP table RESERVE
# Основная таблица маршрутизации
ip route add $PRIMARY_NET dev $PRIMARY_IF src $PRIMARY_IP
ip route add $RESERVE_NET dev $RESERVE_IF
ip route add $LOOP_NET dev $LOOP_IF
#-------------------------------
ip route add $RESERVE_NET dev $RESERVE_IF src $RESERVE_IP
ip route add $PRIMARY_NET dev $PRIMARY_IF
ip route add $LOOP_NET dev $LOOP_IF
# Шлюз по умолчанию
ip route add default via $PRIMARY_GW # или change
# Очистка кеша маршрутизатора
ip route flush cache
exit 0;