Вопрос или проблема
Я хочу получить доступ к своим локальным веб-сайтам для разработки, размещенным на другом локальном компьютере в моей домашней сети.
Я пробовал использовать http://192.168.1.nn и http://localhost в браузере, и ни один из них не найден (мой серверный компьютер имеет статический IP-адрес 192.168.1.nn).
Когда я запускаю на компьютере nn, у меня нет проблем с доступом к localhost и его веб-сайтам.
Я пробовал использовать настройки Windows, чтобы разрешить неаутентифицированный доступ к компьютеру nn (в брандмауэре Защитника, а также в Malwarebytes > Настройки > Список разрешений > Добавить > 192.168.1.nn). Я пробовал использовать правило переадресации портов в маршрутизаторе для переадресации порта mm на компьютер nn (и использовать адрес http://localhost:mm или http://192.168.1.nn:mm). Я пробовал добавить эту строку в файл Hosts:
192.168.1.nn localhost
Я не знаю много о внутренностях сетей. Я хочу установить соединение LAN-LAN на одном из своих компьютеров с другим, не предоставляя внешнему миру (WAN) доступ к чему-либо в моей сети. Я надеюсь получить помощь с ответами, которые были протестированы, чтобы они работали без слишком многих вопросов и ответов.
Поскольку вы, похоже, не хотите предоставлять дополнительную информацию по соображениям безопасности, вот несколько общих мыслей и комментариев о том, на что вы можете обратить внимание, чтобы помочь решить эту проблему:
Приложения третьих сторон
-
Отключите любые брандмауэры или антивирусное сканирование во время тестирования. Приложения или оборудование третьих сторон могут влиять на связь между двумя компьютерами, помимо любых правил, которые вы установили.
-
Если вы используете виртуальную машину для вашего сервера, вам, возможно, нужно будет выполнить дополнительную настройку самой виртуальной машины (в дополнение к чему-либо на хосте), чтобы разрешить доступ к ней.
-
Программное обеспечение виртуальной машины может иметь опцию для “только хост” виртуальных сетевых адаптеров, которые никогда не считаются частью локальной сети. Убедитесь, что вы не пытаетесь получить удаленный доступ через IP-адрес, назначенный какому-либо “только хост” сетевому адаптеру (если он есть).
-
Виртуальные машины могут требовать переадресации портов (через программное обеспечение виртуальной машины), чтобы разрешить доступ к ним, если они не работают через мостовой адаптер.
-
Если вы используете WSL, возможно, вам нужно будет обновить его специально или Windows в целом.
Локальная сеть
-
Убедитесь, что компьютеры находятся в одной локальной сети. Проверьте сетевую маску на любом маршрутизаторе. Они обычно должны быть одинаковыми. Также убедитесь, что любые сетевые DHCP-серверы (вновь, скорее всего, на вашем маршрутизаторе и т. д.) выдают одинаковые диапазоны локальных адресов любым устройствам, которые вы хотите подключить.
-
Предполагая сетевую маску, например
255.255.255.0
, если ваш сервер имеет адрес, напримерhttp://192.168.1.nn
, а компьютер, который вы используете для доступа к серверу, имеет адрес, напримерhttp://192.168.2.nn
, то они не находятся в одной локальной сети. -
Если у вас нет специальной сетевой настройки, которую вы не указали, переадресация портов в вашем маршрутизаторе не должна быть необходима для базовой связи между устройствами в одной сети.
-
Если вы пытаетесь использовать мобильное устройство для доступа к вашему серверу из локальной сети, убедитесь, что вы используете Wi-Fi, а не тарифный план вашего оператора (поскольку это было бы полезно только для тестирования доступа WAN).
-
В общем, вы должны использовать только локальные адреса, назначенные вашим маршрутизатором (т.е. не любые IP-адреса, назначенные вашим провайдером).
-
Широко говоря, использование более чем одного маршрутизатора, точек доступа Wi-Fi или “новейшего” сетевого оборудования (например, оборудования мешевой сети) могло бы (теоретически) вызвать проблемы.
Имена хостов
-
Файл
hosts
применяется только к компьютеру, на котором он имеется. Таким образом, файлhosts
на сервере не позволит другим компьютерам в локальной сети разрешить любые указанные имена хостов. Файлhosts
на компьютере, пытающемся получить доступ, должен быть модифицирован. -
localhost
не является произвольным именем. Оно почти всегда относится только к локальному компьютеру. Это означает, что оно обычно не может использоваться для обращения к удаленному серверу (т.е. тому, который не расположен на том же компьютере). Обратите внимание, что это также может касаться виртуальных машин. -
Изменение
localhost
вhosts
возможно, но может игнорироваться браузерами, которые вместо этого просто возвращают локальный адрес обратной связи (например 127.0.0.1
), который недоступен удаленно. -
Если вы используете Linux (например, Raspberry Pi или WSL), вам может понадобиться выполнить дополнительные шаги по настройке резольвера в дополнение к редактированию вашего файла
hosts
. -
Для базового тестирования, скорее всего, вам следует продолжать использовать IP-адреса и избегать любых имен хостов, чтобы ограничить проблемы с подключением к серверу, а не к конкретному имени хоста.
-
Если вы хотите использовать имена хостов без изменения
hosts
для каждого устройства, вам нужно будет настроить локальный DNS-сервер (и соответственно настроить ваш маршрутизатор). -
Вы должны иметь записи
hosts
или DNS-записи, указывающие на ваш сервер для любых имен хостов, с которыми вы хотите получить доступ к этому серверу.
Apache
-
Убедитесь, что Apache работает на удаленном сервере.
-
Хотя это не предотвратит ответ Apache, если Apache не имеет виртуального хоста для данного имени хоста, он может вернуть либо страницу по умолчанию, либо, возможно, страницу с ошибкой.
-
Конфигурация вашего сервера Apache или его виртуальных хостов может ограничивать доступ с другого компьютера, поэтому дважды проверьте, чтобы не было директив, ограничивающих доступ к вашему серверу. Настройки любых директив
Require
– хорошее место для начала (значение для этих директив обычно должно бытьall granted
). -
Несоответствия или ошибки в ваших настройках
ServerRoot
иDocumentRoot
(а также в любых настройках директорииDocumentRoot
) вhttpd.conf
и/или любых настройкахDocumentRoot
/директории в данном виртуальном хосте могут вызывать ответы403 Forbidden
. -
Использование файлов
.htaccess
может ограничить доступ к серверу в зависимости от настроек в файлах. -
Убедитесь, что любые директивы
listen
(например, вhttpd.conf
) установлены на что-то вродеlisten 80
и/илиlisten 443
, а не напримерlisten 127.0.0.1:80
илиlisten 127.0.0.1:443
. Второй тип директив связывает Apache с прослушиванием только на127.0.0.1
/localhost
и он будет игнорировать запросы с любого компьютера, который не является сервером. -
Если вы настроили Apache на
listen
на портах, отличных от 80 или порта 443 (портов по умолчанию HTTP/HTTPS), вам нужно будет включить этот порт с IP-адресом или именем хоста (например,192.168.1.nn:8080
илиlocal-example:80
). -
Любые изменения в Apache требуют перезапуска Apache для того, чтобы эти изменения вступили в силу.
-
В Linux, на системах, основанных на Debian/Ubuntu, вам может понадобиться создать символические ссылки на любые файлы в вашей папке
sites-available
в папкуsites-enabled
перед перезапуском, чтобы они стали доступны.
Ответ или решение
Чтобы получить доступ к веб-сайтам, размещённым на другом локальном компьютере в вашей домашней сети с использованием Windows 10 и Apache, необходимо убедиться, что вы правильно настроили сетевое окружение, параметры Apache и настройки безопасности. Ниже приведены подробные шаги и рекомендации, которые помогут вам устранить возникшие проблемы.
Шаг 1: Проверка локальной сети
-
Убедитесь, что оба компьютера находятся в одной локальной сети.
- Проверьте IP-адреса. Например, если один компьютер имеет адрес
192.168.1.nn
, другой компьютер должен находиться в диапазоне192.168.1.x
(где x – любое число от 1 до 254, кроме nn). - Используйте команду
ipconfig
в командной строке Windows для проверки текущего IP-адреса и сетевой маски.
- Проверьте IP-адреса. Например, если один компьютер имеет адрес
-
Проверьте настройки DHCP на маршрутизаторе.
- Убедитесь, что маршрутизатор выделяет адреса в одном диапазоне и что они не конфликтуют с настройками статических IP-адресов ваших устройств.
Шаг 2: Настройки Apache
-
Проверьте, что Apache работает на сервере.
- Откройте командную строку на сервере и выполните команду
httpd -k start
для запуска Apache, если он не запущен. - Убедитесь, что веб-сервер Apache настроен на прослушивание внешних IP-адресов, а не только локального адреса. Для этого проверьте файл конфигурации Apache (
httpd.conf
) на наличие строки:Listen 80
- Измените её при необходимости, чтобы она не была ограничена только к локальному хосту (
Listen 127.0.0.1:80
).
- Откройте командную строку на сервере и выполните команду
-
Проверьте конфигурацию виртуальных хостов.
- Убедитесь, что в конфигурациях виртуальных хостов (если они используются) указаны правильные настройки доступа и правила. Например, в секции
<Directory>
должно быть указаноRequire all granted
.
- Убедитесь, что в конфигурациях виртуальных хостов (если они используются) указаны правильные настройки доступа и правила. Например, в секции
-
Перезапустите Apache после изменений.
- Не забывайте перезапускать сервер Apache после любых изменений в конфигурации, используя команду
httpd -k restart
.
- Не забывайте перезапускать сервер Apache после любых изменений в конфигурации, используя команду
Шаг 3: Настройки безопасности
-
Настройки брандмауэра.
- Откройте настройки брандмауэра Windows и проверьте, что входящие подключения на порту 80 разрешены.
- Вы можете временно отключить брандмауэр для тестирования, но обязательно включите его после завершения.
-
Проверьте наличие сторонних антивирусов/фаерволов.
- Убедитесь, что настройки антивирусных программ (например, Malwarebytes) не блокируют доступ к серверу. Добавьте IP-адрес сервера в список разрешенных.
Шаг 4: Тестирование подключения
-
Используйте IP-адрес для доступа.
- Откройте браузер на другом компьютере и введите
http://192.168.1.nn
(где nn — это ваш статический IP-адрес сервера). Если у вас настроен доступ на другом порту (например, 8080), указывайте его какhttp://192.168.1.nn:8080
.
- Откройте браузер на другом компьютере и введите
-
Избегайте использования localhost для внешних подключений.
- Помните, что
localhost
всегда указывает на локальный компьютер. Для доступа к серверу используйте его IP-адрес.
- Помните, что
Шаг 5: Дополнительные настройки (при необходимости)
-
Работа в виртуальных машинах.
- Если сервер развернут в виртуальной машине, убедитесь, что настройка сетевого адаптера правильная. Используйте режим "Bridged", чтобы позволить виртуальной машине действовать как отдельный компьютер в локальной сети.
-
Обновление настроек Hosts (если необходимо).
- Изменения в файле
hosts
применяются только на данном компьютере. Если вы хотите использовать имена вместо IP-адресов, добавьте соответствующие записи в файлhosts
на клиентских машинах.
- Изменения в файле
Следуя этим шагам, вы сможете установить надежное соединение для доступа к веб-сайтам, размещённым на другом компьютере в локальной сети, без предоставления доступа извне.