Не удалось подключиться к частной сети Vagrant от хоста
У меня есть виртуальный бокс. До сих пор мне не удалось подключиться к веб-серверу. вот начало:
[[email protected] VVV-1.1]$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
default: Adapter 2: hostonly
==> default: Forwarding ports...
default: 22 => 2222 (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Connection timeout. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
default: The guest additions on this VM do not match the installed version of
default: VirtualBox! In most cases this is fine, but in rare cases it can
default: prevent things such as shared folders from working properly. If you see
default: shared folder errors, please make sure the guest additions within the
default: virtual machine match the version of VirtualBox you have installed on
default: your host and reload your VM.
default:
default: Guest Additions Version: 4.2.0
default: VirtualBox Version: 4.3
==> default: Setting hostname...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
default: /vagrant => /home/jesse/vagrant/vvvStable/VVV-1.1
default: /srv/www => /home/jesse/vagrant/vvvStable/VVV-1.1/www
default: /srv/config => /home/jesse/vagrant/vvvStable/VVV-1.1/config
default: /srv/database => /home/jesse/vagrant/vvvStable/VVV-1.1/database
default: /var/lib/mysql => /home/jesse/vagrant/vvvStable/VVV-1.1/database/data
==> default: VM already provisioned. Run `vagrant provision` or use `--provision` to force it
==> default: Checking for host entries
на моей консоли хоста, ip addr show yields:
4: vboxnet0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff
5: vboxnet1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 0a:00:27:00:00:01 brd ff:ff:ff:ff:ff:ff
у гостя, который он дает:
[email protected]:~$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:12:96:98 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
inet6 fe80::a00:27ff:fe12:9698/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:2c:d4:3e brd ff:ff:ff:ff:ff:ff
inet 192.168.50.4/24 brd 192.168.50.255 scope global eth1
Пока, все, что я хочу сделать, это доступ к веб-серверу на виртуальной машине, независимо от того, как это работает. Я пробовал разные вещи, просто снимая в темноте. Я был бы рад предоставить любую конкретную информацию. Любая помощь или предложения были бы с благодарностью
Ответы
Ответ 1
На основе предоставленного вывода в коробке есть 2 сетевых интерфейса, 1 - NAT по умолчанию, а другой частный - спросите вас.
Причина, по которой вы не можете получить доступ к веб-сайту, размещенному внутри виртуальной машины через частный интерфейс: может быть, что IP-адрес хоста eth0
или wlan0
не находится в той же сети, что и частный интерфейс → 192.168.50.4/24
и маршрут отсутствует.
Чтобы получить доступ к сайту, размещенному веб-сервером в гостевой системе, у вас есть следующие возможности:
1. Передача портов NAT
Переслать веб-порт, например. 80 для размещения 8080 (вы не можете использовать 80, потому что это привилегированный порт на * NIX). Добавьте следующий
Vagrant.configure("2") do |config|
config.vm.network "forwarded_port", guest: 80, host: 8080,
auto_correct: true
end
ПРИМЕЧАНИЕ. auto_correct разрешает конфликты портов, если порт на хосте уже используется.
DO a vagrant reload
, и вы сможете получить доступ к сайту через http://localhost:8080/
2. Открытая сеть (сеть с поддержкой VirtualBox)
Добавить сетевой интерфейс
Vagrant.configure("2") do |config|
config.vm.network "public_network"
end
Получите IP-адрес виртуальной машины после ее запуска и запуска, перенаправление портов НЕ применяется к сети с мостом. Таким образом, вы будете получать доступ к сайту с помощью http://IP_ADDR
, если в пределах VM он связывается с 80, иначе укажите порт.
Ответ 2
Еще одна возможность для дальнейшего использования.
Обычно, когда вы создаете виртуальные машины с использованием частных сетей, Vagrant (Virtualbox? not sure) создает соответствующие записи в таблице маршрутизации хоста. Вы можете увидеть их, используя
netstat -rn
Как-то мой хост попал в состояние, когда создание виртуальных машин не привело к появлению новых маршрутов в таблице маршрутизации с соответствующей невозможностью подключения. Снова вы можете увидеть маршруты, не появляющиеся с помощью указанной выше команды.
Создание маршрута вручную позволило мне достичь виртуальных машин. Например:
sudo route -nv add -net 10.0.4 -interface vboxnet
(Замените соответствующую сеть и интерфейс.) Но я не хотел этого делать.
Основываясь на этом вопросе, я попытался перезапустить мой хост, и Vagrant начал автоматически создавать записи таблицы маршрутизации снова.
Не уверен, в чем проблема, но, надеюсь, это помогает кому-то.
Ответ 3
Ваш интерфейс не работает
У меня была такая же проблема. Это был мой интерфейс vboxnet0, который был отключен. В листинге ip addr
у вас есть <BROADCAST,MULTICAST>
для вашего интерфейса, но он должен быть <BROADCAST,MULTICAST,UP,LOWER_UP>
.
Это означает, что интерфейс не работает.
Вы можете подтвердить с помощью sudo ifconfig
. Интерфейс не будет отображаться, но если вы добавите -a
, вы увидите его: sudo ifconfig -a
.
как его поднять
Итак, чтобы поднять его, вы можете сделать:
sudo ifconfig vbox
ИЛИ
sudo ip link set vboxnet0 up
Оба работают.
Ответ 4
Я закончил работу частной сети, удалив ее в Virtual Box. Когда я снова воссоздал его с бродячим вверх, ip config стал:
vboxnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
link/ether 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff
inet 192.168.50.1/24 brd 192.168.50.255 scope global vboxnet0
valid_lft forever preferred_lft forever
Ответ 5
В качестве альтернативы вы можете использовать ручную переадресацию портов через SSH (SSH-туннелирование):
ssh -L 80:127.0.0.1:80 [email protected] -p 2222
Это связывает хост-порт 80 с портом 80 VM через ваш сеанс SSH для виртуальной машины.
Ответ 6
У меня была аналогичная проблема на моем Mac. VirtualBox использует хост только для частных сетей. Для использования в качестве внутренней сети мне пришлось добавить это в конфигурацию частной сети:
"virtualbox__intnet: true"
Ответ 7
Это может быть не совсем точно, но "частная сеть" в названии привела меня сюда, а другие могут выиграть, которые пытаются запустить несколько гостевых полей в Mac OS X:
Я использую "private_network" и не выполняю никакой переадресации портов. I.e. Я обращаюсь к своим виртуальным машинам с помощью хостов, таких как "project1.local", "project2.local".
Итак, я был удивлен, когда попытался запустить второй ящик (scotch/box ubuntu для LAMP) и он отказался запускать с ошибкой (выдержка):
"...The forwarded port to 2222 is already in use on the host machine..."
Предлагаемое решение об ошибке не работает. То есть добавьте это в свой Vagrantfile:
config.vm.network :forwarded_port, guest: 22, host: 1234
#Where 1234 would be a different port.
Я не уверен, почему это происходит, потому что раньше я использовал кратность (но не scotch/box). Проблема в том, что даже если вы используете private_network, Vagrant использует переадресацию портов для SSH.
Решение состоит в том, чтобы установить порты SPECIFICALLY FOR SSH, добавив это в ваши бродячие файлы:
# Specify SSH config explicitly with unique host port for each box
config.vm.network :forwarded_port,
guest: 22,
host: 1234,
id: "ssh",
auto_correct: true
Примечание: auto_correct может создавать неисторические порты #, но я не тестировал это.
Теперь вы можете запускать несколько виртуальных машин одновременно с помощью частной сети.
(Спасибо Аарону Аарону и его публикации здесь: https://groups.google.com/forum/#!topic/vagrant-up/HwqFegoCXOc)
Ответ 8
Имел ту же проблему с Arch (2017-01-01). Придется установить net-tools
: sudo pacman -S net-tools
Виртуальная вставка 5.1.12r112440, Vagrant 1.9.1.
Ответ 9
Вы установили частную сеть для своей бродяжной машины
Если этот ip не отображается, то ssh на ваш бродячий автомат и запустите эту команду
sudo /etc/init.d/networking restart
Проверьте, чтобы остановить брандмауэр и iptables.