J'ai serveur (Squeeze debian) avec 1 carte Ethernet et 2 IPS statiques publiques (188.120.245.4 et 188.120.244.5).
Ce que je veux: la boîte virtuelle de configuration (Ubuntu) avec accès via une adresse IP statique (188.120.244.5).
Ce que j'essayais:
Ce que j'ai maintenant: ne fonctionne pas la configuration.
Debian-Host-machine# cat Vagrantfile
Vagrant::Config.run do |config|
config.vm.define :gitlab do |box_config|
box_config.vm.box = "ubuntu"
box_config.vm.Host_name = "ubuntu"
box_config.vm.network :bridged
box_config.vm.network :hostonly, "188.120.244.5", :auto_config => false
end
end
Debian-Host-machine# ifconfig
eth1 Link encap:Ethernet HWaddr 00:15:17:69:71:bb
inet addr:188.120.245.4 Bcast:188.120.247.255 Mask:255.255.248.0
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
vboxnet0 Link encap:Ethernet HWaddr 0a:00:27:00:00:00
inet addr:188.120.244.1 Bcast:188.120.246.255 Mask:255.255.255.0
Ubuntu-virtual-machine# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:ee:8d:0c
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
eth1 Link encap:Ethernet HWaddr 08:00:27:45:71:87
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
Comment puis-je accéder à une boîte virtuelle via une adresse IP statique publique du réseau?
J'utilise oracle VM VirtualBox Manager 4.1.18 et Version Vagrant 1.0.3.
Merci d'avance pour vos commentaires.
Depuis la libération 1.3.0:
Static IP can now be set on public networks. [GH-1745]
vous devez simplement mettre cette configuration dans votre VagrantFile (documentation) :
config.vm.network "public_network", ip: "192.168.0.200"
Cette chose vagabonde est vraiment géniale :-)
Après deux semaines, j'ai résolu ma question de cette façon:
Cookbook génère du VagrantFile à partir du modèle:
Vagrant::Config.run do |config|
config.vm.define :gitlab do |box_config|
box_config.vm.box = "mybox"
box_config.vm.Host_name = "mybox"
box_config.vm.forward_port 80, 4567
box_config.vm.forward_port 22, 2222
box_config.vm.network :hostonly, "192.168.5.10"
end
end
rebuild-iptables doit générer et appliquer des règles IPTABLES:
# /etc/iptables/general
*filter
:INPUT ACCEPT [0,0]
:FORWARD ACCEPT [0,0]
:OUTPUT ACCEPT [0,0]
# Vagrand boxes forwarding ports
-A FORWARD -p tcp -d 192.168.5.10 --dport 80 -j ACCEPT
-A FORWARD -p tcp -d 192.168.5.10 --dport 22 -j ACCEPT
COMMIT
*nat
:PREROUTING ACCEPT [0,0]
:POSTROUTING ACCEPT [0,0]
:OUTPUT ACCEPT [0,0]
# Nat all traffic to vagrant boxes
# For example, my vagrant box public static ip is 8.8.8.8
-A PREROUTING -d 8.8.8.8 -p tcp -j DNAT --to-destination 192.168.5.10
-A POSTROUTING -j MASQUERADE
COMMIT
Et:
echo '1' > /proc/sys/net/ipv4/ip_forward
Maintenant, je peux installer des applications à la case et les connecter à une adresse IP statique publique sans "Port_Forwarding" (comme sur VPS).
Ce dont vous avez vraiment besoin est une interface pontée avec une adresse IP statique. Malheureusement, Vagrant ne l'appuie pas encore (voir Discussion ici ).
Premièrement, SET BOX_CONFIG.VM.NETWORK: PONDÉE Comme vous avez besoin de VirtualBox pour créer une interface pontée et vous pouvez supprimer le BOX_CONFIG.VM.NETWORK: Hostonly.
Vous pouvez utiliser Shell provisioning pour reconfigurer le réseau avec votre adresse IP, mais vous ne pouvez pas modifier le fichier/etc/réseau/interfaces ou VM ne pourra pas revenir Jusqu'à si vous faites une halte vagabondée (faire en sorte que Vagrant Up, vous essaierez de reconfigurer les interfaces réseau et que cela meurt si vous avez modifié ce fichier).
Donc, l'alternative crée un script dans /etc/network/if-up.d/ qui redéfinit l'IP de l'interface. Pas idéal, mais je n'ai pas encore trouvé une meilleure solution!
[.____] Voir les sections pertinentes de la configuration ci-dessous. Sur le script Bash, vous devez définir la carte IP/Netmask, passerelle et DNS (et numéro d'interface, si le vôtre est différent, il devrait être de l'ETH1 si vous venez d'obtenir un ensemble ponté dans VagrantFile).
[.____] Alors, la première fois que vous faites vagabond et que cela crée le VM, il crée un script /etc/network/if-up.d/custom-network-config qui définit la configuration IP , routage et redémarrage Apache (vous devrez modifier cela si vous utilisez d'autres services qui s'appuient sur la configuration de réseautage), et il définit DNS.
[.____] alors si vous faites un vague à nouveau lorsque le VM existe déjà (par exemple après l'arrêt du vagabon), tout ce qu'il fait est redémarrer les interfaces réseau afin que le script soit exécuté et que l'interface est configurée (pour Une raison quelconque, j'ai trouvé que le script n'avait pas été lancé lorsque le VM a été activé et les interfaces sont arrivées initialement - je ne sais pas pourquoi).
VagrantFile
config.vm.network :bridged
config.vm.provision :Shell, :path => "vagrant-setup.sh"
vagrant-Setup.sh
#!/bin/bash
ip="188.120.244.5/24"
gateway=""
dns="8.8.8.8"
#####################
# NEW VM
#####################
if [ ! -f /etc/network/if-up.d/custom-network-config ]; then
cat >/etc/network/if-up.d/custom-network-config <<EOL
#!/bin/bash
if [ "\$IFACE" != "eth1" ]; then
exit 0
fi
ifconfig eth1 down
ifconfig eth1 ${ip} up
route del default
route add default gw ${gateway} dev eth1
service Apache2 restart
EOL
cat >/etc/resolv.conf <<EOL
nameserver ${dns}
EOL
chmod +x /etc/network/if-up.d/custom-network-config
/etc/init.d/networking restart
#####################
# EXISTING VM
#####################
else
/etc/init.d/networking restart
fi