Содержание

Два сетевых механизма связанных с NAT

<callout type="success">Источник: https://gamelton.com/2016/03/25/nat-related-issues/</callout>

В данном посте пойдет речь про два не связанных напрямую между собой сетевых механизма: Hairpin NAT и Proxy ARP. Стоит заметить, что их использование необходимо только в определенных случаях NAT, далее будет описано подробнее.

Hairpin NAT

Сценарий: веб сервер и клиент находятся за общим NAT. Веб сервер опубликован на внешнем адресе 80.80.80.80 на порту 80. Внутренние IP адреса у клиента и сервера из одной подсети 10.10.10.0/24.

Клиент не может подключиться к веб серверу по внешнему адресу. При этом от других клиентов (с мобильного телефона, из дома и пр.) доступ работает.

Причина:

Адрес источника Адрес получателя
10.10.10.50 80.80.80.80
внутренний адрес клиента внешний адрес сервера
Адрес источника Адрес получателя
10.10.10.50 10.10.10.2
внутренний адрес клиента внутренний адрес сервера
Адрес источника Адрес получателя
10.10.10.2 10.10.10.50

Решение: Для того, чтобы разрешить обмен через внешний адрес сервера между клиентом и сервером, находящимися в одной внутренней подсети, следует применять изменение адресов отправителя (SNAT) и получателя (DNAT) — механизм названный hairpin NAT.

Адрес источника Адрес получателя
10.10.10.50 80.80.80.80
внутренний адрес клиента внешний адрес сервера
Адрес источника Адрес получателя
10.10.10.1 10.10.10.2
внутренний адрес маршрутизатора внутренний адрес сервера
Адрес источника Адрес получателя
10.10.10.2 10.10.10.1
Адрес источника Адрес получателя
80.80.80.80 10.10.10.50

Путем hairpin NAT клиент думает, что разговаривает с публичным интерфейсом веб сервера, а веб сервер думает, что разговаривает с внутренним интерфейсом роутера.

Proxy ARP

Сценарий: для публикации серверов (DNAT) используется целая подсеть 80.80.80.0/24 при этом внешнему интерфейсу маршрутизатора назначен адрес 80.80.80.1.

Клиенты не могут подключиться к веб серверу по внешнему адресу.

Причина:

Адрес источника Адрес получателя
50.50.50.50 80.80.80.80
внешний адрес клиента внешний адрес сервера

Решение: Для того, чтобы ваш маршрутизатор отвечал на ARP запрос необходимо на его внешнем интерфейсе настроить Proxy ARP. В этом случае ваш маршрутизатор будет отвечать на все ARP запросы по IP адресам, которые вы укажите, вне зависимости от адреса самого интерфейса на который, они будут приходить.

Источник 1