Вопрос или проблема
Я пытаюсь получить доступ к сайту на 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 для поисков новых исправлений и рекомендаций. Если у вас появятся дополнительные вопросы, пожалуйста, дайте знать, и я постараюсь помочь.