Kernel nat и диапазон ип адресов

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Spank
мл. сержант
Сообщения: 106
Зарегистрирован: 2009-04-16 0:28:05

Kernel nat и диапазон ип адресов

Непрочитанное сообщение Spank » 2009-11-10 23:32:41

Вопрос вроде такой довольно простой, но ответа я чет не могу нарыть. Реально ли заставить kernel nat работать с несколькими внешними адресами, например одному клиенту один другому другой и тп. Ну и как это правильно реализовать. Если нет, то как мне добиться желательного результата? Пробовал вешать алиасы на интерфейс, нат использует последний ип.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
---nebo---
старшина
Сообщения: 424
Зарегистрирован: 2008-11-01 21:06:23
Откуда: Киев
Контактная информация:

Re: Kernel nat и диапазон ип адресов

Непрочитанное сообщение ---nebo--- » 2009-11-11 1:22:18

В PF такое точно можно сделать и даже больше :smile:

Код: Выделить всё

http://house.hcn-strela.ru/BSDCert/BSDA-course/apcs02.html
п.2.2.5
...участки под застройку в живописном месте Интернет

ivan__
сержант
Сообщения: 234
Зарегистрирован: 2009-08-11 15:48:32
Откуда: Питер

Re: Kernel nat и диапазон ип адресов

Непрочитанное сообщение ivan__ » 2009-11-11 12:36:26


Spank
мл. сержант
Сообщения: 106
Зарегистрирован: 2009-04-16 0:28:05

Re: Kernel nat и диапазон ип адресов

Непрочитанное сообщение Spank » 2009-11-11 13:45:05

ivan__ писал(а):http://www.lissyara.su/?id=1967
Либо плохо читал либо там нет такой возможности. Везде один адрес внешний, а в одном примере есть 2 и для этого создается второй нат, ну и суть там другая. У меня больше 20 ипов...
pf конешно красиво, но вот как себя поведут два фаервола, у мну через ipfw идет зарезка скорости клиентам(ng_car).

terminus_
проходил мимо

Re: Kernel nat и диапазон ип адресов

Непрочитанное сообщение terminus_ » 2009-11-11 13:55:51

В моих примерах такого нет, и сам ipfw nat так не умеет, но есть способ.

Можно модифицировать пятый пример заменив в нем setfib на tag, а в секциях где происходит направление в наты, проверять теги через опцию tagged - таким образом получиться раскидывать трафик на несколько экземпляров натов.

Сами сможете это сделать? Если нет, то ждите - вечером нарисую пример.
Интернсно было бы такое попробовать?

terminus_
проходил мимо

Re: Kernel nat и диапазон ип адресов

Непрочитанное сообщение terminus_ » 2009-11-11 14:00:30

Хотя стоп. Уточните что именно надо - вы хотите пул из внешних адресов отдать для подсети, или вам надо просто по отдельному нату для каждого клиента? Если пул, то модифицировать 5й пример, если по отдельному нато то это еще проще.

Spank
мл. сержант
Сообщения: 106
Зарегистрирован: 2009-04-16 0:28:05

Re: Kernel nat и диапазон ип адресов

Непрочитанное сообщение Spank » 2009-11-11 14:11:23

Мне надо что бы клиенты выходившие в инет с внутренними ип адресами использовали пул внешних ип, причем таким образом, что бы один ип закреплялся за клиентом. Вот для pf подобное правило.
nat on vlan202 inet from any to any -> 192.0.2.4/31 source-hash
А вот сейчас как заруливаются правила в нат.

Код: Выделить всё

#-> out
fwd 172.25.0.254 ip from внешние.ипишники to any
nat 123 ip from any to any
#in->
nat 123 ip from any to any in recv vlan202
Тут если клиентский ип внешний, тогда я не натирую его и отправляю в другой шлюз, туда идет весь не натированный траф.

И еще такой вопрос, нужно ли вешать внешники на ифес что бы их натировать? Или достаточно в нате указать?

Гость
проходил мимо

Re: Kernel nat и диапазон ип адресов

Непрочитанное сообщение Гость » 2009-11-11 14:26:21

Сколько всего внешних адресов? предположим 10?
Настройте 10 экземпляров натов

Код: Выделить всё

nat 1 config log ip 1.2.3.4 reset same_ports deny_in
nat 2 config log ip 1.2.3.5 reset same_ports deny_in
nat 3 config log ip 1.2.3.6 reset same_ports deny_in
nat 4 config log ip 1.2.3.7 reset same_ports deny_in
...
а потом заварачиваете каждого кдиента в его нат

Код: Выделить всё

ipfw add nat 1 ip from 192.168.1.0/24 to any out
ipfw add nat 1 ip from any to 1.2.3.4 in

ipfw add nat 2 ip from 192.168.2.0/24 to any out
ipfw add nat 2 ip from any to 1.2.3.5 in
...

Spank
мл. сержант
Сообщения: 106
Зарегистрирован: 2009-04-16 0:28:05

Re: Kernel nat и диапазон ип адресов

Непрочитанное сообщение Spank » 2009-11-11 14:34:30

Это конешно вариант, но тут если грубо 20 внешников, то добавится 40 правил дополнительных (хотя ту таблички наверное можно прикрутить ), а так же придется разбивать клиентскую подсеть на несколько и как бы проводить аналитику, какие адреса используются, какие подсетки в нат закинуть, а с течением времени новые начнут пользоваться и тп. Не очень красиво получается, да и балансировки не добится, на одном ип будет 100 клиентов, а на другом 10. К тому же в будущем будут еще наты по разным направлениям.

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: Kernel nat и диапазон ип адресов

Непрочитанное сообщение schizoid » 2009-11-11 14:59:51

ниче собсна не мешает использовать 2 фаервола...
на одном чисто НАТ, на втором все остальное
ядерный взрыв...смертельно красиво...жаль, что не вечно...

Spank
мл. сержант
Сообщения: 106
Зарегистрирован: 2009-04-16 0:28:05

Re: Kernel nat и диапазон ип адресов

Непрочитанное сообщение Spank » 2009-11-11 15:32:09

schizoid писал(а):ниче собсна не мешает использовать 2 фаервола...
на одном чисто НАТ, на втором все остальное
То есть я заменяю свои правила на

Код: Выделить всё

#-> out vlan202
fwd 172.25.0.254 ip from внешние.ипишники to any
allow ip from any to any
#in->
allow ip from any to any in recv vlan202
Тут еще вопрос в том, что если pf нат отработает раньше чем ipfw->out vlan202 тогда мое правило fwd не отработает...
pf.conf

Код: Выделить всё

pass all
nat on vlan202 inet from ng* to any -> 192.0.2.4/31 source-hash
Прокатит ли конструкция ng* для указания всех ng интерфейсов?

Вся фильтрация будет проходить на ipfw.

Аватара пользователя
---nebo---
старшина
Сообщения: 424
Зарегистрирован: 2008-11-01 21:06:23
Откуда: Киев
Контактная информация:

Re: Kernel nat и диапазон ип адресов

Непрочитанное сообщение ---nebo--- » 2009-11-11 15:38:52

schizoid писал(а):ниче собсна не мешает использовать 2 фаервола...
на одном чисто НАТ, на втором все остальное
допустим правила фильтрации будут на ipfw, а нат на PF. Куда будет попадать приходящий пакет с начала, на фильтрующие правила или на НАТ? Как разруливается такая ситуация вообще?
...участки под застройку в живописном месте Интернет

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Kernel nat и диапазон ип адресов

Непрочитанное сообщение terminus » 2009-11-11 21:08:13

нарисовал как "сделать пул" из внешних адресов.
http://www.lissyara.su/?id=1967#example_7

---

на счет 2х фаерволов - nuclight рассказывал, что в сетевом стеке FreeBSD они вызываются как фильтры - один после другого. В какой именно очередности будет вызываться ipfw и pf я незнаю, но наверное, если вкомпилить ipfw в ядро, а pf вызывать как модуль, то приоритет будет у ipfw.
http://smotri.com/video/view/?id=v9864889761#none

:unknown:
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Spank
мл. сержант
Сообщения: 106
Зарегистрирован: 2009-04-16 0:28:05

Re: Kernel nat и диапазон ип адресов

Непрочитанное сообщение Spank » 2009-11-11 21:45:28

Решение довольно таки интересное получается. Есть пара вопросов. Как поведет себя prob с одними одинаковым ип. Может получится такое, что например первый пакет пошел во внешку через один ип, а второй через другой, хотя оба эти пакета из одной сессии. Ну и вапще будет ли привязка внутреннего ип к внешнему в данном случае.

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Kernel nat и диапазон ип адресов

Непрочитанное сообщение terminus » 2009-11-11 22:06:51

prob поведет себя отлично так как там еще и keep-state используется. Я пока поленился расписывать полное, нудное описание прохождения трафика, но идея там такая же как пятом примере. Для пятого расписано. Фишка в том, что keep-state запоминают через какое правило оно в первые было вызвано и потом всегда перепрыгивает на него. То есть сессии (а конкретно назначение тега для пакета) не должны ломаться - если раз пошло через второй нат, то и весь последующий трафик в рамках сессии тоже пойдет через него.

На привязку внутреннего к внешнему этот пример не расчитан - тут просто динамическое использование пула адресов для внутренней подсети. Один и тот же внутренний IP может выходить в мир через все внешние адреса пула.

Уточните вашу задачу более детально.
Просто, если надо именно "привязать" 1:1, то тогда надо делать по схеме как я днем написал (свой нат для конкретных клиентских IP), а если нужна комбинация и привязки, и динамического распределения, то тут надо мозговать...
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Spank
мл. сержант
Сообщения: 106
Зарегистрирован: 2009-04-16 0:28:05

Re: Kernel nat и диапазон ип адресов

Непрочитанное сообщение Spank » 2009-11-12 4:51:41

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

Spank
мл. сержант
Сообщения: 106
Зарегистрирован: 2009-04-16 0:28:05

Re: Kernel nat и диапазон ип адресов

Непрочитанное сообщение Spank » 2009-11-12 16:29:05

terminus писал(а):нарисовал как "сделать пул" из внешних адресов.
на счет 2х фаерволов - nuclight рассказывал, что в сетевом стеке FreeBSD они вызываются как фильтры - один после другого. В какой именно очередности будет вызываться ipfw и pf я незнаю, но наверное, если вкомпилить ipfw в ядро, а pf вызывать как модуль, то приоритет будет у ipfw.
http://smotri.com/video/view/?id=v9864889761#none

:unknown:
В таком раскладе пакетики у меня идут так.

Исход ipfw->pf_nat
Вход pf_nat->ipfw
ipfw:

Код: Выделить всё

00104 allow ip from any to 10.25.0.0/16 in recv vlan202
00105 skipto 4000 ip from any to any out xmit vlan202
04005 allow ip from 10.25.0.0/16 to any
04999 deny ip from any to any
pf

Код: Выделить всё

nat on vlan202 inet from 10.25.0.0/16 to any -> out_net source-hash

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Kernel nat и диапазон ип адресов

Непрочитанное сообщение terminus » 2009-11-13 22:53:42

Доделал описание движения трафика через 7-й пример.
Пока писал, нашел ошибки в первоначальном варианте :smile: все же "нудное описалово" имеет свои плюсы - ошибки отлавливаются.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.