Домашно интернет маршрутизиране на два (или повече) доставчика, базирано на Bird Routing Daemon

Вероятно много потребители на домашен интернет са срещали как да паралелизират два или повече интернет канала в домашна мрежа. Този проблем може да бъде решен както хардуерно (използвайки евтино или скъпо оборудване), така и софтуерно. Кой модел на маршрутизиране да избера? Можете незабавно да отхвърлите RIP / OSPF / BGP, тъй като това е домашен интернет и съм повече от сигурен (и проверено в моя случай), че няма да искате да правите поддръжка от страна на доставчика безплатно. Спрях избора си на птица.

И така, начална позиция:

  • Домашен рутер с Debian GNU/Linux 6.0.5 (свиване) на борда
  • 2 интернет канала (ISP1 и ISP2)
  • 2 прави ръце
  • чаша кафе
Моята мрежова конфигурация:
  • eth0 – Доставчик „ISP1“:
  • IP: 10.10.10.106
  • мрежова маска: 255.255.255.0
  • Шлюз: 10.10.10.1
  • eth1 - LAN:
  • IP: 192.168.254.254
  • мрежова маска: 255.255.255.0
  • eth2 – Доставчик „ISP2“:
  • IP: 172.17.5.105
  • мрежова маска: 255.255.255.0
  • Шлюз: 172.17.5.1
  • Аз съм фен на apt, но както се оказа, apt има доста остаряла версия на bird (1.2.5-1) и няма многопътна поддръжка. Ще трябва да го сглобите на ръка. Предварително умишлено пропускам всеки пламък, как да не превърна debian в slackware.

    Скриптът за стартиране е готов, добавете към автоматично стартиране:

    Нека създадем директория за лог файла:

    Сега нека започнем да конфигурираме самата птица.

    Първо архивирайте оригиналната конфигурация и създайте нова:

    След това го отворете за редактиране:

    Сега създаваме директория за ръчни конфигурации и например добавяменякои маршрути:

    Това е всичко, настройката на птицата е завършена. Сега нека да преминем към конфигуриране на таблиците за маршрутизиране.

    Добавете таблици към /etc/iproute2/rt_tables:

    Сега трябва да направим така, че когато бъдат поискани от мрежата на ISP1, пакетите да се връщат обратно към ISP1, а не през друг интерфейс. За да направите това, добавете ip правило(а): За да направите това, създайте iprules скриптове:

    Поставете отметка в квадратчето +x:

    Сега започваме всички рестартирания:

    За да не копирате и поставяте команди, нека го направим по-умно:

    Сега издърпайте кабела, изключете мрежовия кабел от ISP1 (eth0), вижте какво се е променило:

    Тоест, ако един от доставчиците бъде случайно прекъснат, трафикът ще премине през другия, деактивираният доставчик ще бъде наблюдаван на всеки 20 секунди (вижте опцията за време за сканиране 20 в регистрационните файлове на ядрото) и автоматично ще премахне „мъртъв“, когато се появи.

    В заключение: по същия начин можете да добавите 10 доставчика.

    Hardcore conf в C++. Каним само професионалисти.