The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Policy Based Routing на основе PF"
Отправлено Запуниди Сергей, 23-Авг-07 20:59 
>Эти правила , насколько понимаю , включают балансировку между двумя
>провайдерами , а как быть , если нужно просто направить все пакеты
>из
>$int_net1 на $gw1 , а из $int_net2 на $gw2 ?

Я решал такую же проблему. Нужно было сделать NAT из внутренней сети к двум разным провайдерам. Сделать так чтобы всё шло правильным маршрутом автоматически не получилось. Ведь действительно как роутер должен угадывать какому из двух провайдеров сейчас отправлять пакет?
Поэтому работает такой подход:
Делаем NAT:
nat on $proc from $internal_net to any -> ($proc)
Теперь нужно сделать чтобы это шло через нужный шлюз, а не тот, что указан в таблице роутинга:
pass in quick on $internal from $internal_net to $internal
pass in on $internal route-to ($proc $proc_gw) from $internal_net to any
Первая строчка нужна чтобы связь с самим роутером не была потеряна. Вторая строчка говорит, что всё из внутренней сети должно идти через шлюз $proc_gw.
Вот объявления переменных:
corbina_tun = "tun0"
corbina_loc = "xl0"
proc = "fxp0"
internal = "vr0"
corbina_tun_gw = "Unknown"
corbina_loc_gw = "10.83.0.17"
proc_gw = "217.117.116.129"
internal_net = "vr0/29"

Если нужно теперь отправить что-то через второй шлюз, то надо дописать правила на те случаи когда нужно пользоваться вторым шлюзом. Эти правила должны быть и для NAT и для pass in .. route-to .....

Далее идут непрверенные мысли:
Возможно автоматически всё можно сделать строчками типа вот этих:
pass out on $ext_if1 route-to ($ext_if2 $ext_gw2) from $ext_if2 \
   to any
pass out on $ext_if2 route-to ($ext_if1 $ext_gw1) from $ext_if1 \
   to any
которые я взял из http://www.openbsd.org/faq/pf/pools.html. Но эти строчки ловят идущие не туда пакеты и направляют их куда надо (я так предполагаю), а надо напрямую написать правила pass out для одного и того же интерфейса типа:
pass out on $ext_if1 route-to ($ext_if1 $ext_gw1) from $ext_if1 \
   to any
pass out on $ext_if2 route-to ($ext_if2 $ext_gw2) from $ext_if2 \
   to any
Эти строчки отличаются от предыдущих!

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, [email protected] (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.

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



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру