Jump to content
Калькуляторы

Как правильно использовать пул внешних адресов для NAT?

На микротике есть внешний интерфейс A.A.A.101/25.

Если настроить srcnat через этот интерфейс, то все работает.

Но я хочу натить клиентов через A.A.A.224/28.

 

Сделал так.

Задал в правиле action=src-nat to-addresses=A.A.A.224/28.

Прописал на внешнем интерфейсе дополнительно A.A.A.224/28.

На бордере прописал маршрут A.A.A.224/28 через A.A.A.101.

 

Вроде бы все работает.

Но у одного и того же клиента при открытии какой-нибудь интернет-странице в списке трансляций могут быть разные IP-адреса.

Например одна сессия натится через A.A.A.236:1355, и тут же другая натится через A.A.A.239:1365.

Как-то это нехорошо.

Можно как-то сделать так, чтобы для одного клиента трансляции группировались в одном внешнем IP?

Share this post


Link to post
Share on other sites

Вам надо тех клиентов, которых натить отдельно, в FW- MANGLE засунуть в прероутинг с маркировкой, и в IP-ROUTE сделать правило 0.0.0.0/0 для этой марки с шлюзом выбранной подсети.

 

Не забывайте также, что порядок правил в NAT важен. Лучше всего жестко делить клиентов по признакам interface/address list в правилах SRC-NAT, тогда не в свое правило они просто не будут попадать

Share this post


Link to post
Share on other sites

Наверное я неправильно выразился.

Я не хочу делать много правил, по одному на каждый адрес.

Правило у меня одно и оно в принципе работает. Просто алгоритм трансляции выбирает внешний адрес и порт для трансляции случайным образом.

Я бы хотел, чтобы он не использовал разные IP-адреса для одного клиента без необходимости (например использованы все возможные порты).

Share this post


Link to post
Share on other sites

4 часа назад, alibek сказал:

Наверное я неправильно выразился.

Я не хочу делать много правил, по одному на каждый адрес.

Правило у меня одно и оно в принципе работает. Просто алгоритм трансляции выбирает внешний адрес и порт для трансляции случайным образом.

Я бы хотел, чтобы он не использовал разные IP-адреса для одного клиента без необходимости (например использованы все возможные порты).

А у клиентов которые натятся одна подсеть? Если разные то создать два адрес листа засунуть их подсети в листы и в правиле нат указать source list

Share this post


Link to post
Share on other sites

1 час назад, fractal сказал:

и в правиле нат указать source list

Да не в этом проблема.

А в том, что у клиента может меняться внешний IP.

 

49 минут назад, DeLL сказал:

Для решения Вашей задачи есть action=same

Да, похоже на то.

Спасибо, почитаю.

 

Share this post


Link to post
Share on other sites

В 28.09.2023 в 18:52, DeLL сказал:

Для решения Вашей задачи есть action=same

Почитайте что он делает

Оно делает полную ерунду. Равномерно абонентов по имеющемуся пулу адресов не разделяет.

 

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

Share this post


Link to post
Share on other sites

7 часов назад, Saab95 сказал:

Если какому-то абоненту нужно жестко сделать привязку к некому внешнему адресу.

Мне не нужна жесткая привязка.

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

same в общем-то именно это и делает.

Равномерное распределение трансляций по всему пулу не требуется, хотя было бы неплохо.

Share this post


Link to post
Share on other sites

Цитата

Оно делает полную ерунду. Равномерно абонентов по имеющемуся пулу адресов не разделяет.

Как обычно пернул в воду. Иди сначала прочитай что делает этот action, а потом уже пиши свои комментарии - это во-первых. А во-вторых, никому и не нужно никакого "равномерного распределения". Нужна привязка всех соединений одного абона к одному внешнему, что данный action успешно и выполняет

Share this post


Link to post
Share on other sites

5 часов назад, DeLL сказал:

Нужна привязка всех соединений одного абона к одному внешнему, что данный action успешно и выполняет

Можно уточнить каким же образом? Вы сами тестировали досконально его работу?

 

Допустим есть 10 адресов и 10 абонентов. Да, чего простого - на каждый адрес по абоненту и все работает.

 

Теперь представьте варианты, те же 10 адресов, но сейчас абонентов 500, через час 900, еще через час 200, а потом сразу 1000. Это активных, а сами абоненты могут как оставаться активными, так и выключаться, то есть ранжирование из общей массы, например 2000.

 

Этот same равномерно и постоянно привязку не делает. У абонентов изменяются внешние IP адреса.

 

5 часов назад, alibek сказал:

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

 

У нас НАТ на каждый адрес привязан через SRC-NAT.

Каждый абонентский IP через PPC попадает в свой адрес лист, далее в нем и находится.

После все время этот абонент и работает с указанного адреса.

 

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

 

Кроме всего, не забывайте и про внешнее управление. Когда через SSH периодически запрашивать все списки адресов, смотреть есть ли перекосы по количеству абонентов, и отключать из работы правила по добавлению в те списки, где много абонентов. Тогда новые активные абоненты в эти списки попадать не будут.

 

 

Share this post


Link to post
Share on other sites

Цитата

Этот same равномерно и постоянно привязку не делает. У абонентов изменяются внешние IP адреса.

А теперь еще раз - иди читай сначала!

для тугих могу дать ссылку https://help.mikrotik.com/docs/display/ROS/NAT и если лень искать - процитирую:

Цитата
  • same - gives a particular client the same source/destination IP address from a supplied range for each connection. This is most frequently used for services that expect the same client address for multiple connections from the same client

Думаю переводчиком все умеют пользоваться.

А если из личного опыта - последний октет IP он оставляет неизменным после НАТа, если такой доступен в пуле

Share this post


Link to post
Share on other sites

Вот это "дроч" вместо одной строчки конфига использовать какие-то самодельные скрипты да еще и с внешним управлением. К тому же в описанной логике через час произойдет смена адреса 100%. Бред полный, используйте same, это аналог, а скорее прямая функция из iptables -j SNAT --persistent

Share this post


Link to post
Share on other sites

В 10.10.2023 в 21:20, DeLL сказал:

А если из личного опыта - последний октет IP он оставляет неизменным после НАТа, если такой доступен в пуле

А если пул, 32 или 64 адреса, как будет?

 

Еще раз напишу, same равномерно адреса не распределяет, постоянную привязку не делает, у абонентов изменяются внешние IP адреса. Мониторинга или отладки никакой нет, т.к. если идет 10000 разных адресов на НАТ, вообще не ясно кто куда и как идет.

 

При разделении по адрес листам всегда видно где абонент находится.

Share this post


Link to post
Share on other sites

Под 20т абонентов используется /24 сетка через netmap. На несколих натах она порезана на /27. Можешь сколько угодно рассуждать и что-то доказывать , работает все, обращений никаких , смены частой ip тоже нет. Смены ip в пределах одной сессии вообще нет.

Edited by AKim

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.