Jump to content

Mikrotik - настройка NAT на насколько подсетей.


Recommended Posts

Добрый вечер, коллеги!
Столкнулся с такой ситуацией.

Вышестоящий провайдер выдаёт интернет посредством gre-tunnel.

К серверу (микротику) подключается 5 отдельных локальных подсетей.

Раньше на этом туннеле был один ай-пи, допустим 111.111.111.111

В ip - firewall было создано одно правило НАТ, применен scr-nat, в настройках было указано to-address 111.111.111.111

Всё работало.

Было принято решение чуть разгрузить это всё и добавлен ещё один внешний ай-пи, отличающийся на 1 цифру допустим 111.111.111.112.

К слову, оба этих ай-пи прописаны прямо на интерфейс туннеля (в ip - addresses).

Для того, чтобы две из пяти локальных сети выходили в мир по 111.111.111.111, а три другие по 111.111.111.112, я принял решение создать отдельно 5 правил scr-nat.

Вот кусок конфига:

 

/ip firewall nat
add action=src-nat chain=srcnat dst-address=!192.168.0.0/16 out-interface=gw-a src-address=192.168.0.0/24 src-address-list=Clients to-addresses=111.111.111.111
add action=src-nat chain=srcnat dst-address=!192.168.0.0/16 out-interface=gw-a src-address=192.168.1.0/24 src-address-list=Clients to-addresses=111.111.111.111
add action=src-nat chain=srcnat dst-address=!192.168.0.0/16 out-interface=gw-a src-address=192.168.2.0/24 src-address-list=Clients to-addresses=111.111.111.112
add action=src-nat chain=srcnat dst-address=!192.168.0.0/16 out-interface=gw-a src-address=192.168.3.0/24 src-address-list=Clients to-addresses=111.111.111.112
add action=src-nat chain=srcnat dst-address=!192.168.0.0/16 out-interface=gw-a src-address=192.168.4.0/24 src-address-list=Clients to-addresses=111.111.111.112

 

Вроде всё работает, но то ли мне кажется, то ли сайты иногда подвисают.

 

Посему вопросы:

1. Правильно ли я разрулил 2 внешних ай-пи на 5 локальных сетей?

2. Что это такое !192.168.0.0/16. Я понимаю, что это исключение адресного пространства локалки из НАТа, но с какой целью? Надо ли так делать?

3. Если на туннеле прописаны оба внешника 111.111.111.111 и 111.111.111.112, то если я буду пинговать некий сайт прямо с микротика, с какого из этих двух адресов будут идти запросы на сайт?

Link to post
Share on other sites

1. Да.

2. Да, правило на всякий случай чтоб локальный трафик через НАТ не бегал.

3. Трафик всегда должен уходить от основного ip, от алиаса можно отправить выбрав другой src ip в настройках софта. Ключём у пинга.

  • Thanks 1
Link to post
Share on other sites
1 час назад, Туйон сказал:

 

Вроде всё работает, но то ли мне кажется, то ли сайты иногда подвисают.

 

 

Можно уменьшить кол-во правил просуммировав подсети, к примеру 192.168.0.0/24 + 192.168.1.0/24 = > 192.168.0.0/23 . В итоге 5 правил заменить на 2.

  • Thanks 1
Link to post
Share on other sites
Только что, wantmore сказал:

Можно уменьшить кол-во правил просуммировав подсети, к примеру 192.168.0.0/24 + 192.168.1.0/24 = > 192.168.0.0/23 . В итоге 5 правил заменить на 2.

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

Допустим, 192.168.0 и 192.168.1 мы превращаем в 192.168.0.0/23

А так объединить 192.168.2, 192.168.3, 192.168.4 ?

Link to post
Share on other sites

А никак. Да и смысла в суммировании никакого, что 3 строки в фаерволе, что 10 - разницы вы не увидите даже в тестах.

Edited by KaYot
Link to post
Share on other sites
1 минуту назад, Туйон сказал:

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

Допустим, 192.168.0 и 192.168.1 мы превращаем в 192.168.0.0/23

А так объединить 192.168.2, 192.168.3, 192.168.4 ?

Можно сместить диапазон(если это не критично) .Прописать 192.168.4.0/22 - доступные подсети с 4 по 7 . 

Link to post
Share on other sites
15 часов назад, wantmore сказал:

Можно сместить диапазон(если это не критично) .Прописать 192.168.4.0/22 - доступные подсети с 4 по 7 . 

А для чего это ?Прироста по скрости это не даст . Тут проблем скорее всего в другом. Надо проверять.

А какой днс используют клиенты ? Днс Мт или наружний ?

Link to post
Share on other sites
27 минут назад, max_m сказал:

А какой днс используют клиенты ? Днс Мт или наружний ?

ДНС используется микротиковский.

На микротике в качестве вышестоящих ДНС используется 1.1.1.1 и вышестоящего провайдера.

Пробовал уже менять на разные, вроде ничего не происходит.

В фаерволе входящие подключения извне на ДНС закрыты, из внешки его ничего не нагружает.

Link to post
Share on other sites

Отмечу, что если проверять ДНС с помощью nslookup то ответы приходят моментально. Даже на такие сайты, которых нет в кеше.

Мне кажется, что дело не в ДНС.

Интернет приходит по GRE туннелю. Попробую сегодня MTU поставить меньше. Там по умолчанию стоит, оно выдает 1472 вроде. Поставлю 1420 для начала.

Edited by Туйон
Link to post
Share on other sites
10 минут назад, Туйон сказал:

 

В фаерволе входящие подключения извне на ДНС закрыты, из внешки его ничего не нагружает.

Как выглядит это правило? Посмотри в правиле нет ли исключений. Если у тебя просто добавился ип то всякие мту и тд тут не причем ты же физику не менял , до этого оно работало без проблем. Поэтому проблема у тебя в скорее в правилах фаервола.

Link to post
Share on other sites

add action=accept chain=input comment="Established Internet" connection-state=established in-interface-list=Internet
add action=drop chain=input comment="Deny Input Internet" in-interface-list=Internet

 

Первое правило разрешает Established соединения извне

Второе правило запрещает всё входящее извне.

В интерфейс-листе Internet этот gre-тунель и был ещё один канал ADSL, щас нету.

Link to post
Share on other sites

Тут как бы есть такой нюанс, незнаю на сколько он будет критичен но выглядит это примерно так ДНС запрос на выше стоящего ты отдаеш от имени МТ то биш ИП который на интерфейсе допустим 111.111.111.111, ответ пытаешся получить по ип 111.111.111.112 вот тут и могет быть проблема. Попрообуй клиентам которые НАТятся за ИП  111.111.111.112 выдать сторонний днс к примеру 8,8,8,8 или ДНС вышестоящего и посмотри на результат. 

Edited by max_m
Link to post
Share on other sites
2 часа назад, max_m сказал:

Тут как бы есть такой нюанс, незнаю на сколько он будет критичен но выглядит это примерно так ДНС запрос на выше стоящего ты отдаеш от имени МТ то биш ИП который на интерфейсе допустим 111.111.111.111, ответ пытаешся получить по ип 111.111.111.112 вот тут и могет быть проблема. Попрообуй клиентам которые НАТятся за ИП  111.111.111.112 выдать сторонний днс к примеру 8,8,8,8 или ДНС вышестоящего и посмотри на результат. 

К слову, я проверял именно с той подсети, где 111.111.111.111

Попробую и так.

Link to post
Share on other sites

Да ерунда это, к какому интерфейсу роутера не обратись - любой будет доступен и ответит от запрошенного ИП. Он в принципе не может отвечать с другого ИП.

Link to post
Share on other sites
24 минуты назад, Туйон сказал:

Кто пользуется DNS-сервером в ROS, скажите какой конфиг используете? Стандартный? Или что-то меняете?

На Мт не юзаем, нет необходимости отказались от разного рода граблей + при галке алов ремут реквест всяки ботнеты через твой МТ днс так как он светится наружу  начинают ддосить или напиши правило для с фильтром кому разрешено пользоваться днс это как минимум твоя подсеть и ип днс сервера в твоем случае 1.1.1.1. Но для начала просто смени ДНС на клиенте на сторонний от МТ, а потом начнем дальшесмотреть.

Link to post
Share on other sites

Тут ещё одна мысль. Возможно дело в ROS 6.43.2. Я её за полдня до манипуляций с этими всеми ай-пи обновил с 6.42.7

Сегодня попробую даунгрейднуть. Мало ли. У Микротика приколы бывают...

Link to post
Share on other sites
В 23.09.2018 в 20:37, Туйон сказал:

Вроде всё работает, но то ли мне кажется, то ли сайты иногда подвисают.

Главное - определится что не так.

Кажется или медленно открываются?

Пинги идут без потерь?

nslookup на разные направления мгновенно отрабатывает?

Пинг пакетами 1472(или 1500, сколько там в MT нужно задать) проходит?

 

P.S. у одмина не может быть диагноза "сайты подвисают", это вас юзер покусал походу)))

Edited by KaYot
Link to post
Share on other sites
31 минуту назад, KaYot сказал:

Главное - определится что не так.

Кажется или медленно открываются?

Пинги идут без потерь?

nslookup на разные направления мгновенно отрабатывает?

Пинг пакетами 1472(или 1500, сколько там в MT нужно задать) проходит?

 

P.S. у одмина не может быть диагноза "сайты подвисают", это вас юзер покусал походу)))

80% что проблема будет в ДНС у нас были уже грабли на МТ только на 5 ветке  поэтому не стали сильно извращаться и просто его не используем. Если память не изменяет то выглядело примерно как страница не полностью открываеться и подвисает , чем то похоже на то когда заблочили всякие вконтакты и т.д. на страницах где были ссылки на эти сети долго страница тупила при открытии. 

Link to post
Share on other sites
7 часов назад, Туйон сказал:

add action=accept chain=input comment="Established Internet" connection-state=established in-interface-list=Internet
add action=drop chain=input comment="Deny Input Internet" in-interface-list=Internet

Еще вот тут вопрос по правилу в первой строке разрешены connection-state=established, а не корректнее для ДНС записать вот так add action=accept chain=input src-address=8.8.8.8 comment="Allow DNS request" in-interface-list=Internet protocol=udp src-port=53

 

Link to post
Share on other sites
15 минут назад, max_m сказал:

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

Да, в какой-то мере похоже на эти симптомы. Причем одни сайты открываются лучше, другие хуже. Через время могут те сайты, которые открывались хуже, начать летать, а потом снова тупить. Началось это, всё таки, либо после моих манипуляций с фаерволом и вторым ай-пи, либо после обновления на 43.2. Для начала откачусь на 42.7.

 

6 минут назад, max_m сказал:

Еще вот тут вопрос по правилу в первой строке разрешены connection-state=established, а не корректнее для ДНС записать вот так add action=accept chain=input src-address=8.8.8.8 comment="Allow DNS request" in-interface-list=Internet protocol=udp src-port=53

 

Ну все буквари по базовой настройке Микротика именно так и предлагают (как я сделал), ещё они предлагают добавлять правило для related, но я его добавлял и там за сутки 0 пакетов, посему его выкинул. 

В Вашем примере это для одного адреса. А если их несколько? А если кроме ДНС у меня используется ещё и NTP сервер / клиент, для них ведь тоже придется такое делать. Не думаю что дело в этом правиле, оно там "с рождения" висит.

Link to post
Share on other sites
32 минуты назад, max_m сказал:

разрешены connection-state=established, а не корректнее для ДНС записать вот так

Allow established разрешает все что инициировал клиент, отдельные правила не нужны.

Другой вопрос что state-less фаервол(тот что проходит всю цепочку правил для разрешения пакета не зависимо от данных модуля state и таблицы соединений) в принципе эффективнее чем state full(который использует conntrack и таблицу состояний). 

Если есть возможность прописать все возможные запросы-ответы это будете дешевле по CPU чем использовать одну строку "allow established" которая просматривает conntrack table для каждого пакета.

 

P.S. реализовывал на своих NASах полностью state-less режим, по ресурсам вышло +- монопенисуально с банальным allow established. Ну а длинна фаервола и количество подводных камней отличается на порядок. Но у меня НАТ вынесен с серверов доступа, как и должно быть.. А клиенты идут мимо conntrack.

Edited by KaYot
Link to post
Share on other sites

Давай так у нас твоя схема по мт работает вот так 

add address=1.xxx.xxx.225/28 comment=NN-NAT-POOL1 interface=bonding1 network=1.xxx.xxx.224
add address=1.xxx.xxx.226/28 comment=NN-NAT-POOL2 interface=bonding1 network=1.xxx.xxx.224
add address=1.xxx.xxx.227/28 comment=NN-NAT-POOL3 interface=bonding1 network=1.xxx.xxx.224
далее

add action=src-nat chain=srcnat comment=Local-Pool-NAT1  out-interface=bonding1 src-address-list=Local-NAT-1 to-addresses=1.xxx.xxx.225
add action=src-nat chain=srcnat comment=Local-Pool-NAT2  out-interface=bonding1 src-address-list=Local-NAT-2 to-addresses=1.xxx.xxx.226
add action=src-nat chain=srcnat comment=Local-Pool-NAT3  out-interface=bonding1 src-address-list=Local-NAT-3 to-addresses=1.xxx.xxx.227

все и работает без проблем , только ДНС сервер у нас у клиентов не МТ.

Попробуй приведи к вот такому же, это 100% рабочий конфиг.src-address-list=Local-NAT-1 Список сетей в пуле которые натятся к примеру 192,168,0,0/24 у тебя еще будет строка dst-address=!192.168.0.0/16 ну так как ты напсал в первом посте так что тут все правильно.

 

Edited by max_m
Link to post
Share on other sites

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

Да у нас версия МТ 6,42,5

Link to post
Share on other sites

Ночью удаленно сделал даунгрейд на 6.42.7

Сутречка проверил - всё летает.

То ли из за того, что нагрузки почти нет, то ли всё таки в 6.43 какой-то косяк.

День покажет.

 

P.S. Да, кстати. В 6.43 начали "внедрять" 802.3bz, появились в интерфейсах скорости 2.5 и 5 гбит/с.

При этом при экспорте конфига, интерфейс, на котором нормально работает по автоопределению 100 мбит, выдается такая каша:

 

set [ find default-name=ether1 ] advertise=\
    10M-half,10M-full,100M-half,100M-full,1000M-half,1000M-full disabled=yes \
    name=port1

 

Хотя галочки и на 2.5 и на 5 тоже поставлены.

Режет глаза.

Edited by Туйон
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...