На мой призыв о информационной помощи ( смотри слева внизу) откликнулся Г
еннадий UN7FGO.
Сказ о NAT, Port-forwarding и Dynamic DNS.
Все эти возможно незнакомые английские слова не такие уж и страшные, как и наше сказание. Многие из нас получают услуги интернета от провайдера по телефонной линии (ADSL) или медной витой паре, изредка по оптическому кабелю, но в любом случае, между средой доставки интернета к нам домой и нашим компьютером/планшетом/телефоном есть посредник – маршрутизатор (иногда его называют «роутер») или модем. В большинстве случаев, когда нас интересует только потребление контента из интернета, мы не замечаем эту маленькую коробочку, установленную обычно в неприметном месте. Но как только мы хотим сами что-то предоставить всемирной сети, выясняется, что очень мало знаем о работе этой самой коробочки. И еще меньше о том, как же заставить ее сделать то, что нам нужно. Так давайте разберемся как-же работает маршрутизатор.
На сцену выходит первый персонаж нашего повествования – NAT.
На самом деле, это не настоящее имя, это аббревиатура из трех английских слов - NetworkAddressTranslation — «преобразование сетевых адресов». Имя это присвоили ему за то, что он отвечает за правильную пересылку сетевых пакетов от устройств за маршрутизатором, у нас дома, к серверам расположенным в интернете и обратно.
Все устройств в нашей домашней сети обычно имеют адреса (IP-адреса) с одинаковой левой частью и эта часть выбирается из определенного набора адресов, которых нет в сети интернет. NATв маршрутизаторе получает сетевые пакеты от устройств из домашней сети, запоминает, кто и куда делал запрос и отправляет в интернет все запросы от своего имени. Таким образом, неважно сколько у вас устройств дома, все пакеты в интернет идут от имени нашего маршрутизатора, на котором живет NAT. А вот полученные ответы NATразбирает и отправляет тем устройствам, которые их просили. Ну а что делать, если из интернета прилетел пакет с данными, которые никто не запрашивал?
Тут все просто, NAT, не найдя запроса изнутри сети на эти данные их просто игнорирует. В результате наш уютный мирок внутри дома, со всеми компьютерами, телефонами и планшетами отгорожен от интернета этаким швейцаром с именем NAT, который пресекает все попытки попасть внутрь домашней сети пакетам, которые никто не звал в гости.
Но процесс потребления контента из интернета может смениться, у активных граждан, желанием пополнить интернет чем-то своим. Если это картинки или умные мысли, то обычно хватает твиттера или инстаграмма, но как быть, если вы захотели с друзьями поиграть в сетевую игру, развернутую у вас на компьютере? Или вы постигаете веб-дизайн и у вас поднят такой красивый веб-сервер с вашими дизайнерскими решениями, как его показать общественности? Или вы захотите предоставить всем доступ к своему online логу сразу после проведения QSO?
Тут нам на помощь и придет второй персонаж нашего повествования – PortForwarding. Для общения с ним придется уже немного загрузить голову информацией о сетевых технологиях. В частности, необходимо знать, что все IP-пакеты, гуляющие по сети, имеют не только адрес, куда они направляются, но и порт, для которого они предназначены. Это как в почтовом адресе, вы пишете город, улицу, номер дома и квартиру. Так вот Город, улица, номер дома, это и есть IP-адрес, куда направляется пакет. А номер квартиры в доме, это порт, которому этот пакет предназначен. Визуально, без специальных средств отладки, невозможно разглядеть на IP-пакетах не только порт, но и адрес, куда они летят, уж больно пакеты быстрые. Но нам и не нужно их разглядывать, для распределения пакетов у нас есть маршрутизатор, который вполне может справляться с этой работой. Перейдем к практическому примеру.
Пусть ваш компьютер в домашней сети имеет IP-адрес 192.168.0.12. Вы не поленились и установили на комплект для веб-мастера на базе пакета программ XAMPP. Прочитано несколько книг и вы навели первый лоск на ваш веб-сайт. Но как его показать друзьям?
Предварительно мы должны узнать порт, на котором работает ваш сервер. Для веб-сервера это обычно порт № 80 (http://) или порт №443 (https://).
Теперь заходим в настройки нашего маршрутизатора и находим вкладку «PortForwarding», «PortMapping»или «Виртуальный сервер», все зависит от модели и производителя маршрутизатора. В данной вкладке указываем порт, на котором наш сервис будет виден из сети интернет (80), а так-же порт на нашем компьютере (80) и IP-адрес нашего компьютера внутри домашней сети (192.168.0.12). Желательно внешний порт оставить стандартным, так как не все программы-клиенты позволяют изменить номер порта.
Примеры стандартных портов для других распространенных сервисов:
- FTP-сервер (файловый сервер) – порт № 21
- TELNET-сервер (командная строка) – порт № 23
- почтовый SMTP-сервис – порт № 25
- почтовый POP3-сервис – порт № 110
- сервер игры DukeNukem 3D – порт № 8501
- сервер игры Counter Strike – порт№ 27010 / 27015
Если вы затрудняетесь в выборе порта для вашего сервиса, то перечень часто используемых портов можно посмотреть в википедии -
https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BF%D0%BE%D1%80%D1%82%D0%BE%D0%B2_TCP_%D0%B8_UDP
Все у нас получилось и друзья смогли заценить вашу работу или погонять с вами в игру, на поднятом вами сервере.
Но на следующий день почему-то ваш сервер стал недоступен для друзей. Вы открываете настройки маршрутизатора и замечаете, что адрес, который выдал вам провайдер сегодня, отличается от вчерашнего. Не стоит звонить в службу поддержки и ругаться, это нормальная практика и никто нам не обещал сохранять этот адрес на постоянной основе, если, конечно, у вас нет отдельного договора на предоставление статического IP-адреса, за отдельную плату, порой не очень маленькую.
Но что-же нам делать в этом случае? Ведь хочется быть доступным из интернета всегда и везде.
Вот тут нам на помощь приходит наш третий персонаж – DynamicDNS. DNS (DomainNameSystem — система доменных имён) составляет очень важную часть всего интернета и помогает нам не запоминать безликие IP-адреса серверов, а обращаться к ним по запоминающимся именам, к которым мы уже привыкли. Так-же эта служба помогает, совместно с протоколом HTTP, размещаться на одном IP-адресе нескольким серверам. Но служба DNSработает только со статическими (не изменяемыми) адресами и в нашем случае она, в своем классическом виде, для нас не пригодна. Но есть ее близкий родственник, который позволяет таким как мы пользователям, с меняющимся IP-адресом, быть доступным по постоянному имени. Такой сервис в основном предоставляется на платной основе, но некоторые компании разрешают использовать 1-2 имени на бесплатных условиях. Для получения своего имени, нам необходимо зарегистрироваться в одном из таких сервисов.
-
http://www.noip.com/
-
https://www.dynu.com/
-
http://www.dnsdynamic.org/
-
https://www.duckdns.org/
-
http://freedns.afraid.org/
После чего вам будет достаточно настроить в маршрутизаторе выбранную вами службу, указав доменное имя, которое вы выбрали и параметры учетной записи в сервисе. Подробнее можете почитать у Гоши радиста -
http://gosh-radist.blogspot.com/2017/01/web.html
Но что делать, если в вашем маршрутизаторе нет выбранного вами сервиса или ваш маршрутизатор не поддерживает DynamicDNS? Ничего страшного, с сайта выбранного вами сервиса скачиваете и устанавливаете программу-агент, которая будет следить за изменением вашего внешнего IP-адреса и своевременно оповещать сервис, для замены его в таблицах DNS. Если Вы дочитали до конца, значит у Вас все получилось и Вы пополнили интернет еще одним сервисом!
Геннадий
UN7FGO