Работа с NAT на маршрутизаторах Mikrotik
Общие моменты
Пример стандартной настройки
Частные случаи и ошибки
Netmap и с чем его едят
Hairpin NAT что за зверь?
Для понимания удобнее привести живой пример настройки NAT. Давайте так и сделаем. Сначала вводные данные:
Первая часть нашего технического задания реализуется следующей командой:
Суть правила в том, что пакеты с исходящим интерфейсом WAN будут подвергнуты изменению Destination address с оригинального на первый адрес WAN-интерфейса с динамическим выбором порта. Правило универсально еще и тем, если адрес на WAN-Интерфейсе имеет свойство меняться.
Едем дальше. Вторым актом нам нужно опубликовать сервер для доступа к нему извне. С этим нам поможет цепочка dst-nat:
Внешний адрес у нас один, поэтому для однозначной идентификации пакета нам нужно знать только порт, протокол и интерфейс, с которого он пришел.
Третье задание чуть сложнее, и решается так:
Давайте разбираться. В коде добавилось поле to-ports, которое дополнительно к адресу говорит маршрутизатору, что требуется поменять порт назначения.
Задача четвертая еще сложнее, ведь теперь нам с вами нужно опубликовать целый диапазон портов! Но решение просто как всё гениальное:
Так публикуются диапазоны портов.
Что у нас там пятым пунктом? Нужно обязать всех пользоваться DNS-сервером маршрутизатора.
Самой частой ошибкой при настройке правил NAT является то, что не указывается адрес или интерфейс с которого пакет приходит. Это в случае dst-nat. И если не указывать адрес/интерфейс с которого пакет уходит, когда мы настраиваем цепочку src-nat.
Давайте, например, выпилим интерфейс из правила маскарада в первом примере.
В итоге адрес отправителя любого пакета будет меняться на адрес маршрутизатора.
Также потенциально может привести к ошибкам использование NAT для фильтрации трафика наравне с правилами Filters.
Допустим, хотим мы, чтобы веб-сервер из второй задачки был доступен только с адреса 172.17.20.31, для чего мы закономерно создаем следующее правило:
И вроде бы всё реализовано корректно, правило будет работать. Только в сложных конфигурациях вам сложно будет учитывать все правила разом - и во вкладке Filters и в NAT. И еще раз хочу напомнить, что правило NAT обрабатывает только первый пакет соединения.
Как-то так. Дальше познакомимся с более узкоспециализированными моментами и косяками.
Общие моменты
Пример стандартной настройки
Частные случаи и ошибки
Netmap и с чем его едят
Hairpin NAT что за зверь?
Пример стандартной настройки
Частные случаи и ошибки
Netmap и с чем его едят
Hairpin NAT что за зверь?
Для понимания удобнее привести живой пример настройки NAT. Давайте так и сделаем. Сначала вводные данные:
- WAN IP - 172.17.16.33, а в локальную сеть маршрутизатор смотрит с IP 192.168.88.1/24;
- Нужно опубликовать сервер с IP 192.168.88.2 и портом TCP80. Короче говоря, сделать его видимым извне;
- Практически также нужно поступить с терминальным сервером 192.168.88.3, т.е. сделать его доступным снаружи, но пробросить порты асимметрично, т.е. снаружи порт будет 53389, а уже на самом сервере - 3386;
- Опубликовать телефонный сервер 192.168.88.4, обменивающийся информацией по протоколу UDP с диапазонами портов 5060-5070 и 10000-20000;
- Безопасности ради порежем сторонние DNS-сервера (если какой-нибудь умник решит прописать нестандартные), т.к. резолвить адреса должен только сам маршрутизатор.
Первая часть нашего технического задания реализуется следующей командой:
/ip firewall nat
add action=masquerade chain=srcnat out-interface=WAN
Суть правила в том, что пакеты с исходящим интерфейсом WAN будут подвергнуты изменению Destination address с оригинального на первый адрес WAN-интерфейса с динамическим выбором порта. Правило универсально еще и тем, если адрес на WAN-Интерфейсе имеет свойство меняться.
Едем дальше. Вторым актом нам нужно опубликовать сервер для доступа к нему извне. С этим нам поможет цепочка dst-nat:
/ip firewall nat
add action=dst-nat chain=dstnat dst-port=80 in-interface=WAN protocol=tcp to-addresses=192.168.88.3
Внешний адрес у нас один, поэтому для однозначной идентификации пакета нам нужно знать только порт, протокол и интерфейс, с которого он пришел.
Третье задание чуть сложнее, и решается так:
/ip firewall nat
add action=dst-nat chain=dstnat dst-port=53389 in-interface=WAN protocol=tcp to-addresses=192.168.88.4 to-ports=3389
Давайте разбираться. В коде добавилось поле to-ports, которое дополнительно к адресу говорит маршрутизатору, что требуется поменять порт назначения.
Задача четвертая еще сложнее, ведь теперь нам с вами нужно опубликовать целый диапазон портов! Но решение просто как всё гениальное:
/ip firewall nat
add action=dst-nat chain=dstnat dst-port=5060-5070,10000-20000 in-interface=WAN protocol=udp to-addresses=192.168.88.5
Так публикуются диапазоны портов.
Что у нас там пятым пунктом? Нужно обязать всех пользоваться DNS-сервером маршрутизатора.
/ip firewall nat
add action=redirect chain=dstnat dst-port=53 in-interface=LAN protocol=udp
Самой частой ошибкой при настройке правил NAT является то, что не указывается адрес или интерфейс с которого пакет приходит. Это в случае dst-nat. И если не указывать адрес/интерфейс с которого пакет уходит, когда мы настраиваем цепочку src-nat.
Давайте, например, выпилим интерфейс из правила маскарада в первом примере.
/ip firewall nat
add action=masquerade chain=srcnat
В итоге адрес отправителя любого пакета будет меняться на адрес маршрутизатора.
Также потенциально может привести к ошибкам использование NAT для фильтрации трафика наравне с правилами Filters.
Допустим, хотим мы, чтобы веб-сервер из второй задачки был доступен только с адреса 172.17.20.31, для чего мы закономерно создаем следующее правило:
/ip firewall nat
add action=dst-nat chain=dstnat dst-port=80 in-interface=WAN protocol=tcp src-address=172.17.20.31 to-addresses=192.168.88.3
И вроде бы всё реализовано корректно, правило будет работать. Только в сложных конфигурациях вам сложно будет учитывать все правила разом - и во вкладке Filters и в NAT. И еще раз хочу напомнить, что правило NAT обрабатывает только первый пакет соединения.
Как-то так. Дальше познакомимся с более узкоспециализированными моментами и косяками.
Общие моменты
Пример стандартной настройки
Частные случаи и ошибки
Netmap и с чем его едят
Hairpin NAT что за зверь?