Перейти к содержимому

 Друзья: Всё для вебмастера | [ Реклама на форуме ]


Rutor
Rutor


[ DDos Услуги. DDos атака. Заказать ДДос ]


NAT - трансляция сетевых адресов


  • Авторизуйтесь для ответа в теме
В этой теме нет ответов

#1
SiMO

SiMO

    Бит

  • Members
  • 4 сообщений
Intro

Представь себе ситуацию -  у тебя дома появился второй комп. Есессно те захочеццо, чтобы на нём был инет. Я надеюсь, что локалка уже есть, так что я не буду тебя этому учить. Конечно, мона сделать доступ через проксик или соксы, но это дополнительный гемор и настройка, да и не очень-то это и удобно. И тут подкрался из ниоткуда ОН - NAT. Перевожу - Network Address Translation  преобразование сетевых адресов. Конечно NAT - не идеальное решение, но всё же в небольших сетях будет работать на ура.

Что такое NAT

NAT представлят собой стандарт, с помощью которого компьютеры частной сети могут юзать всего один IPv4 адрес(короче один коненкт к инету).

Как работает вся эта хрень?

NAT'у в общем-то пофигу, какой ip-адрес у тачки в сети(ну тока чтоб он был частным), лишь бы все тачки были в одной сети(например 192.168.2.1, 192.168.2.3, 192.168.2.4 и т.д.).
Прога, которой вдруг приспичило вступить с кем-то в связь, открывает сокет, определяемый IP-адресом источника, портом источника, IP-адресом назначения, портом назначения и сетевым протоколом. Это своеобразная инициализация связи точек, между которыми будет происходить сеанс связи. Когда прога передает данные через сокет, частный IP-адрес клиента(IP-адрес источника) и клиентский порт(порт источника), ясен перец, вставляются в пакет в поля параметров источника. Поля параметров пункта назначения будут содержать IP-адрес сервера (IP-адрес назначения  удаленный узел) и порт сервера. Но ты наверное уже смекнул, что удалённый сервер находится вне частной сети, и следовательно клиент направляет пакет в основной шлюз. Вот тут и всплывает устройство NAT, которое играет роль шлюза.

Операция "Перехват"

Устройство NAT перехватывает исходящий пакет и производит сопоставление порта, используя IP-адрес назначения(адрес сервера), порт назначения, внешний IP-адрес устройства NAT, внешний порт, сетевой протокол, а также внутренние IP-адрес и порт клиента(нехилый списочек :biggrin: )
Изображение
Естественно, если производится сопоставление, то где-то это должно пригодиццо и надо бы это дело сохранить. Устройство NAT ведет таблицу сопоставлений портов и сохраняет созданное сопоставление в этой самой таблице. Внешние IP-адрес и порт  это общие IP-адрес и порт, которые будут использоваться в текущем сеансе обмена данными вместо внутренних IP-адреса и порта клиента.
Дальше всё довольно просто - NAT "транслирует" пакет, заменяя внутренние данные, такие, как IP-адрес и порт клиента на внешние. Теперь пакет посылается во внешнюю сеть и попадает на сервер.
Сервер получив пакет, даже не подозревает о том, что его послал другой компьюетер, и обращается с пакетом как обычно - обрабатывает его, что-то берёт из него, отвечает на него и т.д. и т.п

Операция "захват"

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

Пробуем

Ну что мы всё о теории, пора бы уже потренироваться. Настройку NAT буду описывать под винду и на конкретном примере. Представим себе ситуацию : стоят два компа, на одном есть инет, назовём его компом S. Внутренний сетевой интерфейс будет s1, а внешний(который смотрит в инет) - s2. Второй комп, который мы планируем подрубить с инету, будет C и у сетевой интерфейс у него один - внутренний, назовём его c1.
Итак, на машине S на сетевухе s2 отрываем свойства и дауним "Клиент сетей Microsoft" и "Служба доступа к файлом и принтерам Microsoft". Дальше идём во вкладку "дополнительно" и выбираем "Разрешить другим пользователям...". Всё, на этом настройка машины S, он же сервер, закончена.  Настроим же теперь и клиент...
С килентом всё просто, как f=15. Просто в свойствах соеденения c1 "Протокол интернета TCP/IP" нужно в качестве шлюза и DNS-сервера указать адрес машины S.  Всё, закончили. Теперь попробуй пропинговать сначала s1, затем s2 и наконец что-то типа mail.ru, всё должно работать.

Outro

Вообще NAT - довольно хитрая штука. То, что я описал настройку NAT'а под винду, не значит, что под никсы она сложнее. Ничего подобного, там всё почти также, если не проще. В общем знания по NAT'у тебе так или иначе пригодятся, будь то домашняя сеть или сеть в компьютерном клубе, где ты работаешь. Всё, я закончил :)


Автор: SiMO


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных