web-dev-qa-db-fra.com

Impossible de se connecter au réseau privé Vagrant à partir de l'hôte

J'ai une boîte virtuelle vagabonde en place. Jusqu'à présent, je n'ai pas pu me connecter au serveur Web. voici la start up:

[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

sur ma console d’hôte, les rendements de l’adresse ip:

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

sur l'invité il cède:

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

Pour le moment, tout ce que je veux, c'est accéder au serveur Web de la machine virtuelle, quelle que soit la méthode choisie. J'ai essayé une variété de choses, tout en tirant dans le noir. Je serais heureux de fournir des informations spécifiques. Toute aide ou suggestion serait grandement appréciée

34
laertiades

Sur la base de la sortie fournie, la boîte a 2 interfaces réseau, 1 par défaut NAT et l’autre privé - demandez-vous dit.

La raison pour laquelle vous ne pouvez pas accéder au site Web hébergé dans le VM à travers l’interface privée: il se peut que cet hôte eth0 ou wlan0 L’adresse IP ne se trouve pas sur le même réseau que l’interface privée -> 192.168.50.4/24 et il n'y a pas de route.

Pour accéder au site hébergé par le serveur Web dans l'invité, vous disposez des options suivantes:

1. NAT redirection de port

Transférez le port Web, par exemple 80 vers l'hôte 8080 (vous ne pouvez pas utiliser 80 car il s'agit d'un port privilégié sur * NIX). Ajouter ce qui suit

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

REMARQUE: auto_correct résoudra les conflits de port si le port sur l'hôte est déjà utilisé.

Fait une vagrant reload et vous pourrez accéder au site via http://localhost:8080/

2. Réseau public (réseau VirtualBox Bridged)

Ajouter une interface réseau publique

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

Obtenez l'adresse IP de VM une fois qu'elle est opérationnelle, le transfert de port ne s'applique PAS aux réseaux en pont. Vous accéderez donc au site à l'aide de http://IP_ADDR, si dans VM il se lie à 80, sinon spécifiez le port.

42
Terry Wang

Une autre possibilité juste pour référence future.

Normalement, lorsque vous créez des ordinateurs virtuels utilisant un réseau privé, Vagrant (Virtualbox? Incertain) crée les entrées correspondantes dans la table de routage de l'hôte. Vous pouvez les voir en utilisant

netstat -rn

D'une manière ou d'une autre, mon hôte était entré dans un état où la création de machines virtuelles n'entraînait pas l'apparition de nouveaux itinéraires dans la table de routage, avec l'impossibilité correspondante de se connecter. Encore une fois, vous pouvez voir que les routes n'apparaissent pas à l'aide de la commande ci-dessus.

La création manuelle de l'itinéraire m'a permis d'atteindre les ordinateurs virtuels. Par exemple:

Sudo route -nv add -net 10.0.4 -interface vboxnet

(Remplacez le réseau et l'interface appropriés.) Mais je ne voulais pas avoir à faire cela.

Sur la base de cette question , j'ai essayé de redémarrer mon hôte et Vagrant a recommencé à créer automatiquement les entrées de la table de routage.

Je ne sais pas exactement quel était le problème, mais j'espère que cela aidera quelqu'un.

16
Willie Wheeler

Votre interface est en panne

J'ai eu le même problème. C'était mon interface vboxnet0 qui était en panne. Dans la liste de ip addr tu as <BROADCAST,MULTICAST> pour votre interface mais il devrait être <BROADCAST,MULTICAST,UP,LOWER_UP>.

Cela signifie que votre interface est en panne.

Vous pouvez confirmer avec Sudo ifconfig. L'interface ne sera pas affichée, mais si vous ajoutez -a Tu vas le voir : Sudo ifconfig -a.

comment l'élever

Donc, pour en parler, vous pouvez faire:

Sudo ifconfig vbox

OR

Sudo ip link set vboxnet0 up

Les deux fonctionne.

6
Mat'arangéÇa

J'ai fini par faire fonctionner le réseau privé en le supprimant dans Virtual Box. Quand je l'ai recréé à nouveau avec vagabond, la configuration ip est devenue:

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
3
laertiades

Vous pouvez également utiliser la redirection de port manuelle via SSH (tunneling SSH):

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

Cela lie le port de l'hôte 80 au VM le port 80 via votre session SSH vers la machine virtuelle.

3
Cees Timmerman

Cela peut ne pas s'appliquer exactement, mais "réseau privé" dans le titre m'a amené ici et d'autres pourraient en bénéficier qui essaient d'exécuter plusieurs boîtes d'invités sous Mac OS X:

J'utilise "private_network" et ne fais aucune redirection de port. I.e. J'accède à mes machines virtuelles par des hôtes tels que "project1.local", "project2.local".

Donc, j'ai été surpris quand j'ai essayé de lancer une deuxième boîte (un scotch/box ubuntu pour LAMP) et il a refusé de lancer avec une erreur (extrait ):

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

La solution proposée par le message d'erreur ne fonctionne pas. C'est à dire. ajoutez ceci à votre Vagrantfile:

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

Je ne suis pas sûr de savoir pourquoi cela se produit parce que j'ai déjà utilisé plusieurs fois auparavant (mais pas scotch/box). Le problème est que même si vous utilisez private_network, Vagrant utilise le transfert de port pour SSH.

La solution consiste à définir les ports SPÉCIFIQUEMENT POUR SSH en l'ajoutant à vos fichiers 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

Remarque: auto_correct peut faire fonctionner les numéros de port non uniques, mais je ne l’ai pas testé.

Maintenant, vous pouvez exécuter plusieurs ordinateurs virtuels en même temps en utilisant un réseau privé.

(Merci à Aaron Aaron et à son commentaire ici: https://groups.google.com/forum/#!topic/vagrant-up/HwqFegoCXOc )

2
Phreditor

Avait le même problème avec Arch (2017-01-01). J'ai dû installer net-tools: Sudo pacman -S net-tools

Virtual Box 5.1.12r112440, Vagrant 1.9.1.

1
Shane

Vous avez configuré un réseau privé pour votre machine à vagabond

Si cette adresse IP n’est pas visible, ssh s’applique à votre ordinateur de poche et lancez cette commande

Sudo /etc/init.d/networking restart

Cochez pour arrêter votre pare-feu et iptables aussi

1
selftaught91

J'ai eu un problème similaire sur mon Mac. VirtualBox utilise Host uniquement pour les réseaux privés. Pour utiliser un réseau interne, je devais ajouter ceci à la configuration du réseau privé:

"virtualbox__intnet: true"
1
Alfredo Baldoceda