Два ISP+netifrc+"клиент dhcp"+ifplugd

Два ISP. Один выдаёт IP-адрес динамически (dhclient), другой выделил настоящий статический IP-адрес.
Как средствами netifrc (/etc/conf.d/net) сконфигурировать два сетевых интерфейса шлюза так, чтобы всё работало независимо от того, кабель какого ISP в какую сетевую курточку был воткнут?

Доброго Времени суток, уважаемые!

Что имеем

  • Gentoo 13:
    #uname -a
    Linux gw 4.1.12-gentoo #1 SMP Sat Jan 9 19:37:05 EET 2016 x86_64 Intel(R) Core(TM)2 Duo CPU E7400 @ 2.80GHz GenuineIntel GNU/Linux
    
  • dhcp:
    net-misc/dhcp-4.3.1-r2::gentoo USE="client ldap server ssl -ipv6 (-selinux) -vim-syntax"
  • ifplugd:
    sys-apps/ifplugd-0.28-r9::gentoo USE="-doc (-selinux)"
  • netifrc:
    net-misc/netifrc-0.2.2::gentoo
  • Для подключения к ISP на шлюзе установлено две сетевых карточки (по одной на каждый ISP). Обозначим так:
    • nic-1
    • nic-2
  • Один ISP выдаёт шлюзу IP-адрес по DHCP. Обозначим так:
    • isp-dhcp - ISP, выдающий адрес динамически
    • wan-dhcp-ip - IP-адрес
    • wan-dhcp-net - сетка между нашим и их шлюзами
    • wan-dhcp-gw - шлюз по умолчанию (default)
  • Второй ISP реально выделил статический IP-адрес. Обозначим так:
    • isp-static - ISP, выделивший статический адрес
    • wan-static-ip - IP-адрес
    • wan-static-net - сетка между нашим и их шлюзами
    • wan-static-gw - шлюз по умолчанию (default)
  • Таблицы маршрутизации:
    # cat /etc/iproute2/rt_tables
    101     wan1
    102     wan2
    
  • Примеры маршрутов при подключении isp-dhcp к nic-1, а isp-static к nic-2:
    # ip ru
    101:   from wan-dhcp-net lookup wan1
    102:   from wan-static-net lookup wan2
    
    # ip ro sh ta wan1
    wan-dhcp-net dev nic-1  scope link
    default via wan-dhcp-gw dev nic-1
  • # ip ro sh ta wan2
    wan-static-net dev nic-2  scope link
    default via wan-static-gw dev nic-2

Вопросы

    Как средствами netifrc (/etc/conf.d/net) отследить ситуацию, когда будут перевоткнуты кабели от isp-dhcp в nic-2, а isp-static в nic-1, так, чтобы:

  1. создались правильные правила PRDB?
  2. в случае неработоспособности канала на isp-dhcp (неработоспособность определяется НЕ получением IP-адреса от isp-dhcp, ifplugd тут не причём!) интерфейс, на который подключен его кабель, продолжал запрашивать IP-адрес у DHCP от isp-dhcp

Предварительные исследования

Можно было-бы использовать fallback_IFVAR, например в таком духе:

config_nic-1="dhcp"
fallback_nic-1="wan-static-ip"
fallback_routes_nic-1="..."
fallback_rules_nic-1="..."

config_nic-2="dhcp"
fallback_nic-2="wan-static-ip"
fallback_routes_nic-2="..."
fallback_rules_nic-2="..."

Но тут возникают следующие нюансы при использовании fallback_:

  1. Отрабатывают только:
    1. назанчение IP-адреса
    2. прописывание маршрутов.

    Правила PRDB (fallback_rules_) не прописываются. Т.е. не решается вопрос №1.

  2. При неработоспособности канала на isp-dhcp мы можем получить такую ситуацию:
    # ip ad sh up
    8: nic-1:  mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
        link/ether aa:bb:cc:dd:ff:11 brd ff:ff:ff:ff:ff:ff
        inet wan-static-ip brd wan-static-brd scope global nic-1
    9: nic-2:  mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
        link/ether 11:22:33:44:55:66 brd ff:ff:ff:ff:ff:ff
        inet wan-static-ip brd wan-static-brd scope global nic-2
    

    Т.е. два интерфейса с одним IP-адресом. Решение вопроса №2 приобретает новые краски.

  3. (Связано с новыми красками по вопросу №2) Присутствие fallback_ не запускает функцию failup(). Всё проходит через postup(). И не известно как сюда (в postup()) попали: по config_IFVAR или по fallback_IFVAR?
    • Поскольку на уровне netifrc могут использоваться разные модули клиента DHCP, особенно хотелось-бы (узнать - как) получить какую-то информацию, предоставленную клиентом DHCP, именно на уровне netifrc (например, в postup()).
      Или узнать о том, что никакая информация не была предоставлена клиентом DHCP.
  4. Демон клиента DHCP, связанный с PID, прекращает работу после неудачных попыток достучаться до сервера DHCP от isp-dhcp (Вопрос №2).
    С одной стороны уже имеем поднятый интерфейс на isp-static. С другой - как заставить "не поднятый" интерфейс продолжать "долбить" isp-dhcp?

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".