Как веб-сервер на своём компьютере сделать доступным для других

После установки веб-сервера может понадобиться сделать его доступным для других в локальной или глобальной сети. Это может быть нужно, например, чтобы тестировать свой сайт на разных платформах (посмотреть, как выглядит сайт на мобильных телефонах) или если вы создали сервис (файлообменник, чат и т.п.), который должен быть доступен для других.

Локальные и глобальные компьютерные сети

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

Глобальная сеть и локальные сети различаются IP адресами. Каждое сетевое устройство в любой сети должно иметь свой уникальный IP адрес. Особенностью IP адресов в глобальной сети является то, что они уникальны на глобальном уровне, т.е. к Интернету не могут быть подключены устройства, у которых одинаковый IP. В локальных сетях IP адреса также уникальны, но уникальны они только на локальном уровне: т.е. в вашей домашней сети IP адрес, к примеру, 192.168.0.2 может быть только у одного устройства, иначе это вызовет проблемы; но у других пользователей, имеющих свои локальные сети, в этих сетях также может использоваться IP адрес 192.168.0.2.

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

Примечание: Я знаю про NAT (технология, позволяющая нескольким устройствам иметь Интернет-подключение через один IP адрес), про объединение локальных сетей с помощью другой локальной сети, про туннелированние и т.д., но сознательно пропускаю это для упрощения.

Локальные и глобальные IP адреса

Чтобы не запутаться в терминологии, глобальный IP адрес ещё называют «внешним», «белым» - это разные обозначения одного и того же.

Локальный IP адрес называют «внутренним», «серым», «приватным» - это всё одно и то же.

Работа домашней (локальной) сети, в которой присутствует роутер и несколько устройств, подключённых к роутеру, обычно выглядит следующим образом:

  1. Роутер подключается к Интернет-провайдеру. Интернет-провайдер назначает роутеру внешний IP адрес, который позволяет устанавливать соединения с глобальной сетью Интернет.
  2. Компьютеры по кабелю или Wi-Fi, а также мобильные телефоны через Wi-Fi подключаются к роутеру. Роутер раздаёт им локальные IP адреса.
  3. Если два устройства в локальной сети хотят обменяться данными, то они это делают через роутер, но сетевые пакеты не отправляются в глобальную сеть.
  4. Если какому-либо устройству понадобиться «выйти в Интернет», то он передаст соответствующий запрос роутеру, роутер подключится к нужному узлу в глобальной сети, роутер же получит ответ от узла в глобальной сети и передаст этот ответ устройству в локальной сети, которое сделало первоначальный запрос.

Настройка веб-сервера, чтобы его можно было открыть на других компьютерах в локальной сети

По умолчанию, веб-сервер Apache настроен отвечать всем, кто пытается к нему подключиться. Подключиться к компьютеру, а, следовательно, и к веб-серверу, проще всего по его IP адресу.

Если вы хотите открыть страницу локального веб-сервера на другом устройстве (компьютер, телефон), подключённом к этой же локальной сети, то достаточно в строке браузера набрать IP адрес компьютера, на котором запущен веб-сервер.

Как узнать локальный IP адрес

Но чтобы это сделать, нужно знать, какой у компьютера с веб-сервером IP адрес. Как уже было сказано, локальные IP раздаёт роутер. Локальные IP могут быть в следующих диапазонах:

  • 10.0.0.0 - 10.255.255.255
  • 100.64.0.0 - 100.127.255.255
  • 172.16.0.0 - 172.31.255.255
  • 192.168.0.0 - 192.168.255.255

Причём, если вы не меняли настройки роутера, чаще всего используется диапазон 192.168.0.0 - 192.168.255.255. Скорее всего, ваш компьютер имеет адрес вида 192.168.0.* или 192.168.1.*. Но какой именно?

В Windows чтобы узнать локальный IP адрес откройте командную строку (нажмите Win+x, и выберите Windows PowerShell). В открывшемся окне выполните команду

ipconfig

У вас, наверное, будет меньше сетевых устройств, но в любом случае, для всех из них будет выведена информация, в том числе IP адреса.

Мой компьютер имеет локальный IP адрес 192.168.0.90. Если я, например, в телефоне, подключённому по Wi-Fi к роутеру наберу в адресной строке 192.168.0.90, то откроется веб-страница моего локального веб-сервера, запущенного на компьютере (да, у меня там бардак):

Внимание: если у вас не получается открыть веб-сервер, хотя IP адрес введён правильно – попробуйте отключить файервол. Если это помогло, то файервол можно включить, но настройте исключение для 80 порта.

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

Как уже было сказано, локальный IP адреса «раздаёт» роутер. Адреса являются произвольными в рамках данной подсети.

Чтобы исправить ситуацию с постоянно меняющимся локальным IP, давайте познакомимся с такими понятиями как динамичный и статичный IP адреса.

Динамичный IP адрес выдаётся произвольно (роутером, Интернет-провайдером). Он может меняться при последующих подключениях.

Статичный IP адрес закреплён за сетевым интерфейсом (фактически, закреплён за компьютером, мобильным телефоном). Он не меняется при последующих переключениях.

В локальной сети, по умолчанию используются динамичные IP адреса, но это легко изменить.

Имеется, как минимум, два способа поменять динамичный локальный адрес на статичный локальный адрес:

  • в настройках сетевого интерфейса (на компьютере, в мобильном телефоне)
  • в настройках роутера

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


Настройка постоянного IP в Windows

Для настройки статичного локального адреса на компьютере откройте «Сетевые подключения». Проще всего это сделать набрав в командной строке Windows:

ncpa

Выберите интересующий вас сетевой адаптер (сетевой подключение), нажмите на него правой кнопкой мыши и выберите «Свойства»:

В открывшемся окне выберите «IP версии 4 (TCP/IPv4)» и нажмите кнопку «Свойства»:

Вы увидите следующее:

Переключите на «Использовать следующий IP адрес».

Теперь нужно заполнить все поля. Первые три поля являются взаимосвязанными и также связаны с роутером. Когда ранее мы смотрели свой локальный IP адрес, нам также была показана такая информация как Маска подсети (на моём скриншоте это 255.255.255.0) и Основной шлюз (на моём скриншоте это 192.168.0.1). Посмотрите ваши значения (вполне вероятно, что они будут такими же) и введите их в поля «Маска подсети» и «Основной шлюз». Кстати, основной шлюз – это адрес роутера. Очень часто локальными адресами роутера являются 192.168.0.1 и 192.168.1.1

В поле IP-адрес введите желаемый IP. Он должен соответствовать вашей сети. Т.е. если роутер имеет IP 192.168.0.1, то компьютер должен иметь IP вида 192.168.0.* (например, 192.168.0.100), если роутер имеет IP 192.168.1.1, то компьютер должен иметь адрес вида 192.168.1.* (например, 192.168.1.100).

Чтобы не было проблем, устройства в одной локальной сети не должны иметь одинаковый IP адрес.

В качестве DNS серверов («Предпочитаемый DNS-сервер» и «Альтернативный DNS-сервер») введите 8.8.8.8 и 8.8.4.4 соответственно.

У меня получилось так (для компьютера я выбрал IP 192.168.0.100):

Закройте окна с сохранением настроек.

Теперь при каждом подключении ваш компьютер будет иметь один и тот же IP адрес.

Настройка статичного IP в роутере

Для каждого роутера детальная инструкция по настройке различается. Но схема общая: в настройках локальной сети перейдите к настройкам DHCP-сервера, выберите желаемые компьютеры/телефоны по MAC-адресу и привяжите их к определённым локальным IP адресам.

Как открыть веб-сервер для доступа из Интернета

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

Если кабель Интернет-провайдера подключён к вашему компьютеру напрямую, то, вероятно, доступ по IP адресу будет работать (имеются нюансы с NAT).

Но если вы используете роутер, то IP адрес принадлежит роутеру. Если из Интернета приходит запрос на роутер, то он просто не знает, какому именно устройству в локальной сети переадресовать этот запрос. Более того, большинство роутеров имеют свой собственный веб-сервер – это он показывает страницы с настройками роутера в веб-браузере.

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

Переадресация портов доступна для настроек локальной сети и для настроек Интернет-подключения – нам нужно именно второе.

В роутере перейдите в настройки Интернета, найдите там переадресацию портов. Некоторые роутеры поддерживают Переключение портов – нам это не подойдёт.

В качестве порта для переадресации выберите 80, введите локальный IP адрес компьютера, на котором размещён веб-сервер и введите порт, на который будет происходить переадресация – 80, протокол TCP.

Теперь мой веб-сервер доступен также по внешнему IP:

Кстати, чтобы узнать свой внешний IP адрес перейдите на эту страницу: https://suip.biz/ru/?act=myip

Как сделать глобальный IP адрес статичным

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

Также смотрите статью «Как защитить веб-сервер Apache от взлома в Windows».

Очень хороший хостинг сайтов

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

Рекомендуется Вам:

15 комментариев to Как веб-сервер на своём компьютере сделать доступным для других

  1. Sergey:

    Теперь жду статью как защитить свой веб-сервер от ddos)

    • Alexey Alexey:

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

      Чтобы дидосили нужно обзавестись недругами, которые готовы тратить свои силы и, почти всегда, деньги на ЗАВЕДОМО ВРЕМЕННЫЕ проблемы в работе веб-сервера. DDoS это даже больше какой-то акт отчаянья – ну ненавижу я тебя, а сделать больше ничего не могу.

      А вообще статья по защиту от дидос атак точно будет. Правда сначала будет длинный и сложный материал про iptables, а затем статья про защиту от некоторых «детских» DDoS атак, в том числе с использованием iptables, правда в среде Linux.

      • Sergey:

        Спасибо за развернутый ответ.

  2. Руслан:

    Добрый день.

    Поставил по вашей инструкции Apache24, PHP … , - все работает по локальной сети – отлично, спасибо.

    Проблема возникла при попытке открыть страницу из интернета по внешнему IP моего роутера (определенного по ссылке на вашем сайте и проверенного на других – IP совпадают).

    Набираю этот внешний IP в браузере телефона (подключен к интернету по другой сети(не через мой роутер)) – получаю сообщение – “не удается получить доступ к сайту, превышено время ожидания ответа от сайта”

    Настройки роутера на переадресацию к локальному, статическому IP машины с Apache 24, сделал по вашей инструкции.

    Подскажите пожалуйста, что надо проверить?

    • Alexey Alexey:

      Приветствую!

      Даже если всё сделать правильно (в том числе проброску портов), но если Интернет-провайдер использует NAT, то возможности получить доступ к вашему веб-серверу не будет. Это особенность NAT — подключения работают только в одну сторону. В качестве решения проблемы — только аренда белого IP у вашего Интернет-провайдера.

      • Руслан:

        Добрый день Алексей.

        Арендовал белый IP и все заработало, спасибо.

        Подскажите, есть ли у вас статьи, о том как разместить /создать сайт  на таком локальном сервере с  именем уже ранее зарегистрированного/купленного домена

        (домен зарегистрирован на Reg.ru, но сайт пока не создан и не привязан к IP)

        Может какие ссылки порекомендуете.

        Спасибо.

        • Alexey Alexey:

          У вас уже должен быть доступ к управлению DNS записями домена (посмотрите в панели управления). Создайте или отредактируйте запись A чтобы она содержала IP вашего веб-сервера.

          Этот скриншот просто для примера, какие A записи можно добавить (у вас будет другой интерфейс, так как у меня не reg.ru).

          В принципе, когда обновятся записи на DNS серверах, может уже заработать — в браузере при вводе доменного имени будет открываться сайт на вашем локальном компьютере. Если не заработает, или если просто хотите сделать «как надо», то в конфигурационном файле веб-сервера httpd.conf найдите директиву

          ServerName localhost

          И замените её на

          ServerName ВАШ_ДОМЕН

          Перезапустите веб-сервер.

          После этого при обращении к домену должно уже точно работать. На этом можно остановиться.

          Для работы с субдоменами (адреса вида *.domen.ru) или если захотите добавить ещё один сайт, посмотрите раздел «Подключение виртуальных хостов Apache в Windows» в этой статье. Если вы настраиваете DNS для своих доменов и субдоменов, то вам не нужно редактировать файл C:\Windows\System32\drivers\etc\hosts (как это говорится в той статье) — он только для тех ситуаций, когда нет настроек DNS.

          • Руслан:

            Добрый день Алексей.

            Вроде все понятно.

            Спасибо огромное.

            • Alexey Alexey:

              Забыл сказать очень важные вещи. В папке /phpmyadmin/ на сервере создайте файл .htaccess и скопируйте в него:

              Require local

              Это нужно, чтобы в phpMyAdmin не могли зайти посторонние — обязательно это сделайте. Для проверки, что запрет работает, попробуйте открыть с какого-нибудь другого устройства (например, с мобильного телефона) адрес вида http://ваш_сайт/phpmyadmin/ или http://ваш_IP/phpmyadmin/ - должно появиться сообщение, что доступ запрещён и ошибка 403. Либо просто удалите папку /phpmyadmin/, если вам не нужен phpMyAdmin.

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

              Удалите файл i.php (если он есть) или другие проверочные файлы, которые создавались, к примеру, с phpinfo() и так далее.

              Затем зайдите на эту статью и по ней сделайте:

              • Запрет доступа из вне к MariaDB/MySQL
              • Установка пароля на MariaDB/MySQL

              Это нетрудно и не займёт много времени, но это всё нужно сделать обязательно!

              По умолчанию если зайти в папку без индексного файла, то показывается список всех файлов в этой папке. Скорее всего, вам это не нужно (и это хуже для безопасности). Поэтому в конфигурационном файле Apache httpd.conf найдите директиву <Directory "c:/Server/data/htdocs/">

              После неё найдите строку

              Options Indexes FollowSymLinks

              И замените на

              Options -Indexes

              Чтобы изменения вступили в силу, перезапустите веб-сервер.

              Если вы разрабатываете и тестируете скрипты прямо на этом сервере, то закройте доступ к папке, в которой находятся файлы проекта с помощью .htaccess как это показано чуть выше. Не храните бэкапов, файлы резервных копий, например, index.php,bak на этом сервере!

              Теперь относитесь к этому серверу как к публичному: всё, что не закрыто и не заблокировано это теперь как проходной двор. Отнеситесь к этому серьёзно, так как через веб-сервер можно скомпрометировать (взломать) весь компьютер!

              Для настройки ограничений рекомендуется ознакомиться со статьёй «Контроль доступа к сайту (блокировка по IP, User-Agent)».

  3. Руслан:

    Понял вас. Спасибо. 

  4. Yaroslav:

    Здравствуйте. А можно ли сделать веб-сервер доступным в интернете, используя динамический внешний ИП?

    • Alexey Alexey:

      Если Интернет-провайдер использует NAT, то нет, невозможно.

      Если NAT не используется, то при динамическом IP можно сделать сервер доступным по имени хоста используя сервис DDNS.

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

      ИМХО, НАМНОГО лучше или арендовать внешний IP или недорогой VPS сервер (у каждого сервера «в комплекте» уже идёт белый IP).

  5. Denis:

    Настроил на ноуте сервер IIS (Win7 x64), сделал доступным, отключил брандмауэр, добавил разрешающее правило для порта 80. Ноут подключен к Wi-Fi роутеру, переадресация включена. На локальный сайт захожу указывая внешний IP Wi-Fi роутера в браузере телефона.

    Однако, если телефон подключен по Wi-Fi к роутеру - сайт откроется. Если через мобильный интернет - страница не найдена.

    Что я мог забыть при настройке Wi-Fi роутера или сервера IIS ???

    • Alexey Alexey:

      Скорее всего вы всё сделали правильно, но ваш Интернет-провайдер использует NAT. Подробнее об этом здесь.

Добавить комментарий

Ваш e-mail не будет опубликован.