Конфигурация сети Virtualbox и Vagrant в Windows 8.1

Вопрос или проблема

Я пытаюсь получить доступ к сайту на vagrant box (Laravel Homestead) через порт 8000 на моем хосте, но он всегда выдает ошибку ERR_CONNECTION_REFUSED в Chrome и IE.

Я пробовал различные настройки, менял конфигурации хоста и гостя (NIC’и, брандмауэры и т.д.), но начинаю отчаянно паниковать! Я знаю, что у меня это получилось на машине с Windows 7 некоторое время назад, но сейчас не могу вспомнить, как я это сделал.

В любом случае, я постараюсь описать свою текущую домашнюю сеть, если это поможет. У меня есть два роутера A и B. Роутер A – это роутер от провайдера (ISP) и он имеет службу DHCP (192.168.1.50 – 192.168.1.254) и брандмауэр в средних настройках. Роутер B находится в моей спальне и подключается к роутеру A через Ethernet-кабель. У него отключен DHCP, а шлюз является IP адресом роутера A. Моя хостовая машина может подключаться к роутеру B через Ethernet или беспроводную сеть. На стороне роутеров я только пробовал отключать брандмауэры с помощью некоторых настроек.

Моя хостовая машина работает на Windows 8.1 64 бита, а гостевая ОС – Ubuntu Server 14.10 64 бита. Vagrant box настроил для меня сетевые интерфейсы (NIC). NIC 1 – это NAT с различными конфигурациями проброса портов (в частности ssh->2222->22, tcp8000->8000->80). NIC 2 – это только для хоста с IP-адресом 192.168.10.10, маска подсети 255.255.255.0.

Все работает нормально (SSH), пока я не пытаюсь получить доступ к уже настроенному сайту через порт 8000 в браузере хоста (http://192.168.10.10:8000). Всегда появляется эта ошибка.

Я проверил конфигурацию Virtualbox (изначально в vagrant или virtualbox была ошибка, где IP NIC 2 был неправильно установлен как 192.168.10.1, что я исправил позднее, но все равно безрезультатно). Я тестировал с другой маской подсети (255.255.0.0). Я отключил все брандмауэры роутера, проверил также брандмауэр Windows. Я гуглил все это повсюду. Пробовал разные IP-адреса в частной сети. Я редактировал конфигурационный файл etc/network/interfaces на госте, пытался выяснить или проверял: iptables, route -n, netstat -rn… Пинг работает от хоста к гостю и наоборот. Но telnet 192.168.10.10 8000 с машины хоста говорит, что соединение было отказано.

Я даже пробовал отключить свой Wi-Fi и подключить машину через Ethernet-кабель, хотя, поправьте меня, если я ошибаюсь, но моя домашняя сеть не должна иметь к этому никакого отношения, верно?

Я действительно начинаю терять надежду на это, это становится действительно удручающим!

Любая помощь будет крайне полезна!

У меня была точно такая же проблема минуту назад на двух компьютерах (Windows 8 и Windows 10), что я сделал: запустил “vagrant up && vagrant ssh”, далее:

netstat -ntlp | grep LISTEN

И сравнил это с кем-то на IRC-канале Laravel, первое, что привлекло мое внимание, это то, что в выводе netstat мне не хватало этой записи nginx:

tcp        0      0 0.0.0.0:80              0.0.0.0:*   4/nginx: worker

Что я делал неправильно, так это использовал команды vagrant (возможно, неправильно), поэтому что сработало для меня, так это использование команд homestead вместо:

homestead init
homestead up
homestead ssh
#homestead halt, homestead provision, homestead destroy и т.д.

ддерживайтесь этих команд, и у вас все получится, также удалите любые старые vagrant и homestead box’ы из ваших приложений virtualbox.

Если все прошло хорошо, localhost:8000 и 192.168.10.10 должны отображать: “Файл ввода не указан”

ИЗМЕНЕНИЕ 1: Я нашел, что проблемы связаны с Vagrantfile, даже если я выполнял:

rm Vagranfile
vagrant init laravel/homestead
vagrant up

Как-то конфигурация пропустила проброс портов и возможно еще много других конфигураций.

ИЗМЕНЕНИЕ 2: Я также выяснил, что “homestead ssh” кажется ошибочным и может вызвать проблемы с backspace, которые воспринимаются как пробелы, если эта проблема вас затрагивает, используйте следующую команду для входа в систему:

ssh vagrant@localhost -p 2222

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

Ответ или решение

Настройки сети VirtualBox и Vagrant на Windows 8.1 могут представлять собой сложную задачу, особенно при попытке доступа к веб-сайту на боксе Vagrant (Laravel Homestead) через порт 8000. Если вы сталкиваетесь с ошибкой ERR_CONNECTION_REFUSED в Google Chrome и Internet Explorer, это может быть связано с рядом причин, связанных с настройками сети, брандмауерами и конфигурацией Vagrant. Рассмотрим несколько возможных решений и подходов для устранения этой проблемы.

1. Проверьте настройки сети Vagrant:

При настройке сетевых адаптеров в VirtualBox для бокса Vagrant важно убедиться в правильной конфигурации. Часто используется комбинация NAT и Host-Only адаптеров:

  • NIC 1 (NAT): Этот адаптер используется для доступа к интернету с бокса. Важным аспектом здесь является правильная настройка перенаправления портов. Убедитесь, что порт 8000 на хосте перенаправлен на порт 80 на гостевой машине. Проверьте файл Vagrantfile на наличие строки конфигурации:

    config.vm.network "forwarded_port", guest: 80, host: 8000
  • NIC 2 (Host-Only): Этот адаптер позволяет хосту и гостевой машине обмениваться данными. IP-адрес должен быть установлен правильно, например, 192.168.10.10.

2. Проверка конфигурации брандмауэра:

Как на маршрутизаторе, так и на хост-машине могут быть установлены брандмауэры, которые блокируют доступ к порту 8000:

  • Отключите все брандмауэры на маршрутизаторах A и B, чтобы исключить их как возможную причину.
  • Проверьте настройки брандмауэра Windows 8.1 и убедитесь, что порт 8000 открыт для входящих и исходящих соединений.

3. Проверьте конфигурацию Laravel Homestead:

Судя по описанию, может возникнуть проблема с недостающими конфигурациями в Vagrantfile. Рекомендуется использовать команды Homestead, чтобы избежать ошибок:

  • Инициализируйте Homestead, используя:
    homestead init
  • Поднимите бокс с:
    homestead up
  • Зайдите в систему через:
    homestead ssh

4. Диагностика внутренней среды (Ubuntu Server):

После входа в Ubuntu Server с использованием homestead ssh выполните диагностику:

  • Проверьте, что Nginx или другой веб-сервер запущен и слушает на порте 80:
    netstat -ntlp | grep LISTEN
  • Убедитесь, что в списке присутствует запись для Nginx:
    tcp        0      0 0.0.0.0:80              0.0.0.0:*   4/nginx: worker

Если вы не видите этой записи, проверьте конфигурации веб-сервера и перезапустите его:

sudo service nginx restart

5. Устранение проблем с Vagrantfile:

Удаление и повторная инициализация Vagrantfile может помочь решить проблему с отсутствующими конфигурациями:

rm Vagrantfile
vagrant init laravel/homestead
vagrant up

Заключение:

В случае если вышеуказанные действия не решают проблему, стоит заново установить Laravel Homestead и убедиться, что все зависимости и конфигурации соответствуют вашей текущей версии ПО. Не забывайте проверять документацию и форумы Laravel для поисков новых исправлений и рекомендаций. Если у вас появятся дополнительные вопросы, пожалуйста, дайте знать, и я постараюсь помочь.

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

Капча загружается...