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

Внутренний IP-адрес моей машины - 192.168.1.66, он назначен мной вручную с маршрутизатора.
DMZ настроен, поэтому 192.168.1.66 должен быть полностью открыт для экстрасети.

Однако Apache даже не отвечает из интранета.
Доступ к http://localhost/app показывает мне установку XAMPP, а http://192.168.1.66/app - нет.

Среда является полностью стандартной установкой XAMPP под Windows. Я ничего не изменил, я только добавил веб-приложение в документ.
Httpd.conf имеет значение по умолчанию «Listen 80», так что это не должно быть проблемой.
Я попытался полностью отключить брандмауэр Windows, но безуспешно.

Я также понятия не имею, нормально ли это, но 'netstat -a' показывает несколько записей для порта 80 как такового:

TCP    [::]:80                DESKTOP-DVN0SQB:0      LISTENING  
TCP    192.168.1.66:80        DESKTOP-DVN0SQB:0      LISTENING  
TCP    0.0.0.0:80             DESKTOP-DVN0SQB:0      LISTENING 

Netstat также показывает мне IP-адрес, который я не распознаю, 192.168.56.1. Меня сбивает с толку то, что я пытался получить к нему доступ, и, как ни странно, мое приложение можно найти по адресу http://192.168.56.1/app. Но это, кажется, локальный адрес, потому что я не могу получить к нему доступ с любого устройства в интрасети.

Что дает? Что это за адрес 192.168.56.1? Я помню, как видел похожий адрес, когда играл с Vagrant несколько дней назад, это могло быть связано? У меня больше нет Vagrant VM, я уничтожил их все (на случай, если это может быть связано).

И самое главное: почему я не могу получить доступ к Apache из интрасети? Потому что это определенно мешает мне получить доступ к нему из экстрасети.

2 ответа2

1

[W] Почему я не могу получить доступ к Apache из интрасети?

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

Для ясности, 192.168.1.x и 192.168.56.x в этом случае являются отдельными сетями (при условии, что стандартная маска подсети класса C равна 255.255.255.0).

Адрес, который использует Apache (192.168.56.1), скорее всего, является IP-адресом по умолчанию для виртуального сетевого адаптера, используемого для виртуальных машин. Apache, похоже, выбрал этот адаптер /IP в ответ на общую директиву Listen 80 (как вы упоминали).

Я помню, как видел похожий адрес, когда играл с Vagrant несколько дней назад, это могло быть связано?

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

Если вы определенно не используете этот виртуальный сетевой адаптер, вы можете удалить его полностью.

В любом случае вы можете привязать Apache (при необходимости) к указанному IP в httpd.conf с помощью более конкретной директивы Listen, например:

Listen 192.168.1.66:80

Пожалуйста, обратите внимание, поскольку вы сделали комментарии о Vagrant, я предполагаю, что ваш сервер / приложение не работает на виртуальной машине. Если это так (возможно, вы используете вместо этого VirtualBox), вам нужно настроить параметры виртуальной машины, чтобы сделать ее доступной для внутренней сети.

0

Как вы сказали, http://localhost/app распознается во внутренней сети. Проблема связана с IPv4, на котором в данный момент запущено приложение, поэтому попробуйте это проверить. Я не знаю, какое приложение вы используете, но там должен быть файл config.php, в котором вы можете установить доверенный домен, к которому можно получить доступ.

Кроме того, я сомневаюсь, что к такому общему IPv4 (192.168.1.66) можно получить доступ отовсюду: я не знаю всей вашей конфигурации сети, но должен иметь динамический IP, назначенный глобально, а указанный адрес является только локальным.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .