Два шлюза по умолчанию linux
Конфигурация:
Сервер PH 8.0, 3 сетевухи: 1 в локалку, две в интернет.
С одним каналом пользователи ходили в инет через маскарадинг (ipchains).
Сейчас задача разруливать пользователей на два канала. Как это сделать, если сервак использует только один шлюз по умолчанию?
eth0: 192.168.1.222, 192.168.1.0/24 — инет1, шлюз 192.168.1.221
eth1: 192.168.0.1, 192.168.0.0/24 — локалка
eth2: 10.0.0.1, 10.0.0.0/24 — инет2, шлюз 10.0.0.2
с одним каналом правила простые:
-A forward -s 192.168.0.x -j MASQ
-A output -d 192.168.0.x -s ! 192.168.0.0/24 -l — это для подсчёта траффика
с двумя каналами логично было бы:
-A forward -i eth0 -s 192.168.0.x -j MASQ
-A forward -i eth2 -s 192.168.0.x -j MASQ
строчка для логов остаётся та же
.
НО
что делать с таблицей роутинга? в ней не шибко разбираюсь, но подозреваю что править надо её.
только не советуйте, пожалуйста, переходить на iptables или что-то менять кардинально! не охота переделывать биллинг.
Оглавление |
|
Индекс форумов | Темы | Пред. тема | След. тема |
Сообщения по теме |
1. «Возможно ли одновременно использовать два шлюза на Линуксе?» | |
Сообщение от ovax | |
Рекомендовать в FAQ | Cообщить модератору | Наверх |
2. «Возможно ли одновременно использовать два шлюза на Линуксе?» | |
Сообщение от игорь | |
| |
Рекомендовать в FAQ | Cообщить модератору | Наверх |
3. «Возможно ли одновременно использовать два шлюза на Линуксе?» | |
Сообщение от IVANidze | |
| |
Рекомендовать в FAQ | Cообщить модератору | Наверх |
4. «Возможно ли одновременно использовать два шлюза на Линуксе?» | |
Сообщение от Xela | |
iptables -t mangel -A PREROUTING -s одна_под_сеть/24 -j ROUTE -gw gw1_ip_add_ress Источник Настройка основного и двух резервных операторов на Linux-роутере с NetGWMЗадача резервирования основного шлюза — одна из самых популярных в сетевом администрировании. У нее есть целый ряд решений, которые реализуют механизмы приоритезации или балансировки исходящих каналов для абсолютного большинства современных маршрутизаторов, в том числе и маршрутизаторов на базе Linux. В статье об отказоустойчивом роутере мы вскользь упоминали свой корпоративный стандарт для решения этой задачи — Open Source-продукт NetGWM — и обещали рассказать об этой утилите подробнее. Из этой статьи вы узнаете, как устроена утилита, какие «фишки» можно использовать в работе с ней и почему мы решили отказаться от использования альтернативных решений. Почему NetGWM?Классическая схема резервирования основного шлюза в Linux, реализуемая средствами iproute2, выглядит практически во всех источниках примерно одинаково:
Подробности этой схемы легко гуглятся по запросу «linux policy routing». На наш взгляд, схема имеет ряд очевидных недостатков, которые и стали основным мотиватором создания утилиты NetGWM:
Мы посмотрели, что поможет нам решить все 4 проблемы: простое и управляемое средство с поддержкой 2 и более шлюзов по умолчанию, умеющее диагностировать доступность канала и тестировать его на стабильность. И не нашли такого варианта. Именно так и появился NetGWM. Установка из GitHub и репозитория «Флант»NetGWM (Network GateWay Manager) — это небольшая утилита приоритезации основного шлюза, написанная на Python и распространяемая под свободной лицензией GNU GPL v3. Автор первоначальной версии — driusha (Андрей Половов). Исходный код и документация на английском языке доступны на GitHub, а краткая документация и описание на русском языке — здесь. Установка из GitHub: Кроме того, готовый DEB-пакет с NetGWM можно установить из репозитория для Ubuntu компании «Флант». Установка для Ubuntu 14.04 LTS выглядит так: Добавлять служебную таблицу маршрутизации и настраивать cron в Ubuntu не потребуется. Таблица автоматически добавится при установке пакета. Кроме того, при установке будет зарегистрирована служба netgwm , init-скрипт которой стартует в качестве демона небольшой shell-скрипт /usr/bin/netgwm , который, в свою очередь, читает из файла /etc/default/netgwm значение параметра INTERVAL (в секундах) и с указанной периодичностью сам вызывает netgwm.py . НастройкаВ основе работы NetGWM также лежит policy-роутинг, и нам придется предварительно настроить таблицы маршрутизации для каждого оператора. Допустим, есть 3 оператора, и необходимо сделать так, чтобы основным оператором был оператор 1, в случае отказа — использовался оператор 2, а в случае отказа из обоих — оператор 3. Пусть первый оператор у нас подключен к интерфейсу eth1, второй — к eth2, третий — к eth3. Первый оператор имеет шлюз 88.88.88.88, второй оператор — шлюз 99.99.99.99, третий — 100.100.100.100. Мы почти всегда при настройке сети с несколькими основными шлюзами используем маркировку пакетов и модуль conntrack из NetFilter. Это хорошая практика, помогающая распределять пакеты по таблицам маршрутизации с учетом состояния, но не являющаяся обязательной. Настроим маркинг пакетов и conntrack: 2. Добавим правила маршрутизации для промаркированных пакетов. Мы это делаем с помощью скрипта, который вызывается из /etc/network/interfaces при событии post-up на интерфейсе lo: 3. Объявим таблицы маршрутизации в /etc/iproute2/rt_tables : 4. Настроим NetGWM. По умолчанию, netgwm.py будет искать конфигурационный файл по адресу /etc/netgwm/netgwm.yml , однако вы можете переопределить это с помощью ключа -c . Настроим работу утилиты: 5. Настроим действия при переключении Если произойдет переключение, то после смены основного шлюза будут выполнены все исполняемые файлы из каталога /etc/netgwm/post-replace.d/* . При этом каждому файлу будут переданы 6 параметров командной строки:
В скрипте можно на основании этих переменных описать логику действий в зависимости от подключаемого оператора (добавить или удалить маршруты, отправить уведомления, настроить шейпинг и т.п.). Для примера приведу скрипт на shell, отправляющий уведомления: 6. Стартуем сервис netgwm в Ubuntu, если вы установили DEB-пакет: Если вы получили NetGWM из GitHub, то установленное ранее задание в cron уже и так проверяет доступность вашего основного шлюза, дополнительных действий не требуется. ЖурналированиеСобытия по переключению NetGWM регистрирует в журнале /var/log/netgwm : Сохраненная история переключений помогает произвести анализ инцидента и определить причины перерыва в связи. Проверено в productionУже около 4 лет NetGWM используется в нашей компании на 30+ маршрутизаторах Linux разных масштабов. Надежность утилиты многократно проверена в работе. Для примера, на одной из инсталляций, с мая 2014 года NetGWM обработал 137 переключений операторов без каких-либо проблем. Стабильность, покрытие всех наших потребностей и отсутствие проблем в эксплуатации в течение длительного времени привели к тому, что мы практически не занимаемся развитием проекта. Код NetGWM написан на Python, поэтому отсутствует и необходимость в адаптации утилиты к новым версиям операционных систем. Тем не менее, мы будем очень рады, если вы решите принять участие в развитии NetGWM, отправив свои патчи в GitHub или просто написав feature request в комментариях. ЗаключениеС NetGWM мы имеем стабильную, гибкую и расширяемую (с помощью скриптов) утилиту, которая полностью закрывает наши потребности в управлении приоритетом основного шлюза. Любые вопросы по использованию NetGWM также приветствуются — можно прямо здесь в комментариях. Источник |