Проблема с избирательным src-nat

Обсуждение ПО и его настройки
Ответить
xslonikx
Сообщения: 2
Зарегистрирован: 11 апр 2017, 11:57

Здравствуйте!

Сперва опишу задачу, которая стоит.
Есть два устройства - бордер, на котором запущен BGP, а также терминируются белые подсети, и CCR, на котором терминируются серые сети, которые потом NAT'ятся в один адрес.
Хочется это привести в порядок и вынести всю внутреннюю маршрутизацию на CCR, оставив на бордере только BGP и один-единственный интерфейс во внутреннюю сеть - между СCR и бордером.
Естественно, проходящий через этот интерфейс трафик серых сетей должен подвергаться NAT'y, а трафик белых подсетей - проходить через тот же самый интерфейс как есть, без трансляции адресов.

Проблема в том, что сделать NAT избирательным не получается - вне зависимости от наличия в правиле nat указанного src-address, в котором указываются диапазоны подсетей для ната (или наоборот, исключения из ната), роутер выполняет трансляцию адресов для всего трафика, проходящего через интерфейс.

Попытка номер 1:
В правило для ната указать диапазон, который натить НЕ надо

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

chain=srcnat action=src-nat to-addresses=X.X.X.X src-address-list=!ext_subnets out-interface=ether1_uplink log=no log-prefix="NAT" 


Результат - натится весь трафик вне зависимости от адреса источника.
Замена src-address-list на тот, что наоборот, надо натить (убрав, соответственно, отрицание), а также указание вместо адреслиста конкретного диапазона адресов не помогает.

Попытка номер 2:
Перед правилом src-nat воткнуть правило с действием accept, чтобы выкинуть нужный (ненужный) трафик из таблицы NAT.

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

chain=srcnat action=accept src-address-list=!grey_nets out-interface=ether1_uplink 


Результат тот же что и в предыдущем пункте. И те же самые манипуляции так же не помогают.

Кто знает, подскажите, в чем может быть дело и что я делаю не так?
Прокидывать как костыль еще один интерфейс между микротиком и бордером и создавать разные таблицы маршрутизации с разными дефолт-гейтвеями не очень хочется.
Буду признателен за совет.

Устройство CCR1036-12G-4S
Версия прошивки 3.33, версия пакетов 6.36.


Аватара пользователя
Vlad-2
Модератор
Сообщения: 2531
Зарегистрирован: 08 апр 2016, 19:19
Откуда: Петропавловск-Камчатский (п-ов Камчатка)
Контактная информация:

Частично (особенно вариант 2) у меня используется, только я делал слегка иначе:
а) сначала делал что явно надо мне НЕ-НАТИТЬ (или кого, обычно IP адреса/сетки/вредные юзеры), и это правило было выше (первее)
б) остальное уже натил явно по спискам (SRC-ADDR-List) и от нужного внешнего адреса....

То есть сначала то что можно "описать"/поймать - заносим в явный адрес-лист -- описываем, остальное натим.
А так в Вашем варианте, попытку 2-ю я прочитал и понял так:
всё что не в списке "сером" - то просто аццептировать, то есть попало в правило и встало....
а надо наоборот...мне так кажется....потому что серые адреса(список) проще проНАТить, чем описывать список с белыми адресами.
(это моё видение)



На работе(ах): 2xCCR1016-12G, RB3011UiAS и hAP lite (RB941)
Дома: CCR1016-12G, RBcAP2n (standalone), RB wAP LTE kit
Для тестов(под рукой): RB3011UiAS, hAP mini (RB931) и что-то ещё по мелочи
MTCNA
MTCRE
xslonikx
Сообщения: 2
Зарегистрирован: 11 апр 2017, 11:57

Я после того как написал, так и сделал, и оно заработало

[slonik@gw-k12] <SAFE> ip firewall nat print
0 chain=srcnat action=accept src-address-list=!grey_nets out-interface=ether1_uplink log=yes log-prefix="test test test:::::"

1 chain=srcnat action=src-nat to-addresses=85.143.152.66 src-address-list=grey_nets out-interface=ether1_uplink log=no log-prefix="NAT"

Т.е.
-- сперва указано что натить не надо - те. акцептить всё кроме серых сетей
Accept - если верить официальным докам - значит принять пакет и прекратить его обработку в цепочке NAT.
То есть по идее всё, что акцептится нулевым правилом, до первого правила не доходит. Впринципе это правило даже необязательно.

-- А далее правило натить всё что в списке серых сетей (а там просто три больших диапазона указаны).

НО!
Очень веское уточнение по проблеме - в сеть добавили еще один бордер с целью переезда на него bgp.

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

Правила выглядят ровно так как выше написано.


Аватара пользователя
Vlad-2
Модератор
Сообщения: 2531
Зарегистрирован: 08 апр 2016, 19:19
Откуда: Петропавловск-Камчатский (п-ов Камчатка)
Контактная информация:

Увы, с BGP не работал.
Ну а так, что я пробовал, я то и описал, а дальше...
только вам известно что там дальше и почему так происходит :)



На работе(ах): 2xCCR1016-12G, RB3011UiAS и hAP lite (RB941)
Дома: CCR1016-12G, RBcAP2n (standalone), RB wAP LTE kit
Для тестов(под рукой): RB3011UiAS, hAP mini (RB931) и что-то ещё по мелочи
MTCNA
MTCRE
Hazyman
Сообщения: 26
Зарегистрирован: 21 фев 2017, 22:22

Mangle Вам в помощь. Маркируйте пакеты от разных ISP, потом подставляйте их в роут-таблицы.
Должно заработать правильно!

Но те строки, которые Вы написали выше в таблице NAT все равно необходимо оставить


Ответить