The OpenNET Project / Index page

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



"2 ISP (PBR+NAT)- ipfw routing проблема fwd c mac+ip "
Вариант для распечатки  
Пред. тема | След. тема 
Форум Информационная безопасность (BSD ipfw, ipf, ip-filter / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"2 ISP (PBR+NAT)- ipfw routing проблема fwd c mac+ip "  +/
Сообщение от radiorobot (ok), 11-Дек-21, 23:31 
Добрый день коллеги,

столкнулся с задачей которую никак не могу решить верно (с помощью одного роутера freebsd).

сеть состоит из 3-х хостов R0, R1, H1. Необходимо обеспечить доступность H1 по обоим ip адресам, пусть для простоты будет tcp 110, при этом строгое условие - H1 должен отправлять пакеты отправителю с того адреса на который получен запрос.

Схематично: https://c.radikal.ru/c33/2112/a8/c337fae01d2f.jpg

R0  (не изменяемая часть)
ip A.A.A.A/24
================================
R1 (em0) (alias делать запрещено)
ip A.A.A.A+1/24
gw A.A.A.A

R1 (em2)
ip A.A.A.A+2/24
gw A.A.A.A

R1 (em1)
ip B.B.B.B/24
=================================
H1 (em0)
ip B.B.B.B+1/24 alias0 ip B.B.B.B+2/24
gw B.B.B.B


Как видно классический PBR и NAT, эта задача решается fwd (next-hop, c подменой mac), давнешний конфиг для этого (nat отдельным демоном) :

ipfw add 1000 divert 8778 ip from B.B.B.B+1 to any
ipfw add 1100 divert 8668 ip from B.B.B.B+2 to any

ipfw add 3000 fwd A.A.A.A log ip from A.A.A.A+1 to any
ipfw add 3100 fwd A.A.A.A ip from A.A.A.A+2 to any

ipfw add 4000 divert 8778 ip from any to A.A.A.A+1
ipfw add 4100 divert 8668 ip from any to A.A.A.A+2

ipfw add 5000 allow ip from any to any

Данный конфиг работает отлично когда внешние шлюзы R1 разные, т.е. A.A.A.A и какой-нибудь С.С.С.С, но в задаче выше шлюз одинаковый (читай mac+ip). Отладка правил показывает, что ipfw корректно работает по правилам, но отправка пакета действием fwd идет по первому попавшемуся соответствию в таблице соответствия mac+ip. Т.е. в случае выше по default-gateway A.A.A.A через интерфейс em0. По em2 tcpdump показывает, что получает пакеты из вне, но отправка ответа идет через em0. При этом хост H1 доступен через em0.

Соответственно вопрос, как в данной задаче обеспечить доступность хоста H1 через оба адреса (интерфейса) и с использованием только одного роутера R1 на базе FreeBSD? Накиньте идей, кручусь возле net.fibs(setfib), но что-то никак.

P.S. повторюсь, неизменяемые условия: R0, настройки R1 в части адресов А.А.А.0/24.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "2 ISP (PBR+NAT)- ipfw routing проблема fwd c mac+ip "  +/
Сообщение от gfh (??), 12-Дек-21, 16:33 
На хосте H1 надо сделать дополнительную таблицу маршрутизации для второго интерфейса со своим шлюзом по умолчанию R1, тогда ответ на пакет пришедший на второй интерфейс будет отправляться с этого же интерфейса.
Ответить | Правка | Наверх | Cообщить модератору

2. "2 ISP (PBR+NAT)- ipfw routing проблема fwd c mac+ip "  +/
Сообщение от radiorobot (ok), 12-Дек-21, 19:38 
> На хосте H1 надо сделать дополнительную таблицу маршрутизации для второго интерфейса со
> своим шлюзом по умолчанию R1, тогда ответ на пакет пришедший на
> второй интерфейс будет отправляться с этого же интерфейса.

гхм. поясните с адресацией, на мой взгляд ваше утверждение не верно. Как я понимаю решение о маршрутизации принимает R1 согласно своей таблицы маршрутизации. На это никак не может влиять H1. Т.е. вне зависимости от таблиц H1, R1 будет руководствоваться своей таблицей с той же проблемой mac+ip по первому найденному соответствию.

причем не зависимо как получен трафик через B.B.B.B или например D.D.D.D (если ввести дополнительную адресацию между R1 и H1, где D.D.D.D адрес R1 и шлюз по умолчанию для H1)

Ответить | Правка | Наверх | Cообщить модератору

3. "2 ISP (PBR+NAT)- ipfw routing проблема fwd c mac+ip "  +/
Сообщение от Аноним (3), 13-Дек-21, 09:42 
>[оверквотинг удален]
>> своим шлюзом по умолчанию R1, тогда ответ на пакет пришедший на
>> второй интерфейс будет отправляться с этого же интерфейса.
> гхм. поясните с адресацией, на мой взгляд ваше утверждение не верно. Как
> я понимаю решение о маршрутизации принимает R1 согласно своей таблицы маршрутизации.
> На это никак не может влиять H1. Т.е. вне зависимости от
> таблиц H1, R1 будет руководствоваться своей таблицей с той же проблемой
> mac+ip по первому найденному соответствию.
> причем не зависимо как получен трафик через B.B.B.B или например D.D.D.D (если
> ввести дополнительную адресацию между R1 и H1, где D.D.D.D адрес R1
> и шлюз по умолчанию для H1)

man ipfw
ключевое слово setfib

Ответить | Правка | Наверх | Cообщить модератору

4. "2 ISP (PBR+NAT)- ipfw routing проблема fwd c mac+ip "  +/
Сообщение от gfh (??), 13-Дек-21, 14:43 
Я с FreeBSD не работал и поэтому по синтаксису буду ошибаться.
На роутере вам надо поднять дополнительную таблицу маршрутизации с помощью setfib (?)
Что-то типа:
setfib 1 route add default A.A.A.A via em2

В дефолтной таблице маршрутизации 0 у вас уже должен быть маршрут по умолчанию через A.A.A.A via em0
В правилах файрвола указать что-то типа:
ipfw add 1100 setfib 1 divert 8668 ip from B.B.B.B+2 to any
ipfw add 4100 setfib 1 divert 8668 ip from any to A.A.A.A+2
чтобы пакеты с адреса B.B.B.B+2 и портами 8668 попадали во вторую таблицу маршрутизации.
Думаю идея понятна?

Но это ещё не всё.
Пускай у вас приходит пакет на A.A.A.A+2 порт 8668, он отправляется на адрес B.B.B.B+2 и попадает на интерфейс em0_alias, но проблема в том что на хосте H1 только один шлюз по умолчанию через интерфейс em0, соответственно ответ с хоста H1 пойдет через интерфейс em0 с адресом B.B.B.B+1 и роутере R1 он не попадет в правила файрволла, так как правилом

ipfw add 1100 divert 8668 ip from B.B.B.B+2 to any
он ждет пакета с адреса B.B.B.B+2, а не B.B.B.B+1 для порта 8668
Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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