День добрый, уважаемые.
Естл роутер с Sarge, который рулит двумя отдельными сегментами ethernet
(причем меня попросили запретить прямую комуникацию между ними), и
выходит в инет по 2-ум линкам ppp (adsl с динамическим адресом, но как я
понимаю принципиально не важно, это может бытй dialup и vpn).
Идея в том, чтобы по одному, толстому, линку давать выход в инет вообще,
а по другому, потоньше, давать выход критическим интерактивным
приложениям (текстовые терминалы, VoIP, и т.д.).
Мне известно, что для таких целей два канала необязательны, можно
обойтись одним и установить QoS, но что-то я в ней так запутался, что
лутше так.
В любом случае, линков таки будет именно два, это изменить не в моих
силах, изначально предполагалось что один сегмент будет висеть на одном
линке, а другой на втором, но такое использование которое я изложил мне
кажется более эфективным.
По этому поводу несколько вопросов:
1. В /etc/network/interfaces я указываю ppp0 и ppp1. Если по какой-то
причине ppp0 не поднят, при поднятии ppp1 как заставить pppd называть
интерфейс ppp1? Если поднимать просто так, то я делаю ifup ppp1 а
ifconfig говорит что поднят ppp0.
Как я понял, такие вещи записаны в /etc/network/ifstate, так что мне
его, каждый раз парсить скриптом который устанавливает правила iptables?
2. В данный момент активен только один линк, второй скоро будет, так что
протестировать по полной программе не получается. Пока готовлю скрипты.
Правильно ли я понимаю, что при моем раскладе я плюю на default
gateway, и маскирую по имени наружного интерфейса?
Так:
iptables -t nat -A POSTROUTING -s $NET1 [фильтр приоритета] \
-o $EXT_PRIORIT_IF -j MASQUERADE
iptables -t nat -A POSTROUTING -s $NET1 [фильтр приоритета]\
-o $EXT_PRIORIT_IF -j MASQUERADE
iptables -t nat -A POSTROUTING -s $NET1 -o $EXT_GENERAL_IF -j MASQUERADE
iptables -t nat -A POSTROUTING -s $INT2 -o $EXT_GENERAL_IF -j MASQUERADE
Или надо строго перенаправлять запросы на gateway ISP?
3. Запрещаю комуникацию между сегментами так:
iptables -t filter -A PREROUTING -s $NET1 -d $NET2 -j DROP
iptables -t filter -A PREROUTING -s $NET1 -d $NET1 -j DROP
Я пересолил?
4. Если стоят n>1 одинаковых сетевых карт, они активируются одним и
тем-же модулем. Чем определяется, има какого интерфейса ethX будет им
присвоено? По возрастанию номера слота? А с ISA тоже? Это надежно (что
всегда будут одни и те-же имена)?
Если карты разные, то я это жестко контролирую через "alias ethX модуль"
либо по порядку загрузки модулей. А серваков с одинаковыми картами
как-то пока не попадалось... (:
5. Есть ли готовые не слишком навороченные решения для этой задачи? Или
еще лутше полуфабрикаты. А то я даже не знаю по каким ключевым словам
искать.
Если кого интересует, то по окончании поделюсь готовым скриптом.
Greetings.