Mam serwer (Debian Squeeze) z 1 kartą Ethernet i 2 publicznymi statycznymi adresami IP (188.120.245.4 i 188.120.244.5).
Co chcę: skonfigurować wirtualną skrzynkę (Ubuntu) z dostępem przez statyczny adres IP (188.120.244.5).
Co próbowałem:
- config.vm.forward_port - dobry pomysł: interfejs instalacyjny „eth1: 1” z 188.120.244.5 na hoście i dodaj do pliku Vagrant „config.vm.forward_port = hmm ..?”
- config.vm.network: hostonly, „188.120.244.5” - nie działa. Został stworzony nowy interfejs na maszynie hosta z ip „188.120.244.1”. Oczywiście adres IP 188.120.244.1 nie jest mój i nie mogę uzyskać dostępu do mojego serwera za pośrednictwem tego adresu IP.
- config.vm.network: bridged - Nie wiem, jak to działa :)
Co mam teraz: Konfiguracja nie działa.
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
Jak mogę uzyskać dostęp do wirtualnego urządzenia za pośrednictwem publicznego statycznego adresu IP z sieci?
Używam Oracle VM VirtualBox Manager 4.1.18 i Vagrant w wersji 1.0.3.
Z góry dziękuję za opinię.
networking
routing
nat
vagrant
Numbata
źródło
źródło
Odpowiedzi:
Od wydania 1.3.0:
musisz tylko umieścić tę konfigurację w pliku Vagrantfile (dokumentacja) :
Ta włóczęga jest naprawdę świetna :-)
źródło
Po dwóch tygodniach rozwiązałem swoje pytanie w ten sposób:
Książka kucharska generuje plik Vagrantfile z szablonu:
rebuild-iptables musi wygenerować i zastosować reguły iptables:
I:
Teraz mogę zainstalować aplikacje w urządzeniu i połączyć się z nimi za pomocą publicznego statycznego adresu IP bez konfiguracji „port_forwarding” (jak w VPS).
źródło
To, czego naprawdę potrzebujesz, to zmostkowany interfejs ze statycznym adresem IP. Niestety włóczęga jeszcze tego nie popiera (patrz dyskusja tutaj ).
Po pierwsze, ustaw box_config.vm.network: zmostkowany, ponieważ potrzebujesz wirtualnej skrzynki, aby utworzyć zmostkowany interfejs, i możesz usunąć box_config.vm.network: hostonly.
Za pomocą aprowizacji można zrekonfigurować sieć za pomocą adresu IP, ale nie można zmodyfikować pliku / etc / network / interfaces, w przeciwnym razie maszyna wirtualna nie będzie mogła wrócić, jeśli zrobi się włóczęgowskie zatrzymanie (wykonanie włóczęgi spróbuje i ponownie skonfiguruj interfejsy sieciowe, i umrze, jeśli zmodyfikowałeś ten plik).
Alternatywą jest więc utworzenie skryptu w /etc/network/if-up.d/, który ponownie ustawia adres IP interfejsu. Nie jest to idealne rozwiązanie, ale nie znalazłem jeszcze lepszego rozwiązania!
Zobacz odpowiednie sekcje konfiguracji poniżej. W skrypcie bash powinieneś ustawić adres IP / maskę sieci, bramę i DNS (oraz numer interfejsu, jeśli twój jest inny, powinien to być eth1, jeśli właśnie ustawiłeś mostek w Vagrantfile).
Tak więc, kiedy po raz pierwszy robisz włóczęgę i tworzy ona maszynę wirtualną, tworzy skrypt /etc/network/if-up.d/custom-network-config, który ustawia konfigurację IP, routing i restartuje apache (musisz zmodyfikuj to, jeśli korzystasz z innych usług, które polegają na konfiguracji sieci), i ustawi DNS.
Następnie, jeśli wykonasz włóczęgę ponownie, gdy maszyna wirtualna już istnieje (np. Po zatrzymaniu włóczęgi), wystarczy zrestartować interfejsy sieciowe, aby skrypt został uruchomiony i interfejs został skonfigurowany (z jakiegoś powodu odkryłem, że skrypt nie został wykopany wyłączony, gdy maszyna wirtualna została włączona i interfejsy pojawiły się na początku - nie wiem, dlaczego).
Vagrantfile
vagrant-setup.sh
źródło