Ещё одним механизмом, позволяющим поддерживать сетевую безопасность, является технология NAT.
NAT (Network Address Translation – преобразование сетевых адресов) – это механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса транзитных пакетов. Механизм NAT описан в RFC 1631, RFC 3022.
Преобразование адресов методом NAT может производиться почти любым маршрутизирующим устройством – Интернет-маршрутизатором, сервером доступа, межсетевым экраном. Наиболее популярным является Source NAT (SNAT), суть механизма которого состоит в замене адреса источника (source) при прохождении пакета в одну сторону и обратной замене адреса назначения (destination) в ответном пакете. Наряду с адресами источника/назначения могут также заменяться номера портов источника и назначения.
Помимо SNAT, т.е. предоставления пользователям локальной сети с внутренними адресами доступа к сети Интернет, часто применяется также Destination NAT, когда обращения извне транслируются межсетевым экраном на сервер в локальной сети, имеющий внутренний адрес и потому недоступный из внешней сети непосредственно (без NAT).
На рисунках ниже приведен пример действия механизма NAT.
Пользователь корпоративной сети отправляет запрос в Интернет, который поступает на внутренний интерфейс маршрутизатора, сервер доступа или межсетевого экрана (устройство NAT).
Устройство NAT получает пакет и делает запись в таблице отслеживания соединений, которая управляет преобразованием адресов.
Затем подменяет адрес источника пакета собственным внешним общедоступным IP-адресом и посылает пакет по месту назначения в Интернет.
Узел назначения получает пакет и передает ответ обратно устройству NAT.
Устройство NAT, в свою очередь, получив этот пакет, отыскивает отправителя исходного пакета в таблице отслеживания соединений, заменяет IP-адрес назначения на соответствующий частный IP-адрес и передает пакет на исходный компьютер. Поскольку устройство NAT посылает пакеты от имени всех внутренних компьютеров, оно изменяет исходный сетевой порт и данная информация хранится в таблице отслеживания соединений.
Существует 3 базовых концепции трансляции адресов:
Статический NAT отображает локальные IP-адреса на конкретные публичные адреса на основании один к одному. Применяется, когда локальный хост должен быть доступен извне с использованием фиксированных адресов.
Динамический NAT отображает набор частных адресов на некое множество публичных IP-адресов. Если число локальных хостов не превышает число имеющихся публичных адресов, каждому локальному адресу будет гарантироваться соответствие публичного адреса. В противном случае, число хостов, которые могут одновременно получить доступ во внешние сети, будет ограничено количеством публичных адресов.
Маскарадный NAT (NAPT, NAT Overload, PAT, маскарадинг) – форма динамического NAT, который отображает несколько частных адресов в единственный публичный IP-адрес, используя различные порты. Известен также как PAT (Port Address Translation).
Механизмов взаимодействия внутренней локальной сети с внешней общедоступной сетью может быть несколько – это зависит от конкретной задачи по обеспечению доступа во внешнюю сеть и обратно и прописывается определенными правилами. Определены 4 типа трансляции сетевых адресов:
В первых трех типах NAT для взаимодействия разных IP-адресов внешней сети с адресами из локальной сети используется один и тот же внешний порт. Четвертый тип – симметричный – для каждого адреса и порта использует отдельный внешний порт.
При использовании NAT, работающему по типу Full Cone, внешний порт устройства (маршрутизатора, сервера доступа, межсетевого экрана) открыт для приходящих с любых адресов запросов. Если пользователю из Интернета нужно отправить пакет клиенту, расположенному за NAT’ом, то ему необходимо знать только внешний порт устройства, через который установлено соединение. Например, компьютер за NAT’ом с IP-адресом 192.168.0.4 посылает и получает пакеты через порт 8000, которые отображаются на внешний IP-адрес и порт, как 10.1.1.1:12345. Пакеты из внешней сети приходят на устройство с IP-адресом:портом 10.1.1.1:12345 и далее отправляются на клиентский компьютер 192.168.0.4:8000.
Во входящих пакетах проверяется только транспортный протокол; адрес и порт назначения, адрес и порт источника значения не имеют.
При использовании NAT, работающему по типу Restricted Cone, внешний порт устройства (маршрутизатора, сервера доступа, межсетевого экрана) открыт для любого пакета, посланного с клиентского компьютера, в нашем примере: 192.168.0.4:8000. А пакет, пришедший из внешней сети (например, от компьютера 172.16.0.5:4000) на устройство с адресом:портом 10.1.1.1:12345, будет отправлен на компьютер 192.168.0.4:8000 только в том случае, если 192.168.0.4:8000 предварительно посылал запрос на IP-адрес внешнего хоста ( в нашем случае – на компьютер 172.16.0.5:4000). То есть, маршрутизатор будет транслировать входящие пакеты только с определенного адреса источника (в нашем случае компьютер 172.16.0.5:4000), но номер порта источника при этом может быть любым. В противном случае, NAT блокирует пакеты, пришедшие с хостов, на которые 192.168.0.4:8000 не отправлял запроса.
Механизм NAT Port Restricted Cone почти аналогичен механизму NAT Restricted Cone. Только в данном случае NAT блокирует все пакеты, пришедшие с хостов, на которые клиентский компьютер 192.168.0.4:8000 не отправлял запроса по какому-либо IP-адресу и порту. Mаршрутизатор обращает внимание на соответствие номера порта источника и не обращает внимания на адрес источника. В нашем примере маршрутизатор будет транслировать входящие пакеты с любым адресом источника, но порт источника при этом должен быть 4000. Если клиент отправил запросы во внешнюю сеть к нескольким IP-адресам и портам, то они смогут посылать пакеты клиенту на IP-адрес:порт 10.1.1.1:12345.
Symmetric NAT существенно отличается от первых трех механизмов способом отображения внутреннего IP-адреса:порта на внешний адрес:порт. Это отображение зависит от IP-адреса:порта компьютера, которому предназначен посланный запрос. Например, если клиентский компьютер 192.168.0.4:8000 посылает запрос компьютеру №1 (172.16.0.5:4000), то он может быть отображен как 10.1.1.1:12345, в тоже время, если он посылает с того же самого порта (192.168.0.4:8000) на другой IP-адрес, он отображается по-другому (10.1.1.1:12346).
Компьютер №1 (172.16.0.5:4000) может отправить пакет только на 10.1.1.1:12345, а компьютер №2 (169.10.2.8:6000) – только на 10.1.1.1:12346. Если любой из них попытается отправить пакеты на порт, с которого он не получал запроса, NAT заблокирует данные пакеты.
Внешний IP-адрес:порт открыт только тогда, когда клиентский компьютер отправляет данные во внешнюю сеть по определенному адресу:порту.
NAT выполняет три важных функции.
Однако следует упомянуть и о недостатках данной технологии: