Куда идем?

Теперь, когда наш сервер содержит всё необходимое для создания сайта, нам нужно реализовать еще одну деталь – открыть ему окно в Интернет. «Воткнуть сетевой кабель и всё» – скажете вы. «Не так просто» – отвечу я. Данная статья рассказывает о том, как из локального сервера сделать настоящий действующий интернет-сервер.

Доступ к серверу извне. Внешний IP-адрес

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

Казалось бы: все просто и понятно. Но если вы вдруг заходите совершить обратную операцию: сделать запрос с компьютера на работе на ваш домашний и получить ответ, то далеко не факт, что у вас получится это сделать. Скорее всего не получится. Почему?

Давайте немного усовершенствуем картинку из прошлой статьи:

Схема сети

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

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

Вспомним прошлую статью: как получается, что вы выходите в Интернет через один кабель одновременно с нескольких устройств (компьютер, планшет, телефон, телевизор и т.д.)? Роутер (маршрутизатор), установленный у вас дома, обрабатывает всю поступающую с этих устройств информацию, ставит ее в очередь, отправляет по одному каналу. Ответы, которые ему приходят, он раздает каждому отдельному устройству.

Как роутер узнает, что кому отдать? Когда он отправляет данные в Интернет, он помечает у себя, что куда отправил. То, что возвращается с адреса, на который было отправлено, очевидно, предназначено одному из устройств-отправителей, о которых роутер знает.

А теперь давайте представим, что на роутер приходит какая-то информация, о которой он ничего не знает. Какому устройству он должен ее передать? Скорее всего, какому-то заранее предопределенному.

Очень похожая ситуация происходит и у провайдера. Клиентов у него много. Реальные IP-адреса Интернета, которыми он обладает, явно ограничены, и выделять на каждого клиента отдельный адрес – непозволительная роскошь. Как быть? Провайдер ставит, так называемый NAT-сервер (на самом деле это реализуется более технично, здесь упрощение для понимания), который занимается примерно тем же самым, что и ваш домашний роутер.

Работает это так. Берется реальный IP-адрес Интернета, с которого идут все запросы и на который приходят все ответы. Также берется набор внутренних адресов, о которых известно только внутри сети провайдера, но ничего неизвестно в Интернете. Каждому клиенту провайдер раздает внутренний адрес. Когда на NAT-сервер приходит запрос от клиента, сервер записывает внутренний адрес, с которого пришел запрос, и, в дальнейшем, передаст на него ответ из Интернета. Если из Интернета приходит информация, никак не помеченная (например, запрос на наш Cubieboard), NAT-сервер не будет знать, на какой из внутренних адресов ее необходимо переслать.

Этим проблемы не ограничиваются. Провайдеры также используют свой DHCP-сервер для выдачи внутренних адресов клиентам. Таким образом, при каждом подключении к провайдеру, вы будете получать случайный новый внутренний адрес. Сообщить всем посетителям вашего сайта этот новый адрес явно невозможно. Как же быть? Как обратиться к своему домашнему серверу через Интернет. Есть несколько способов. О них ниже.

1 способ. Бюрократический

Теоретически, вы можете попросить, или даже потребовать от своего провайдера постоянный внутренний IP-адрес. Смысл в том, что если внутренний адрес постоянен, NAT-серверу провайдера можно указать это. Также это можно указать DNS-серверам провайдера, которые смогут обрабатывать запрос сайта по имени домена и сопоставлять это имя с внутренним IP-адресом. Все это технически реализуемо. Но если вы попросите провайдера о такой услуге, то в 99 случаев из 100 он либо пошлет вас в лес, либо скажет, что это невозможно. Так что в скорее всего такой вариант не пройдет или потребует от вас огромной упорности в своем достижении.

2 способ. Дешевый

Есть в Интернете сервисы, которые призваны решать заданную проблему. Как? Возьмем выдержку из Википедии:

При регистрации в сервисе DynDNS пользователь получает доменное имя третьего уровня. Специальный клиент устанавливается на пользовательский компьютер, или уже установлен в другом сетевом устройстве, таком как веб-камера или роутер. Этот клиент постоянно отправляет информацию DNS-серверу сервиса DynDNS, тем самым сообщая о своём IP-адресе. Сервер службы DynDNS сохраняет последний IP пользователя, и при обращении к пользовательскому доменному имени, полученному при регистрации, перенаправляет запрос на этот IP.

Известные сервисы:

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

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

3 способ. Удача!

Я думаю, из всех читателей найдутся счастливчики, которым их провайдер предоставляет реальный IP-адрес Интернета бесплатно. Как проверить свою удачу?

  1. Узнаем IP-адрес своего роутера. Он должен показываться в панели управления роутером.
  2. Узнаем внешний IP-адрес через который вы выходите в Интернет. Сделать это можно через сайт 2ip.ru.
  3. Если адреса из пунктов 1 и 2 совпадают, то Бинго! У вас реальный IP-адрес.
  4. Если адреса не совпадают, звоним в компанию провайдера и спрашиваем о возможности получения реального IP-адреса.

Этот способ ничем не хуже способа 4, но, к сожалению, он доступен далеко не всем.

4 способ. Правильный

Купить/арендовать реальный IP-адрес у своего провайдера. В большинстве случаев за некоторую дополнительную плату каждый провайдер готов предоставить вам реальный IP-адрес. Некоторые делают это за единоразовую плату на все время использования. Другие, такие как мой, предоставляют в аренду с помесячной оплатой. Да, это дополнительные расходы, но до полноценного внедрения технологии IPv6 в нашем несовершенном мире, придется с этим мириться.

После приобретения реального IP-адреса нужно еще раз проверить его, как описано в способе 3. Если все правильно, значит можно  идти дальше.

Настройка проброса портов в роутере

Внешний IP-адрес – это хорошо, но у нас же еще есть домашний роутер, за которым скрывается мини-сервер. Поскольку дома вы сами себе царь, Бог и провайдер, здесь все будет проще. Суть в том, чтобы настроить так называемый «проброс портов» в панели управления роутера. Сложность описания этого действия заключается в том, что видов роутеров много и интерфейс настройки проброса портов может отличаться на устройствах разных производителей. В целом ничего сложного в этом нет, главное уловить суть. А суть я рассказывал в первой части статьи.

Ваша задача найти настройки NAT в интерфейсе роутера и указать ему, что входящие соединения (для которых, как мы ранее выяснили, у роутера нет получателя) нужно перенаправлять на наш мини-сервер. Если самостоятельно с этим разобраться сложно, гуглите по фразе «НАЗВАНИЕ_ВАШЕГО_РОУТЕРА проброс портов». Например, вот настройка роутера Zyxel Keenetic.

По умолчанию, если вы наберете в браузере ваш внешний IP-адрес, например:

http://162.163.164.165/

то будет открываться форма авторизации в панели управления роутером.

Если же вы правильно настроите проброс портов, то у вас должен отработать уже мини-сервер и вы увидите:

It Works!

Такая картинка в браузере говорит, что все сделано правильно.

Подключение домена

Теперь, когда наш мини-сервер уже отдает html-страницу при запросе по IP-адресу, а вокруг нас витает волшебство системного администрирования серверов, хорошо бы сделать так, чтобы мини-сервер был доступен не по IP-адресу, а по имени домена. Что для этого необходимо? Ну, во-первых, собственно, домен. Предположим, что у вас уже зарегистрировано доменное имя. Далее мы можем пойти одним из двух путей, но чтобы описывать их, сначала немного нескучной теории.

Для связи доменного имени с IP-адресом сервера, на котором расположен сайт предназначены так называемые DNS-сервера. В упрощенном виде их задача сводится к тому, чтобы при вводе адреса сайта в браузере переслать пользователя на нужный IP-адрес. Сложность в том, что DNS-сервер пользователя, который хочет зайти на ваш сайт, должен знать этот ваш IP-адрес. Как он об этом узнает? Ему скажет ваш DNS-сервер. А как узнает ваш? Ему скажете ВЫ! Есть 2 способа сделать это.

Используем DNS-сервер регистратора домена

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

Здесь, опять же, настройка будет немного отличаться в зависимости от регистратора. Дам ссылку на пример такой настройки на reg.ru.

Используем собственный DNS-сервер

Этот способ рекомендую только тем, кто не намерен отключать мини-сервер на длительное время.  Панель управления IPSConfig 3 позволяет вам достаточно легко настроить ваш собственный DNS-сервер и внести на него запись доменного имени. Не буду на этом подробно останавливаться, поскольку выбрал первый способ, но если вам интересно попробовать, то вот видеоурок.

От себя добавлю, что минимум нужно настроить A-записи для домена и домена с www(написать 2 строчки). При настройке вы, естественно, указывайте ваш реальный IP-адрес.

После настройки DNS для вашего домена, нужно подождать около суток. Это связано с особенностями работы DNS-серверов. Если вы все сделали правильно, то уже на следующий день при наборе домена в браузере, вы увидите такую же страницу, как когда вводили IP-адрес. Если это произошло, поздравляю – ваш мини-сервер теперь доступен в сети Интернет. Теперь остается настроить сайт, все сервисы и установить Joomla.

----------------------------

Если же вы хотите что-нибудь помощнее маленькой коробочки Cubieboard, то можете выбрать и купить игровой компьютер на сайте continent-opt.ru.

Об авторе
Wedal
(Виталий). Веб-разработчик полного цикла (Full Stack). Создатель и автор сайта Wedal.ru.
Основной профиль – создание сайтов и расширений на CMS Joomla.
Добавить комментарий

Комментарии  
0
Виталий - спасибо за проделанную работу!
p.s. стоит добавить, что пока изменение DNS записей не вступило в силу - можно прописать IP -> domain.com в host файле - чтобы получить доступ по доменному имени сразу не ожидая ~ 24ч.

Удачи. Еще раз спасибо.
0
А можно к Cubieboard подключить ssd диск (для низкого энергопотребления) и хранить на нем всю информацию сервера. При этом, так как информация будет редко записываться/перезаписываться (а будет только считываться интернет-пользователями - играть роль файлохранилища) использовать mlc или tlc, а не slc?
0
den, теоретически - да. Но только стоит помнить, что помимо кэша есть еще и логи сервера, служб.
0
Добрый день, Виталий. Есть ли информация по устойчивости к нагрузкам такого сервера? Хочу попробовать поднять такой сервер для хранения некоторых файлов сайта. Сам сайт будет хоститься у нормальной хостинговой компании, а вот некоторые файлы хочется хранить на таком вот "домашнем" сервере. Так как "заливка" этих файлов к хостингеру выльется в крупную сумму (решил "прикрутить" на сайт возможность прослушивания аудиокниг и просмотра трейлеров фильмов - это, по моим расчетам, пока что всего лишь терабайт, не более, - сайт молодой, посетителей мало, контента тоже не слишком). Скорость исходящего соединения 25 мегабайт в секунду, можно поднять примерно до 40.
1
Jabber, чтобы просто отдавать файлы, мощности точно хватит, тем более, что с момента написания статьи уже прошло довольно много времени. Сейчас выпущен уже 8-ядерный Cubieboard5. Единственное, под такую задачку лучше брать обычный жесткий диск.