Автор Тема: Дополнительное правило маршрутизации в Ковчеге 5 Сервер (два провайдера)  (Прочитано 2307 раз)

Оффлайн Yarri

  • Участник
  • *
  • Сообщений: 32
Помогите, пожалуйста, с небольшой дополнительной настройкой.

Для начала опишу конфигурацию и что я делал (или проверял наличие), ибо вопросы с двумя провайдерами возникают у многих новичков.
На данный момент ситуация такая.
Есть три интерфейса eth
eth0 = breth0 = локальная сеть = 192.168.10.1/24
eth1 = breth1 = сеть провайдера-1 = 172.23.3.56/24 gw 172.23.3.1
eth2 = breth2 = сеть провайдера-1 = 172.16.34.26/19 gw 172.16.63.1

ppp1 = серый динамический адрес, выход через NAT, безлимит, медленный = выделяется из 10.0.0.0/8
ppp2 = белый статичный адрес, прямой доступ = 94.XX.YY.ZZ

настройки /etc/net/iface/breth*/ipv4route
для breth0 = нет
для breth1 =
default via 172.23.3.1
172.16.0.0/12 via 172.23.3.1 metric 1
для breth1 =
172.16.0.0/16 via 172.16.63.1 metric 2

настройки /etc/net/iface/ppp*/option
через веб-морду убрал галку шлюз по умолчанию для ppp2, ибо надо чтобы народ шел в интернет через безлим.
иначе при переподключении кто из последних интерфейсов последний переконнектился - тот и default.

Все работает. Хотя подозревая, что криво. На ppp2 и breth2 висит перенаправление на веб-сайт организации на внутренний IF локальной сети.
Есть доменное имя, привязанное на адрес ppp2.
Но у меня стойкое ощущение, что на запрос по ppp2 я отвечаю через ppp1.
На самом сервере так же поднят (включен) smtp. И вот тут начинаются проблемы. Дело в том, что на запрос HELO сервер должен отвечать по своему IP для которого зарегистрирован домен. А в случает ответа через ppp1 система проверки спама меня отметает.

Пока что я решил эту проблему, включив почтовый сервер на ретрансляцию своей исходящей почты на почтовый сервер провайдера-2 (он это разрешает). Однако его почтовый сервер висит только на внешнем интерфейсе 94.25.*.* и, чтобы добраться до него, приходится прописывать дополнительный маршрут, ведь дефолтом у меня стоит провайдер-1.
route add 94.YY.XX.0/24 gw 94.YY.XX.BB - это работает. Но поднятие только вручную. Как только ppp2 интерфейс переконнектится (раз в сутки), так этот маршрут пропадает. Как сделать, чтобы этот маршрут был постоянен?

Что я делал. Пытался положить файлик ipv4route в папку /etc/net/iface/ppp2/ с таким содержимым
94.YY.XX.0/24 via 94.YY.XX.BB - не работает.

Вторая проблема. Если отказываться от ретрансляции почты через сервер провайдера, то необходимо рисовать с помощью iproute2  проверку на  port 25. Но написание своих скриптов (не забывая, что у нас стоит альтератор и я еще только начинающий) может загубить всю рабочую систему.
Жаль, что в веб-морде Ковчега нет настроек по исходящим портам - было бы просто здорово.

Оффлайн Salomatin

  • Модератор раздела
  • ****
  • Сообщений: 984
    • Пошаговые инструкции
Посмотрите
http://forum.altlinux.org/index.php/topic,5569.msg81772.html#msg81772
в преломлении к своей проблеме. Думаю поможет. Будут вопросы, пищите.
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

MisHel64

  • Гость
eth0 = breth0 = локальная сеть = 192.168.10.1/24
eth1 = breth1 = сеть провайдера-1 = 172.23.3.56/24 gw 172.23.3.1
eth2 = breth2 = сеть провайдера-1 = 172.16.34.26/19 gw 172.16.63.1
Открутите бриджи. Не нужны они вам. Только лишние проблемы могут создать.

через веб-морду убрал галку шлюз по умолчанию для ppp2, ибо надо чтобы народ шел в интернет через безлим.
иначе при переподключении кто из последних интерфейсов последний переконнектился - тот и default.
Сделайте их оба дефаултами, но с разными стоимостями. Или по разным таблицам раскидайте.

Но у меня стойкое ощущение, что на запрос по ppp2 я отвечаю через ppp1.
Правильно подозреваете. Вы сами так настроили свою систему.

Что я делал. Пытался положить файлик ipv4route в папку /etc/net/iface/ppp2/ с таким содержимым
94.YY.XX.0/24 via 94.YY.XX.BB - не работает.
Этот маршрут не добавляется в таблицу маршрутизации, или добавляется, но не работает?

Внимательно изучите примеры от etcnet, там есть ваш случай. routing-lartc вроде назыается.
Чуть подправите под себя, и все должно заработать.
Только вот от веб морды придется отказаться :)

Оффлайн Yarri

  • Участник
  • *
  • Сообщений: 32
eth0 = breth0 = локальная сеть = 192.168.10.1/24
eth1 = breth1 = сеть провайдера-1 = 172.23.3.56/24 gw 172.23.3.1
eth2 = breth2 = сеть провайдера-1 = 172.16.34.26/19 gw 172.16.63.1
Открутите бриджи. Не нужны они вам. Только лишние проблемы могут создать.

через веб-морду убрал галку шлюз по умолчанию для ppp2, ибо надо чтобы народ шел в интернет через безлим.
иначе при переподключении кто из последних интерфейсов последний переконнектился - тот и default.
Сделайте их оба дефаултами, но с разными стоимостями. Или по разным таблицам раскидайте.

Что я делал. Пытался положить файлик ipv4route в папку /etc/net/iface/ppp2/ с таким содержимым
94.YY.XX.0/24 via 94.YY.XX.BB - не работает.
Этот маршрут не добавляется в таблицу маршрутизации, или добавляется, но не работает?

Внимательно изучите примеры от etcnet, там есть ваш случай. routing-lartc вроде назыается.
Чуть подправите под себя, и все должно заработать.
Только вот от веб морды придется отказаться :)

Бриджи были прикручены по-умолчанию. Систему и ставил потому как веб-морда позволила настроить ее практически не рыская по мануалам. Завести пользователей и настроить почту. Там же еще и статистика. И правила маршрутизации для всего прописаны. И есть система перенаправления портов, она часто нужна. А писать правила ручками я пока не решаюсь. Все ж таки сервер этот рабочий, а не тестовый агрегат.
Остальное типа таблиц и всего прочего - все это видел на примерах и скрипты уже готовые лежат. Поэтому душит зеленая жаба выключать веб-интерфейс.

На данный момент я готов отказаться от коренных изменений. Мне только чтобы маршрут 94.YY.XX.0/24 via 94.YY.XX.BB поднимался (оставлю свой почтовик отправлять через почтовик провайдера). Он просто не прописывается при переподключении ppp2. Уж куда я его только не пихал.

Фактически если есть срочная необходимость в быстром канале - я через ssh ручками прописываю либо add -host на тот сервер куда надо попасть либо в веб-морде просто ставлю галку на дефаулт для ppp2 и перезапускаю его. Понимаю, что криво, что надо писать скрипт на тестирование по дефолтовому каналу и если нет там пинга - дефолтить на резерв, продолжая пинговать первый и восстанавливая все обратно при появлении канала. Но это требует изучения и вдумчивого чтения мануала.

Оффлайн Yarri

  • Участник
  • *
  • Сообщений: 32
Черт, неужели так просто.... ??? ??? ???  Создал таблицу prov2 для одного провайдера, у которого ppp2, закинул туда
ip route add 94.YY.XX.0/24 via 94.YY.XX.BB table prov2

Пока все держится. Рестарт сервиса network - маршрут на месте. Рестарт машины - все на месте.... вот же..... а сколько копий сломал.

Оффлайн Yarri

  • Участник
  • *
  • Сообщений: 32
Нет. Не получается. Таблица очищается при перезагрузке и пропадает этот маршрут.
Люди, помогите. Мне надо всего лишь чтобы этот маршрут поднимался с рестартом ppp2.

Оффлайн Salomatin

  • Модератор раздела
  • ****
  • Сообщений: 984
    • Пошаговые инструкции
Нет. Не получается. Таблица очищается при перезагрузке и пропадает этот маршрут.
И будет меняться.
Почему вы не стали делать как в
http://forum.altlinux.org/index.php/topic,5569.msg81772.html#msg81772
Непонятно или так не хотите?
Там написано, что надо создать
file /etc/net/ifaces/ppp2/ipv4rule
туда таблицу писать, тогда при перезагрузке все будет работать.

Давно пользуюсь этим методом. Там всего два шага и перегружать сервер не обязательно, только сеть.
Если непонятно, что пишите. 
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

Оффлайн Yarri

  • Участник
  • *
  • Сообщений: 32
Нет. Не получается. Таблица очищается при перезагрузке и пропадает этот маршрут.
И будет меняться.
Почему вы не стали делать как в
http://forum.altlinux.org/index.php/topic,5569.msg81772.html#msg81772
Непонятно или так не хотите?
Там написано, что надо создать
file /etc/net/ifaces/ppp2/ipv4rule
туда таблицу писать, тогда при перезагрузке все будет работать.

Давно пользуюсь этим методом. Там всего два шага и перегружать сервер не обязательно, только сеть.
Если непонятно, что пишите. 

У меня в ppp2 лежит файл ipv4route в котором написано
94.XX.YY.0/24 via 94.XX.YY.BB, где *.BB - внешний адрес шлюза провайдера.
но файла ipv4rule не было.
Я его создал и пишу там
from 94.XX.YY.ZZ table prov2 - так?

Оффлайн Salomatin

  • Модератор раздела
  • ****
  • Сообщений: 984
    • Пошаговые инструкции
так?
Не так.

Давайте разберемся. Не совсем понял из описание ваши маршруты.
Пакеты не могут приходить через одного провайдера, а уходить через другого (если нет специальных правил).

Есть безлимитка. Снаружи  на нее не зайдешь. А вот исходящие все пускаем через нее.
Входящие пакеты приходящие на белый IP должны возвратится  через этот же.
Есть пакеты, которые должны наружу выходить только по белому IP
Есть сеть 10.0.0.0/8
Есть похоже еще что-то, но это непонятно.

Как делаем:
Настраиваем одну только безлимитку и тестируем, чтобы все уходило через нее.

После этого начинаем решать по второму:
/etc/net/ifaces/ppp2/ipv4route
default via 94.XX.YY.BB -адрес шлюза src 94.XX.YY.ZZ-внеший IP table prov2
/etc/net/ifaces/ppp2/ipv4rule
from 94.XX.YY.ZZ table prov2

/etc/iproute2/rt_tables
255 local
254 main
253 default
200 prov2 #это добавили  
0 unspec

#service network restart
( еще, конечно надо, чтобы при поднятии ppp2 дефаултом шлюз не прописывался)

Все, сервер виден снаружи по белому IP. Теперь, если пакет пришел по белому, то уйдет обратно по нему, даже если вы пробросили его на локальный сервер.
Все остальные пакеты, как и прежде уходят по серому.


Следующее:
Вы хотите отправить пакет наружу через белый и знаете на какой IP
дописываете /etc/net/ifaces/ppp2/ipv4route так:

81.81.81.81 via 94.XX.YY.BB src 94.XX.YY.ZZ
94.XX.YY.0/24 via 94.XX.YY.BB src 94.XX.YY.ZZ
default via 94.XX.YY.BB -адрес шлюза src 94.XX.YY.ZZ-внеший IP table prov2
 
#service network restart

Все, пакеты на вашу подсеть 94.XX.YY.0/24 и на адрес 81.81.81.81 будут уходить через белый, всегда, с любого локального компа.

Ну надо еще прописать 10.0.0.0/8  и там где мне непонятно.
« Последнее редактирование: 07.04.2010 18:54:16 от Salomatin »
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

MisHel64

  • Гость
Нет. Не получается. Таблица очищается при перезагрузке и пропадает этот маршрут.
Так и должно быть. При отключении интерфейса, все маршруты с ним связанные пропадают.

Я его создал и пишу там from 94.XX.YY.ZZ table prov2 - так?
Извините, а что так сложно посмотреть, что и как написано в примере?

Пакеты не могут приходить через одного провайдера, а уходить через другого (если нет специальных правил).
Могут, и будут, если системе специально не объяснить, что этого делать не стоит.
И в каких именно случаях, этого делать не стоит.

/etc/iproute2/rt_tables
255 local
254 main
253 default
200 prov2 #это добавили 
0 unspec
Не много не правильный подход, и попутно закапывающий грабельки.
Нужно четко представлять, что и куда должно идти.
И задача спокойно решается без использования маршрутизации по источнику, и раскладывания грабелек.

Оффлайн Salomatin

  • Модератор раздела
  • ****
  • Сообщений: 984
    • Пошаговые инструкции
Пакеты не могут приходить через одного провайдера, а уходить через другого (если нет специальных правил).
Могут, и будут, если системе специально не объяснить, что этого делать не стоит.
И в каких именно случаях, этого делать не стоит.

Специально применил слово специально, а вы про это же специальное (знал, что иначе накинетесь).
Но в любом случае, провайдер не пропустит чужие пакеты, если не просмотрит. Тут действуют законы не TCP/IP, а деньги.

Не много не правильный подход, и попутно закапывающий грабельки.
Нужно четко представлять, что и куда должно идти.
И задача спокойно решается без использования маршрутизации по источнику, и раскладывания грабелек.

Это решение, а не грабельки.
У вас удивительная способность убедить, что ничего делать не надо, потому что все очень сложно.
Не стал бы так драматизировать события. Так из дома выходить не надо, а вдруг на грабельки.

Вы предложите свое "спокойное" решение, не на пальцах, а в удобоваримой форме. А не сотрясайте воздух, что он есть.

Любой раскритикует автров Ковчега в шесть секунд и будет во многом прав.
А вот предложить свое сможет?

Yarri - делайте как написано и все будет прекрасно работать.
В крайнем случае пришлите в личку вывод команд каждого соединения pppN  и без них:
ip a s
ip r s
DNSы
напишу тексты файлов. Может так будет понятней.

или почитайте:
http://gazette.linux.ru.net/rus/articles/lartc/c322.html#SIMPLESOURCEPOLICYROUTING
« Последнее редактирование: 08.04.2010 06:16:48 от Salomatin »
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

MisHel64

  • Гость
У вас удивительная способность убедить, что ничего делать не надо, потому что все очень сложно.
Кто-то говорит, что ничего делать не нужно?
Нужно. И нужно сразу делать правильно, что бы потом не было мучительно больно искать ответ, на банальный вопрос, "а почему собственно вот это не работает".

Вы предложите свое "спокойное" решение, не на пальцах, а в удобоваримой форме. А не сотрясайте воздух, что он есть.
Написать пошаговую инструкцию? Это я вам такое удовольствие оставлю.
А где искать ответ, на поставленный вопрос, я указал.
Человеку нужно будет, он прочтет. А не нужно, так мне тем более.

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Попрошу не переходить на личности и не отвлекаться от темы.