IP statico pubblico per box vagabondo


13

Ho un server (Debian Squeeze) con 1 scheda ethernet e 2 IP statici pubblici (188.120.245.4 e 188.120.244.5).

Quello che voglio: Setup virtual box (Ubuntu) con accesso tramite IP statico (188.120.244.5).

Cosa stavo provando:

  • config.vm.forward_port - buona idea: imposta l'interfaccia "eth1: 1" con 188.120.244.5 sul computer host e aggiungi al file Vagrant "config.vm.forward_port = hmm ..?"
  • config.vm.network: hostonly, "188.120.244.5" - non funzionante. È stata creata una nuova interfaccia sul computer host con ip "188.120.244.1". Ovviamente 188.120.244.1 IP non è mio e non riesco ad accedere al mio server tramite questo IP.
  • config.vm.network: a ponte - Sono confuso su come funziona :)

Quello che ho ora: configurazione non funzionante.

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

Come posso accedere alla scatola virtuale tramite IP statico pubblico dalla rete?

Sto usando Oracle VM VirtualBox Manager 4.1.18 e Vagrant versione 1.0.3.

Grazie in anticipo per il vostro feedback.


Sono diffidente nell'utilizzare Vagrant con un IP accessibile dall'esterno, e in particolare con il provider di virtualbox. stackoverflow.com/a/16919803/2109800
mc0e

Risposte:


14

Dalla versione 1.3.0:

Static IP can now be set on public networks. [GH-1745]

devi solo inserire questa configurazione nel tuo Vagrantfile (documentazione) :

config.vm.network "public_network", ip: "192.168.0.200"

Questa cosa di Vagrant è davvero fantastica :-)


Quindi noto che il mio server DHCP non sembra pensare che il mio vagabondo sia davvero a
quell'ip

2

Dopo due settimane, ho risolto la mia domanda in questo modo:

Il ricettario genera Vagrantfile dal modello:

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 deve generare e applicare le regole di 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

E:

echo '1' > /proc/sys/net/ipv4/ip_forward

Ora, posso installare le applicazioni sulla scatola e collegarle ad un IP statico pubblico senza installazione "port_forwarding" (come su VPS).


0

Ciò di cui hai veramente bisogno è un'interfaccia a ponte con un IP statico. Sfortunatamente, Vagrant non lo supporta ancora (vedi la discussione qui ).

Innanzitutto, impostare box_config.vm.network: in parallelo poiché è necessario virtualbox per creare un'interfaccia in parallelo e rimuovere box_config.vm.network: hostonly.

È possibile utilizzare il provisioning della shell per riconfigurare la rete con il proprio IP, ma non è possibile modificare il file / etc / network / interfaces o la VM non sarà in grado di tornare indietro se si fa un arresto vagabondo (facendo il tentativo di vagabondare e riconfigurare le interfacce di rete, e muore se hai modificato quel file).
Quindi, l'alternativa è creare uno script in /etc/network/if-up.d/ che reimposta l'IP per l'interfaccia. Non è l'ideale, ma non ho ancora trovato una soluzione migliore!


Vedere le sezioni pertinenti della configurazione di seguito. Sullo script bash dovresti impostare IP / netmask, gateway e DNS (e il numero di interfaccia, se il tuo è diverso, dovrebbe essere eth1 anche se hai appena impostato il bridge in Vagrantfile).
Quindi, la prima volta che fai il vagabondo e crea la VM crea uno script /etc/network/if-up.d/custom-network-config che imposta la configurazione IP, il routing e riavvia apache (dovrai modificarlo se si utilizzano altri servizi che si basano sulla configurazione di rete) e imposta DNS.
Quindi se esegui nuovamente il vagabondaggio quando la VM esiste già (ad es. Dopo aver arrestato il vagabondo), tutto ciò che fa è riavviare le interfacce di rete in modo che lo script venga eseguito e l'interfaccia sia configurata (per qualche motivo, ho scoperto che lo script non è stato avviato spento quando la VM era accesa e le interfacce si presentavano inizialmente - non so perché).

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.