Сравнение Закладки
Бесплатно по России:
8 800 700 97 66
Санкт-Петербург:
8 812 385 40 55
Перезвонить вам?

NAT. Часть 3

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

Итак, провайдер предоставил вам несколько WAN-адресов. И у вас возникает вопрос, как их правильно использовать.

Предположим, провайдер выдал вам адреса:

  • 1.1.1.1/24 и 1.1.1.2/24

Оба этих адреса вы назначили на интерфейс WAN. Кроме того, у вас есть локальные подсети 192.168.0.0/24 и 192.168.1.0/24, расположенные на интерфейсах LAN и DMZ.

1. Source NAT

Если вам просто хочется использовать оба внешних адреса для выхода из вашей локальной сети в Интернет.

Понятно, что Action=masquerade, в этом случае нам не очень подходит, потому что она автоматически будет использовать только один из адресов, назначенный интерфейсу.

Вместо этого воспользуемся Action=same

Правило будет выглядеть следующим образом:

  • /ip firewall nat add action=same chain=srcnat out-interface=WAN to-addresses=1.1.1.1-1.1.1.2

То есть маршрутизатор будет сначала использовать свободные порты для адреса 1.1.1.1, а когда они закончатся, начнет использовать свободные порты адреса 1.1.1.2

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

Теперь рассмотрим более сложный случай. Мы хотим, чтобы компьютеры из локальной сети выходили в интернет с адреса 1.1.1.1, а компьютеры из DMZ — с адреса 1.1.1.2

Для этого нам придется написать 2 правила NAT:

  • /ip firewall nat
    add action=src-nat chain=srcnat out-interface=WAN src-address=192.168.0.0/24 \
    to-addresses=1.1.1.1
    add action=src-nat chain=srcnat out-interface=WAN src-address=192.168.1.0/24 \
    to-addresses=1.1.1.2

2. Destination NAT

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

Например, вы решили опубликовать WWW-сервер, имеющий внутренний адрес 192.168.1.2

Если вы создадите правило:

  • /ip firewall nat
    add action=dst-nat chain=dstnat dst-port=80 in-interface=WAN protocol=tcp \
    to-addresses=192.168.1.2

— то независимо, на какой из внешних адресов поступит обращение на 80 порт, он будет обработан вашим www-сервером.

Теперь предположим, что у вас есть еще один www-сервер, имеющий внутренний адрес 192.168.1.3

И вы хотите опубликовать сервера следующим образом:

Сервер 192.168.1.2 должен быть опубликован на внешнем адресе 1.1.1.1

Сервер 192.168.1.3 должен быть опубликован на внешнем адресе 1.1.1.2

Тогда правила примут следующий вид:

  • /ip firewall nat
    add action=dst-nat chain=dstnat dst-address=1.1.1.1 dst-port=80 protocol=tcp \
    to-addresses=192.168.1.2
    add action=dst-nat chain=dstnat dst-address=1.1.1.2 dst-port=80 protocol=tcp \
    to-addresses=192.168.1.3

Обратите внимание, что вам необходимо корректно указывать в правиле dst-nat или входящий интерфейс (in-interface) или адрес назначения (dst-address) или и то, и другое.

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

  • /ip firewall nat add action=dst-nat chain=dstnat dst-port=80 protocol=tcp to-addresses=192.168.1.2

приведет к тому, что при обращении любого компьютера вашей локальной сети на 80 порт любого сервера в Интернет он будет перенаправлен на ваш www-сервер.

Еще более нежелательный результат можно получить, если забыть указать интерфейс в правиле Source NAT с Action=masquerade.

Это приведет к тому, что все пакеты будут иметь адрес источника, равный адресу интерфейса маршрутизатора, через который вышел пакет. И если у вас есть в сети, например, почтовый сервер, который вы опубликовали в Интернет, и на котором разрешен релей для адресов локальной сети, то вы получите Open Relay, всего лишь ошибившись в src-nat.

Пример такой некорректной конфигурации, для SMTP-сервера 192.168.1.4:

  • /ip firewall nat
    add action=dst-nat chain=dstnat dst-port=25 in-interface=WAN protocol=tcp to-addresses=\ 192.168.1.4
    add action=masquerade chain=srcnat

В этом примере, если маршрутизатор имеет адрес 192.168.1.1, то SMTP сервер будет воспринимать все внешние подключения как выполненные с адреса 192.168.1.1 и обрабатывать их как локальные. Что грозит вам попаданием в Spam-листы.

А если подобным образом ошибиться при публикации IP-PBX, то вы можете получить очень удивительный счет за международные переговоры. Прецеденты были.

Поэтому, при работе с NAT нужно быть крайне внимательным.

Технический директор Илья Князев (тренер Mikrotik, MTCNA, MTCWE, MTCTCE)

Первая часть настройки NAT

Вторая часть настройки NAT

Четвертая часть настройки NAT

Пятая часть настройки NAT

 
9366
Комментарии (2)

Дмитрий Шаля12.06.2015

Слегка дурацкий вопрос...
А можно организовать балансировку нагрузки (два провайдера) на NAT'е?
Делал это через mangle, но маршрутизатор очень загружается (проц, память) от прероутинга, маркировки и т.п.
Может быть находили решение?

ответить
Сменить картинку

Илья Князев20.06.2015

На NAT то что вы хотите не делается. Можете попробовать использовать PCQ.

ответить
Сменить картинку
Комментировать
Сменить картинку
все события