Подтвердить что ты не робот

Не удалось подключиться к частной сети 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

Пока, все, что я хочу сделать, это доступ к веб-серверу на виртуальной машине, независимо от того, как это работает. Я пробовал разные вещи, просто снимая в темноте. Я был бы рад предоставить любую конкретную информацию. Любая помощь или предложения были бы с благодарностью

4b9b3361

Ответ 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.