Домашний интернет и телефон
ETEL.RU

На практике о Network Address Translation

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

sip nat

Для приватных IP выделено три диапазона адресов:

  1.  10.0.0.0 — 10.255.255.255
  2.  172.16.0.0 — 172.31.255.255
  3.  192.168.0.0 — 192.168.255.255

Реальными — маршрутизируемыми IP адресами являются все другие адреса, которые не попадают в вышеуказанные диапазоны.

В качестве примера используем следующую адресацию:

sip через nat

NAT-шлюз построен на базе операционной системы Linux ядра версии 2.4.20. По умолчанию в ядра Linux включена сетевая подсистема Netfilter обеспечивающая, как фильтрацию проходящих сетевых пакетов, так и трансляцию приватных IP адресов. Netfilter управляется утилитой iptables.

Синтаксис правил следующий:

iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -j SNAT —to-source 85.115.165.18

Данное правило iptables позволяет всем пользователям локальной сети с адресами из диапазона 192.168.0.0/24 получить относительно полный доступ к сети Интернет. В этом случае все пакеты проходящие NAT-шлюз будут проходить обработку, тело пакета в этом случае не изменится, но заголовок в свою очередь будет видоизменен.

sip настройка nat

Приватный IP адрес источника переписывается публичным IP адресом шлюза. Аналогичным маршрутом возвратится и ответный пакет.

cisco sip nat

Данная схема является работоспособной при соблюдении первого правила трансляции:

IP адрес приемника исходящего пакета должен соответствовать IP адресу источника входящего пакета. (исходящий пакет: от пользователя к серверу, входящий пакет от сервера к пользователю)

sip nat

Первое правило трансляции сетевых адресов не соблюдено – приведенная выше схема не работоспособна.

Транспортные протоколы такие, как UDP, TCP в составе своего заголовка содержат порт приемника и порт источника. Сетевой порт может принимать любое значение  из диапазона от 1 до 65535. Назначением портов занимаются клиентские и серверные приложения. Обычно за некоторыми распространенными сетевыми протоколами закреплены стандартные номера портов.

Сервер или сервис Прикладной протокол Транспортный протокол Порт
WEB HTTP TCP 80
FTP FTP TCP 21
SIP SIP UDP или TCP 5060

Существование сетевых портов значительно расширяет возможности, как фильтрации так и трансляции сетевых пакетов. Сетевая подсистема Netfilter умеет достаточно гибко манипулировать сетевыми портами.

Простейшим примером тому может служить нижеследующее правило, организующее доступ пользователей локальной сети лишь к WEB-серверам Интернет.

iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -p tcp –dport 80 -j SNAT —to-source 85.115.165.18

sip nat conf

Данная схема является работоспособной при соблюдении второго правила трансляции правила:

Сетевой порт источника исходящего пакета должен соответствовать сетевому порту приемника входящего пакета.

Возможны отказы при работе NAT в том случае когда сервер или сервис изменяет сетевой порт источника в ответном пакете. (Необходима проверка)

iptables sip nat
Ранее нами были рассмотрены варианты в которых пользователь локальной сети используя приватный IP адрес, являлся инициатором соединения с публичным сервером или сервисом Интернет. Предположим в локальной сети необходимо установить общедоступный WEB-сервер. Топология сети принимает вид:

sip телефония nat
Правило сетевой подсистемы netfilter обеспечивает транспорт до WEB-сервера.

iptables -t nat -A PREROUTING -d 85.115.165.18 -p tcp —dport 80 -j DNAT —to-destination 192.168.0.100:80

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

nat sip
На базе изложенной информации и используя существующую техническую документацию по теме netfilter/iptables появляется возможность строить достаточно интересные сценарии маршрутизации приватных IP адресов.

SIP через NAT

Предположим у организации появилась необходимость в установке нескольких IP-телефонов. Телефоны используют для сигнализации SIP протокол, для мультимедиа RTP протокол. Поставленную задачу нужно решить на базе существующей локальной сети, без внесения каких либо глобальных изменений в действующую топологию, адресное распределение, не нарушая ее прежней функциональности и что немало важно достаточно дешево.

Наша локальная сеть принимает вид:

ip nat service sip udp port 5060
Одной из технически сложных задач в IP-телефонии является прохождение трафика сигнальных и мультимедиа протоколов через NAT-шлюзы. Разберем несколько существующих на данный момент способов преодоления проблемы NAT в SIP. Все эти решения прямо или косвенно будут связаны с использованием netfilter/iptables и попадают под правила трансляции приватных IP адресов.

Для более детального понимания, рассмотрим пару схем, иллюстрирующих движение SIP и RTP трафика:

sip обход nat
Tel-x имеет публичный IP адрес, tel-1 имеет приватный IP адрес.

Телефоны tel-1 и tel-x при включении регистрируются на SIP-сервере и поддерживают с ним периодический обмен.

Tel-1 набирает tel-x либо наоборот tel-x вызывает tel-1, запрос на соединение приходит на SIP-сервер, тот в свою очередь проверяет состояние второй стороны и при благополучном исходе дает добро на установку мультимедийного соединения.

подключение sip телефона через nat

Соединение по протоколу RTP между tel-1 и tel-x может проходить в нескольких режимах. Первый через SIP-сервер, второй напрямую tel-1 с tel-x либо по третьему варианту – комбинированному: tel-1 гонит трафик на SIP-сервер тот в свою очередь (проксирует) перенаправляет на tel-x, tel-x прямым маршрутом отвечает tel-1. Из чего следует, что при использовании в данной конфигурации трансляции адресов, режим номер три автоматически нарушает правила трансляции. Но это не является единственной проблемой. Представим что SIP-сервер имеет не один а десяток IP адресов на одном сетевом интерфейсе. Пакет адресованный на десятый интерфейс будет принят и обработан сервером, а так же будет сформирован ответный пакет но отправлен он будет с первого интерфейса. И снова нарушение правил трансляции.

Как один из вариантов решения данной проблемы – применить технологию переназначения портов. Создадим определенный сценарий для iptables который обеспечит прохождение пакетов сигнализации и мультимедийного трафика от приватного пользователя до SIP-сервера или публичного пользователя и гарантирует прием ответов приватной стороной.

Обязательное условие — фиксированный исходящий SIP и RTP порт на устройстве абонента. Установим нижеследующие настройки в аппаратах:

tel-1:
IP Address: 192.168.0.30
Subnet Mask: 255.255.255.0
Default Router: 192.168.0.1
SIP Server: ip.sip.server
local SIP port: 5060
local RTP port: 10000

tel-2:
IP Address: 192.168.0.31
Subnet Mask: 255.255.255.0
Default Router: 192.168.0.1
SIP Server: ip.sip.server
local SIP port: 5062
local RTP port: 10002

tel-3:
IP Address: 192.168.0.32
Subnet Mask: 255.255.255.0
Default Router: 192.168.0.1
SIP Server: ip.sip.server
local SIP port: 5064
local RTP port: 10004

Добавим к существующим правилам следующие:

iptables -t nat -A PREROUTING -d 85.115.165.18 -p udp —dport 5060 -j DNAT —to-destination 192.168.0.30
iptables -t nat -A PREROUTING -d 85.115.165.18 -p udp —dport 5062 -j DNAT —to-destination 192.168.0.31
iptables -t nat -A PREROUTING -d 85.115.165.18 -p udp —dport 5064 -j DNAT —to-destination 192.168.0.32
iptables -t nat -A PREROUTING -d 85.115.165.18 -p udp —dport 10000 -j DNAT —to-destination 192.168.0.30
iptables -t nat -A PREROUTING -d 85.115.165.18 -p udp —dport 10002 -j DNAT —to-destination 192.168.0.31
iptables -t nat -A PREROUTING -d 85.115.165.18 -p udp —dport 10004 -j DNAT —to-destination 192.168.0.32
iptables -t nat -A POSTROUTING -s 192.168.0.30 -p udp –-sport 5060 -j SNAT —to-source 85.115.165.18:5060
iptables -t nat -A POSTROUTING -s 192.168.0.31 -p udp –-sport 5062 -j SNAT —to-source 85.115.165.18:5062
iptables -t nat -A POSTROUTING -s 192.168.0.32 -p udp –-sport 5064 -j SNAT —to-source 85.115.165.18:5064
iptables -t nat -A POSTROUTING -s 192.168.0.30 -p udp –-sport 10000 -j SNAT —to-source 85.115.165.18:10000
iptables -t nat -A POSTROUTING -s 192.168.0.31 -p udp –-sport 10002 -j SNAT —to-source 85.115.165.18:10002
iptables -t nat -A POSTROUTING -s 192.168.0.32 -p udp –-sport 10004 -j SNAT —to-source 85.115.165.18:10004

Определенные UDP порты закрепляем за конкретным IP адресом из локальной сети. UDP пакеты приходящие от любых публичных IP адресов Интернет на публичный IP адрес NAT-шлюза, на порты 5060 и 10000 предаем аппарату tel-1 с приватным адресом 192.168.0.30. Исходящие UDP пакеты с tel-1 выводим из приватной сети закрепляя за ними порты 5060 и 10000 для благополучного приема. По той же схеме работают и другие два аппарата. В этом случае теряет свою силу первое правило трансляции IP адресов. NAT-шлюз руководствуется только вторым правилом трансляции.

sip-13

Общий набор правил iptables для NAT-шлюза:

iptables -t nat -F
iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -p tcp –dport 80 -j SNAT —to-source 85.115.165.18
iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -p tcp —dport 25 -j SNAT —to-source 85.115.165.18
iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -p tcp —dport 110 -j SNAT —to-source 85.115.165.18
iptables -t nat -A PREROUTING -d 85.115.165.18 -p tcp —dport 80 -j DNAT —to-destination 192.168.0.100:80
iptables -t nat -A POSTROUTING -s 192.168.0.100 -p tcp —sport 80 -j SNAT —to-source 85.115.165.18
iptables -t nat -A PREROUTING -d 85.115.165.18 -p udp —dport 5060 -j DNAT —to-destination 192.168.0.30
iptables -t nat -A PREROUTING -d 85.115.165.18 -p udp —dport 5062 -j DNAT —to-destination 192.168.0.31
iptables -t nat -A PREROUTING -d 85.115.165.18 -p udp —dport 5064 -j DNAT —to-destination 192.168.0.32
iptables -t nat -A PREROUTING -d 85.115.165.18 -p udp —dport 10000 -j DNAT —to-destination 192.168.0.30
iptables -t nat -A PREROUTING -d 85.115.165.18 -p udp —dport 10002 -j DNAT —to-destination 192.168.0.31
iptables -t nat -A PREROUTING -d 85.115.165.18 -p udp —dport 10004 -j DNAT —to-destination 192.168.0.32
iptables -t nat -A POSTROUTING -s 192.168.0.30 -p udp —sport 5060 -j SNAT —to-source 85.115.165.18:5060
iptables -t nat -A POSTROUTING -s 192.168.0.31 -p udp —sport 5062 -j SNAT —to-source 85.115.165.18:5062
iptables -t nat -A POSTROUTING -s 192.168.0.32 -p udp —sport 5064 -j SNAT —to-source 85.115.165.18:5064
iptables -t nat -A POSTROUTING -s 192.168.0.30 -p udp —sport 10000 -j SNAT —to-source 85.115.165.18:10000
iptables -t nat -A POSTROUTING -s 192.168.0.31 -p udp —sport 10002 -j SNAT —to-source 85.115.165.18:10002
iptables -t nat -A POSTROUTING -s 192.168.0.32 -p udp —sport 10004 -j SNAT —to-source 85.115.165.18:10004

В итоге получаем:

  • Локальную сеть с выходом в Интернет через фильтрующий шлюз,
  • Собственный WEB-сервер,
  • Доступ к ресурсам почтовых и web-серверов Интернет,
  • Возможность использования IP-телефонии.
  • Комментарии к записи SIP через NAT или работоспособность VOIP в серых и белых сетях отключены

Возможность комментирования закрыта модератором.

Корпоративный блог

Рубрики

Комментарии

  • Евгений Иванович: Прекрасно знаю и помню Анатолия Петровича Струка. В годы службы в УВД Свердлоблисполкома не раз наш [...]
  • МИла: Говорить о пиратстве будут и дальше, в зависимости от того сколько "премируют" за независимые исслед [...]
  • Нина: Елена с удовольствием бы Вам ответила, но вы не указали адрес [...]
  • Елена: Добрый день, Нина! Большая просьба - напишите мне на почту, мне надо вас спросить о важном для меня [...]
  • Ната: Здравствуйте, Ольга Федоровна! А где же свежие статьи? Даже с Новым годом своих абонентов и читателе [...]
  • Александр: Меня больше впечатлило фото, я владелец нового журнала на Юге России очень хочется предложить фото [...]
  • ирина: Место просто потрясающее, провела там почти всё лето очень интересно. Дача прям рядом с ней)буквальн [...]
  • Антон: А можно глупый вопрос? Вот иностранцы как должны на эти сайты заходить или они только для внутреннег [...]
  • Ната: Как продвигать будете? Есть ли портфолио работ, чтобы иметь какое-то представление, что это за сайт- [...]
  • Владилен: Спасибо за проявленный интерес. Предложение очень агрессивное по цене (в хорошем смысле), поэтому в [...]
Телефон контакт-центра: (343) 385-2000
© 2006 – 2017 ETEL.RU, ООО «СЦК»
Россия, Урал, Екатеринбург