Сперва опишу задачу, которая стоит.
Есть два устройства - бордер, на котором запущен 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.