Home

вторник, 10 ноября 2009 г.

WTF NAT

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

Давным давно, когда компьютеры были большими, считалось что 640Мб памяти должно хватить для всех задач, а диапазона адресов IPv4 - для всех желающих приобщиться к сети.

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

И выход был найден: Из всего диапазона адресов было выделено три специальных, а именно

10.0.0.0 - 10.255.255.255
192.168.0.0 - 192.168.255.255
172.16.0.0 - 172.16.127.255

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

Если нужно соединить частную сеть с Интернет обычно используют пограничные решения, мозготовитый маршрутеризатор, одной стороной смотрящий в частную сеть, другой - в публичный сегмент.

nat_1.png

Если же нужно не просто соединить сети, но и обеспечить возможность выхода из внутрисети наружу, то простой маршрутеризации недостаточно. Одним из выходов является технология, называемая NAT (трансляция сетевых адресов).

Для примера рассмотрим ситуацию, в которой пользовательский компьютер с частным адресом 10.10.12.14 обращается к веб-серверу с адресом 194.44.163.133, посылая запрос на порт 80 сервера (http) со своего исходящего порта 20242

nat_2.png

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

На помощь приходит NAT, этакий добрый дядя-доктор, который отлавливает пакеты из частной сети наружу и тщательно их препарирует острым скальпелем. Суть операции проста: он аккуратно вырезает адрес отправителя, складывает на полку и в образовавшуюся дырочку вшивает свой собственный наружный (легальный) адрес. После операции пациента отпускают на свободу в интернет и там он добирается до адресата-сервера.

Сервер обрабатывает запрос и посылает ответ адресату, адресатом после операции стал сам дядя-доктор. Пакет ответа приходит доктору, который его снова отлавливает и опять препарирует. Теперь суть операции обратна: по номеру своего порта найти в тазике ампутированный ранее адрес, свой из пакета вырезать и на место пришить старый из тазика.

nat_3.png

После повторной операции пакет-ответ отпускается во внутреннюю сеть и добирается до компьютера, который посылал запрос

Таким образом достигается нужный результат:

  1. Частный компьютер может посылать запросы наружу
  2. Частный компьютер может получать ответы на запросы
  3. Все вышеизложенное происходит прозрачно для частного компьютера
  4. Не требует дополнительной настройки частного компьютера
  5. Частный компьютер продолжает оставаться защищенным.

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

Ой.

3 коммент.:

bm комментирует...

640kb, а не мегабайт.

kirill.voronin комментирует...

172.16.0.0-172.31.255.255

alexey комментирует...

в обеих картинках справа пропущена цифра 1, тоесть 194.44.63.133 вместо 194.44.163.133,

Отправить комментарий