Masquerade на MikroTik: как выпустить сеть в интернет и чем он отличается от src-nat

15 минут чтенияАвтор: Евгений Коржиков, сертифицированный тренер MikroTik
Masquerade на MikroTik: как выпустить сеть в интернет и чем он отличается от src-nat

Как выпустить локальную сеть в интернет через MikroTik: одно правило masquerade, проверка «до и после», отличие от src-nat и честный ответ на вопрос, защищает ли NAT вашу сеть. Все шаги показаны в WinBox, команды для терминала приведены рядом.

Нет роутера под рукой? На открытом уроке стенд уже включён и ждёт вас. Подробнее ↓

Что такое NAT и masquerade

Внутри сети используются частные адреса вроде 192.168.88.10. В интернете их не маршрутизируют: сервер получит такой пакет, но ответить на него некуда. NAT (Network Address Translation) решает это на границе: роутер подменяет адрес отправителя на свой внешний, а ответы возвращает обратно нужному устройству. Благодаря этому за одним публичным адресом работают десятки компьютеров.

Masquerade (маскарадинг) — разновидность source NAT, в которой роутер берёт адрес с исходящего интерфейса автоматически. Он нужен там, где провайдер выдаёт адрес динамически: по DHCP, PPPoE или в LTE. Алгоритм такой:

  1. Компьютер 192.168.88.10 отправляет пакет на внешний сервер.
  2. Роутер подставляет вместо адреса отправителя адрес своего внешнего интерфейса, например 203.0.113.12.
  3. Запись о соединении сохраняется в таблице connection tracking.
  4. Ответ приходит на 203.0.113.12; роутер находит запись и возвращает пакет компьютеру.
Схема masquerade: компьютер 192.168.88.254 отправляет пакет, роутер подменяет адрес отправителя на свой внешний адрес 203.0.113.x, сервер отвечает на внешний адрес, роутер по таблице соединений возвращает ответ компьютеру

Правило masquerade работает только в цепочке srcnat, то есть с пакетами, которые уходят из локальной сети. Адрес берётся с интерфейса в момент нового соединения, поэтому, когда провайдер выдаст другой адрес, переписывать правило не нужно.

Что понадобится

  • Роутер MikroTik, подключённый по WinBox. Если вы ещё не подключались, начните со статьи «WinBox: первое подключение к MikroTik за 10 минут».
  • Локальная сеть с адресом на bridge и работающей раздачей адресов. Как её настроить, рассказано в статье «DHCP-сервер на MikroTik».
  • Провайдер: внешний порт роутера (в статье это ether2) получает адрес и маршрут по умолчанию, например по DHCP. Локальные порты в примере в bridge, сеть 192.168.88.0/24.
Важно. Masquerade нужен не всегда. Если провайдер маршрутизирует вашу подсеть к вам сам, NAT не требуется. В остальных случаях, а это почти любой дом и офис, без него устройства сети интернета не получат.

Команды в статье проверены на RouterOS 7.22 и 6.49. Где версии различаются, это сказано в тексте.

Шаг 1. Проверьте внешний адрес и маршрут

Прежде чем настраивать NAT, убедитесь, что у самого роутера есть внешний адрес и маршрут по умолчанию. Если их нет, виноват не NAT. Откройте IP → DHCP Client: у внешнего интерфейса должен быть статус bound и адрес от провайдера. Затем откройте IP → Routes: ищите маршрут 0.0.0.0/0 через шлюз провайдера.

Как это выглядит в WinBox 3 (Windows)

То же в терминале:

/ip dhcp-client print
/ip address print
/ip route print

Если адрес выдан провайдером вручную (статический), добавьте его через /ip address и маршрут через /ip route add gateway=….

Шаг 2. Убедитесь, что без NAT интернета нет

Важно увидеть проблему своими глазами. С компьютера в локальной сети выполните ping 8.8.8.8. Пинга нет, хотя сам роутер интернет видит.

Причина видна на стороне провайдера. Его консоль показывает, что запросы приходят с адресов 192.168.88.x, а ответить на них провайдеру некуда: маршрута в вашу частную сеть у него нет. Так выглядит запуск перехвата пакетов ICMP на его роутере (для самостоятельной проверки на своём оборудовании):

/tool sniffer quick ip-protocol=icmp
Как это выглядит в WinBox 3 (Windows)

Это и есть задача NAT: подменить частный адрес отправителя на адрес, который провайдер умеет маршрутизировать.

Шаг 3. Создайте правило masquerade

Откройте IP → Firewall и вкладку NAT. Нажмите «+» и заполните:

  1. На вкладке General: Chain — srcnat, Out. Interface — внешний интерфейс (ether2).
  2. На вкладке Action: Action — masquerade.
  3. Нажмите OK. Правило появится в списке.
Как это выглядит в WinBox 3 (Windows)

То же командой:

/ip firewall nat add chain=srcnat out-interface=ether2 action=masquerade comment="Masquerade to ISP"

Если внешний интерфейс может смениться (сегодня ether2, завтра pppoe-out1), укажите вместо интерфейса список интерфейсов. Сначала создайте список WAN и добавьте в него внешний порт:

/interface list add name=WAN
/interface list member add list=WAN interface=ether2
/ip firewall nat add chain=srcnat out-interface-list=WAN action=masquerade comment="Masquerade to ISP"

Чтобы правило касалось только вашей сети, добавьте src-address=192.168.88.0/24. Условия в правиле объединяются через «И»: пакет должен подойти под все.

Совет. Не создавайте на одном роутере по правилу masquerade на каждый интерфейс «на всякий случай». Одно правило с out-interface-list проще читать, и оно не зависит от имён портов.

Шаг 4. Проверьте результат

Повторите ping 8.8.8.8 с компьютера. Теперь ответы идут. Проверим, что это работа именно вашего правила.

  1. Адрес на стороне провайдера. Запросы теперь приходят не с 192.168.88.x, а с внешнего адреса роутера (203.0.113.x).
  2. Счётчики правила. В WinBox они видны в списке NAT (колонки Bytes и Packets). В терминале:
    /ip firewall nat print stats
  3. Таблица соединений. В WinBox: IP → Firewall → Connections. У соединения из локальной сети в списке флаг s (srcnat).
Как это выглядит в WinBox 3 (Windows)

Те же проверки в терминале. Таблицу соединений удобно фильтровать по адресу клиента:

/ip firewall connection print detail where src-address~"192.168.88."

В выводе два адреса одного соединения: src-address (настоящий адрес клиента) и reply-dst-address (адрес роутера, на который отвечает сервер). Различие между ними и есть результат NAT. Ещё две подробности:

  • Счётчик правила растёт на каждое новое соединение, а не на каждый пакет. Правила NAT проверяются только для первого пакета соединения, остальные идут по записи в таблице. Пинг из трёх пакетов даст packets=1. Это нормально.
  • Короткие соединения, например ICMP, живут в таблице секунды (по умолчанию 10 с). Если print пуст, повторите пинг и сразу выведите таблицу.

Если нужно увидеть наглядно, что локальные адреса не уходят к провайдеру, запустите torch на внешнем интерфейсе (в WinBox это Tools → Torch) и параллельно проверьте доступ с компьютера:

/tool torch interface=ether2 src-address=192.168.88.0/24 duration=10s

Пустая таблица означает, что с адресов 192.168.88.x наружу ничего не уходит: все пакеты уже подменены. Для сравнения замените фильтр на src-address=203.0.113.0/24 (ваш внешний адрес), и строки появятся.

Таблицу соединений можно очистить, если нужно проверить правило «с нуля»:

/ip firewall connection remove [find]

Masquerade и src-nat: в чём разница

src-nat делает то же самое, но подставляет адрес, который вы указали сами. masquerade берёт адрес исходящего интерфейса автоматически.

masqueradesrc-nat
Адрес подстановкиадрес исходящего интерфейсавы задаёте в to-addresses
Когда выбиратьдинамический адрес: DHCP, PPPoE, LTEстатический адрес или несколько адресов
Смена адреса провайдеромправило не нужно менятьправило нужно изменить
Подстановка из диапазонанетда, можно указать диапазон адресов

Общее правило простое. Динамический адрес от провайдера — masquerade. Фиксированный адрес или набор адресов — src-nat: вы точно знаете, с какого адреса уходит трафик. Допустим, провайдер выдал статический адрес 203.0.113.5 (адрес из документационной подсети, подставьте свой):

Как это выглядит в WinBox 3 (Windows)
/ip firewall nat add chain=srcnat out-interface=ether2 action=src-nat to-addresses=203.0.113.5 comment="Source NAT"

Правила NAT, как и правила firewall, читаются сверху вниз, и срабатывает первое подходящее. Поэтому не создавайте оба правила для одного и того же трафика: второе останется без дела. Если нужны исключения (например, для одной сети другой адрес), конкретное правило ставят выше общего. В терминале это place-before=0, в WinBox правило перетаскивают мышью.

И ещё одна деталь: masquerade допустим только в цепочке srcnat. Попытка создать его в dstnat закончится ошибкой, правило не сохранится.

NAT — не защита сети

Masquerade скрывает от внешних узлов внутреннюю адресацию: сайт видит публичный адрес роутера, а не 192.168.88.10, и не знает, сколько устройств за ним стоит. Но безопасностью это не является:

  • Входящие соединения блокирует не NAT. Снаружи нельзя подключиться к компьютеру, потому что нет записи в таблице соединений, а не потому что он «спрятан». Любой проброс порта (dst-nat) открывает устройство.
  • Устройство ничем не защищено. Если пользователь откроет вредоносный файл, программа сама установит исходящее соединение, и masquerade его спокойно пропустит.
  • Сам роутер виден из интернета. Если на внешнем интерфейсе открыты WinBox, SSH или веб-интерфейс, их можно атаковать.
  • UPnP может открывать порты автоматически по просьбе программ в вашей сети.

Корректная формулировка: masquerade даёт экономию адресов и побочный эффект в виде закрытости входящих соединений. Защищает сеть firewall.

Начните с проверки, что лишнее не торчит наружу:

/ip service print
/ip upnp print
/ip firewall filter print

Ненужные службы и UPnP отключаются так:

/ip service disable telnet,ftp
/ip upnp set enabled=no

В конфигурации RouterOS по умолчанию правила firewall уже есть, и сбрасывать их без нужды не стоит. Настройку цепочек input и forward безопасно строить только из локальной сети, а не через внешний порт, и сначала сохранив резервную копию: правила читаются сверху вниз, и одно неверное правило отрежет вам доступ к роутеру. Полноценный firewall разбирается на курсе MTCNA.

Не работает: разбор проблем

СимптомПричинаЧто сделать
С компьютера нет интернета, а с роутера пинг идётНет правила masquerade, оно выключено или стоит ниже другого правила, которое срабатывает раньшеПроверьте /ip firewall nat print: правило включено, стоит в srcnat и выше остальных
Правило есть, но счётчики равны нулюНеверный интерфейс или условие: пакеты не подходят под правилоПроверьте out-interface или список WAN, при PPPoE это pppoe-out1, а не порт
Правило с in-interfaceПравило принимается, но совпадёт только с трафиком, пришедшим с внешнего порта, а не из локальной сетиДля выхода в интернет нужен out-interface
Ping 8.8.8.8 идёт, а сайты по имени не открываютсяПроблема в DNS, а не в NATПроверьте /ip dns print и выданные клиентам DNS-серверы
Нет ни пинга, ни интернета у самого роутераНет маршрута по умолчанию или внешнего адресаВернитесь к шагу 1: DHCP Client и Routes
Проброс портов снаружи не работает при работающем masqueradeУ провайдера «серый» адрес (часто из 100.64.0.0/10) или он сам делает NATСравните /ip address print с адресом, который показывает сервис определения IP

Пример: правило на не тот интерфейс

Самая частая ошибка в реальной сети: правило создано, но стоит на другом интерфейсе. На кадрах правило указано на bridge (внутренний интерфейс) вместо внешнего порта: правило есть, а пинг снова не идёт.

Как это выглядит в WinBox 3 (Windows)

Признак — счётчики правила стоят на нуле. Исправьте интерфейс на внешний порт или на список WAN.

Частые вопросы

Что выбрать, если адрес динамический, но редко меняется? Всё равно masquerade: когда адрес поменяется, правило подхватит новый, а вам не придётся вмешиваться.

Сбросит ли masquerade соединения при смене адреса? Не обязательно. В нашей проверке на RouterOS 7.22 и 6.49 при смене или удалении адреса на живом интерфейсе записи оставались в таблице до таймаута, при отключении интерфейса пропадали сразу. Но ответы на старые соединения всё равно идут на прежний адрес, поэтому программы переподключаются. Чтобы не ждать, очистите таблицу: /ip firewall connection remove [find].

Можно ли использовать masquerade между подсетями внутри сети? Технически можно, но обычно маршрутизируют без подмены: так в логах и на серверах видны настоящие адреса.

Нужен ли masquerade, если у меня несколько внешних каналов? Да, и правило с out-interface-list=WAN удобно: оно подходит к любому каналу из списка. Маршрутизация между каналами настраивается отдельно.

Заменяет ли masquerade VPN? Нет. VPN шифрует трафик и создаёт защищённый канал, а masquerade только меняет адрес отправителя. Если нужен доступ к сети из дома или с телефона, посмотрите статью про WireGuard.

Открытый урок · бесплатно

Выпустите сеть в интернет руками на живом стенде

Свой роутер не нужен. На каждом открытом уроке стенды уже прогреты: RouterOS загружена, доступ выдан. Вы видите, как пинг не проходит без NAT, создаёте правило masquerade, проверяете его по счётчикам и таблице соединений, а тренер отвечает на вопросы по ходу.

Стенд онлайн

Подключение за пару минут

Практика

Шаги 2–4 из этой статьи

Тренер рядом

Разбор ваших вопросов вживую

Ближайший урок: [ДАТА И ВРЕМЯ УРОКА]

Читайте также