Nie można połączyć się z siecią prywatną Vagrant z hosta

Mam wirtualną skrzynkę Włóczęgów. Do tej pory nie udało mi się połączyć z serwerem WWW. oto początek:

[jesse@Athens 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

Na mojej konsoli hosta, IP addr pokazuje:

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

Na gościa daje:

vagrant@vvv:~$ 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
Na razie chcę tylko uzyskać dostęp do serwera na maszynie wirtualnej, niezależnie od tego, jak to działa. Próbowałem różnych rzeczy, po prostu strzelając w ciemności. Chętnie podam wszelkie konkretne informacje. Wszelka pomoc lub sugestie będą wielce doceniane
Author: laertiades, 2014-05-06

9 answers

Na podstawie dostarczonego wyjścia, Skrzynka ma 2 interfejsy sieciowe, 1 jest domyślnym NAT, a drugi prywatny-pytaj, o którym mówiłeś.

Powód, dla którego nie możesz uzyskać dostępu do witryny internetowej hostowanej w maszynie wirtualnej przez prywatny interfejs: może być tak, że adres IP hosta eth0 lub wlan0 nie jest w tej samej sieci co prywatny interfejs -> 192.168.50.4/24 i nie ma trasy.

Aby uzyskać dostęp do witryny hostowanej przez serwer WWW w ramach gościa, masz następujące opcje:

1. Przekazywanie portów NAT

Przenieś port sieci web, np. 80 do 8080 hosta (nie możesz użyć 80, ponieważ jest to uprzywilejowany port na *NIX). Dodaj następujący

Vagrant.configure("2") do |config|
  config.vm.network "forwarded_port", guest: 80, host: 8080,
    auto_correct: true
end

Uwaga: auto_correct rozwiąże konflikty portów, jeśli port na hoście jest już używany.

Zrób vagrant reload, a będziesz mógł uzyskać dostęp do strony za pośrednictwem http://localhost:8080/

2. Sieć publiczna (VirtualBox Bridged networking)

Dodaj publiczny interfejs sieciowy

Vagrant.configure("2") do |config|
  config.vm.network "public_network"
end

Get adres IP maszyny wirtualnej po jej uruchomieniu przekierowanie portów nie ma zastosowania do sieci pomostowych. Więc będziesz uzyskiwać dostęp do witryny za pomocą http://IP_ADDR, jeśli w maszynie wirtualnej wiąże się ona z 80, w przeciwnym razie podaj port.

 39
Author: Terry Wang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-07 04:18:07

Jeszcze jedna możliwość.

Zwykle podczas tworzenia maszyn wirtualnych przy użyciu sieci prywatnej, Vagrant (Virtualbox? not sure) tworzy odpowiednie wpisy w tablicy routingu hosta. Możesz je zobaczyć używając

netstat -rn

W jakiś sposób mój host dostał się do stanu, w którym tworzenie maszyn wirtualnych nie skutkowało pojawieniem się nowych tras w tabeli routingu, z odpowiednią niemożnością połączenia. Ponownie możesz zobaczyć trasy nie pojawiające się za pomocą polecenia powyżej.

Ręczne utworzenie trasy pozwoliło mi dotrzeć do maszyn wirtualnych. Na przykład:

sudo route -nv add -net 10.0.4 -interface vboxnet

(Zastąp odpowiednią sieć i interfejs.), Ale nie chciałem tego robić.

Na podstawie tego pytania , próbowałem ponownie uruchomić mój host i Vagrant zaczął automatycznie tworzyć wpisy tabeli routingu ponownie.

Nie wiem dokładnie o co chodzi, ale mam nadzieję, że to komuś pomoże.
 13
Author: Willie Wheeler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-13 12:13:38

Twój interfejs nie działa

Miałem ten sam problem. To był mój interfejs vboxnet0, który był wyłączony. W liście ip addr masz <BROADCAST,MULTICAST> dla swojego interfejsu, ale powinien to być <BROADCAST,MULTICAST,UP,LOWER_UP>.

To znaczy, że interfejs jest wyłączony.

Możesz potwierdzić za pomocą sudo ifconfig. Interfejs nie zostanie wyświetlony, ale jeśli dodasz -a zobaczysz go: sudo ifconfig -a.

Jak to poruszyć

Więc aby to poruszyć, możesz zrobić:

sudo ifconfig vbox

Lub

sudo ip link set vboxnet0 up

Obie działa.

 5
Author: Mat'arangéÇa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-27 13:35:44

Udało mi się również uruchomić prywatną sieć, usuwając ją w wirtualnym oknie. Kiedy odtworzyłem go ponownie z Vagrant up, konfiguracja ip stała się:

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
 2
Author: laertiades,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-08 19:55:48

Alternatywnie możesz użyć ręcznego przekierowania portów przez SSH (tunelowanie SSH):

ssh -L 80:127.0.0.1:80 [email protected] -p 2222

Łączy port hosta 80 Z portem maszyny wirtualnej 80 poprzez sesję SSH z maszyną wirtualną.

 2
Author: Cees Timmerman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-09 12:16:10

Miałem podobny problem na moim Macu. VirtualBox używa hosta tylko dla sieci prywatnych. Aby używać jako sieci wewnętrznej musiałem dodać to do konfiguracji sieci prywatnej:

"virtualbox__intnet: true"
 1
Author: Alfredo Baldoceda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-09 22:10:47

To może nie dotyczyć dokładnie, ale" sieć prywatna " w tytule przyniósł mnie tutaj i inni mogą skorzystać, które próbują uruchomić wiele skrzynek gości na Mac OS X:

Używam "private_network" i nie robię żadnego przekierowania portów. tzn. uzyskuję dostęp do moich maszyn wirtualnych przez hosty typu " project1.lokalne", " projekt2.lokalne".

Więc byłem zaskoczony, gdy próbowałem uruchomić drugi box (scotch/box ubuntu dla LAMP) i odmówił uruchomienia z błędem (fragment):

"...The forwarded port to 2222 is already in use on the host machine..."

The proponowane rozwiązanie Komunikatu o błędzie nie działa. Czyli dodaj to do swojego Vagrantfile:

config.vm.network :forwarded_port, guest: 22, host: 1234
#Where 1234 would be a different port.

Nie jestem pewien, dlaczego tak się dzieje, ponieważ wcześniej uruchamiałem wielokrotności(ale nie scotch / box). Problem polega na tym, że nawet jeśli używasz private_network, Vagrant używa przekierowania portów dla SSH.

Rozwiązaniem jest ustawienie portów specjalnie dla SSH poprzez dodanie tego do plików Vagrant:

# 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

Uwaga: auto_correct może sprawić, że nie-unikalny port #s będzie działał, ale tego nie testowałem.

Teraz możesz uruchamiaj wiele maszyn wirtualnych jednocześnie przy użyciu sieci prywatnej.

(dzięki Aaronowi Aaronowi i jego wpisowi tutaj: https://groups.google.com/forum/#! topic / vagrant-up / HwqFegoCXOc )

 1
Author: Phreditor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-17 15:27:47

Miał ten sam problem z Arch (2017-01-01). Musiał zainstalować net-tools: sudo pacman -S net-tools

Virtual Box 5.1.12r112440, Vagrant 1.9.1.

 1
Author: Shane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-17 07:52:46

Ustawiłeś prywatną sieć dla swojej maszyny vagrant

Jeśli ten ip nie jest widoczny to ssh na twoją maszynę vagrant i odpal to polecenie

sudo /etc/init.d/networking restart

Sprawdź, aby zatrzymać również firewall i iptables

 1
Author: selftaught91,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-25 19:46:20