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

NAT. Часть 1.

Введение

В 1981 году был принят протокол IPv4, который основывался на 32-битной адресации и мог адресовать чуть более 4 млрд. адресов (2^32 степени). В то время все были уверены, что этого хватит навсегда.

Однако развитие сети и количество подключенных к ней устройств превысило самые смелые прогнозы, и как следствие, сначала возник дефицит адресов, а затем они и вовсе закончились. По крайней мере в Европе это событие произошло 17 сентября 2012 года. В этот день Европейская IP-регистратура RIPE NCC (Réseaux IP Européens Network Coordination Centre) сообщила о том, что последний блок IPv4-адресов был распределен на прошлой неделе.

Однако есть три диапазона адресов называемых «частными». Так же можно встретить наименования «серые» и «приватные». Эти адреса не маршрутизируются в сети Интернет и позволяют использовать их любому человеку. Вот эти адреса:

  • 10.0.0.0/8
  • 172.16-31.0.0/16
  • 192.168.0-255.0/24

Понятно, что эти адреса могут многократно дублироваться и у вашего соседа может быть тот же диапазон адресов что и у вас. Однако, для работы в Интернет эти адреса необходимо преобразовать в публичные адреса выданные вам оператором связи. Так же иногда требуется обеспечить «видимость» сервера находящегося в таком диапазоне адресов снаружи.

И то и другое обеспечивается технологией трансляции адресов (Network Address Translation), а сокращенно NAT.

Как вы знаете в заголовке IP-пакета содержится следующая информация:

  1. Адрес и порт источника (source address и source port);
  2. Адрес и порт назначения (destination Address и destination port).

В маршрутизаторе для трансляции адресов предусмотрено две цепочки:

  1. src-nat (меняет адрес и, возможно порт источника);
  2. dst-nat (меняет адрес и, возможно порт назначения).

Пакет при обработке маршрутизатором сначала попадает в цепочку dst-nat, а затем после обработки фильтром пакетов и принятия решения об маршрутизации попадает в цепочку src-nat.

Вот диаграмма обработки трафика маршрутизатором,из которой видно, что пакет, прийдя на маршрутизатор, сначала попадает в цепочку prerouting, одним из этапов которой является Destination NAT, а после прохождения всех основных этапов обработки, попадает в цепочку postrouting, где выполняется этап Source NAT.

Из этого следует два важных вывода:

  1. Адрес и порт назначения пакета будут изменены в цепочке dst-nat до поступления в цепочки input или forward. А это значит, что в файрволле надо писать правила с учетом уже преобразованного адреса назначения пакета (т. е. если у вас внутри сети есть терминальный сервер с адресом 192.168.0.15 и портом 3389, то именно этот адрес и порт надо использовать в файрволле, не глядя на то, что снаружи у вас указан другой адрес и порт);
  2. Один и тот же пакет может быть обработан сначала в dst-nat, а затем в src-nat.

Так же нужно учитывать, что правилом NAT обрабатывается только первый пакет соединения. Далее этим занимается Connection Tracker.

Вся настройка NAT производится в меню /IP firewall nat. Работаю те же правила выбора пакета, обозначенные в этой статье с некоторыми исключениями. А именно:

  • В цепочке dst-nat недоступен выбор out-interface. Так как цепочка отрабатывает до принятия решения о маршрутизации и машрутизатор еще не определил этот интерфейс.
  • В цепочке src-nat недоступен выбор in-interface. Причины аналогичны.
  • Не будут корректно работать правила связанные с количесвтовом пакетов или объемом трафика, т. к. обрабатывается только первый пакет соединения.

Закладка Action отличается.

Accept

Не обрабатывать пакет. Обработка пакета не будет производится. Нужно для исключения обработки части пакетов. Например при настройке IPSec.

Add dst to address list

Добавляет адрес назначения пакета в именованный список адресов с именем Adress List на определенное время (поле timeout).

Dst-nat

Заменяет адрес назначения пакета значением из поля to addresses и опционально порт, значением из поля to ports. Работает только в цепочке dstnat и производных от нее.

Jump

Перейти на собственную цепочку (chain) обработки пакетов.

Опция – наименование цепочки. Пример работы с этой опцией можно найти здесь.

Log

Занести информацию о пакете в Log-файл маршрутизатора. При этом пакет будет передан на следующее правило. Данная опция часто используется при отладке.

Masquerade

Частный случай Action=src-nat. Адрес отправителя пакета будет заменен на первый адрес out-interface. Испольуется только совместно в цепочке srcnat

Netmap

Используется при 1:1 NAT. То есть когда все пакеты идущие на сеть 1.1.1.0/24 должны быть преобразованы к 2.2.2.0/24 и наоборот. Используется как в цепочке srcnat, так и dstnat

Passthrough

Ничего не делать. Передать пакет на следующее правило. Однако при этом счетчики работают, показывая сколько пакетов соответствовало этому правилу. Обычно используется для статистики.

Redirect

Частный случай dst-nat. В качестве адреса назначения используется сам маршрутизатор.

Return

Досрочно прервать обработку собственной цепочки (chain) и вернуться на следующее правило за правилом с Action=jump, которое передало пакет в эту цепочку.

Same

Частный случай src-nat Используется при наличии нескольких адресов для преобразования трафика. (Например у вас есть несколько внешний IP)

Src-nat

Заменяет адрес отправителя пакета значением из поля to addresses и опционально порт, значением из поля to ports. Работает только в цепочке srcnat и производных от нее.

В этой статье мы рассмотрели особенности функционирования NAT. В следующей части статьи будут рассмотрены наиболее типичные конфигурации.

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

Другие статьи цикла:

15139
Комментарии (1)

Дмитрий18.12.2015

Спасибо за статью. Очень интересно.
Опечатка))
"Не будут корректно работать правила связанные с количесвтовом пакетов или объемом трафика, т. к. обрабатывается только первый пакет соединения."

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