Публічний статичний ip для бродячого поля


13

У мене є сервер (Debian Squeeze) з 1 карткою Ethernet та 2 загальнодоступними статичними IP-адресами (188.120.245.4 та 188.120.244.5).

Що я хочу: встановіть віртуальну скриньку (Ubuntu) з доступом через статичний IP (188.120.244.5).

Що я намагався:

  • config.vm.forward_port - хороша ідея: налаштування інтерфейсу "eth1: 1" з 188.120.244.5 на хост-машині та додати до файлу Vagrant "config.vm.forward_port = hmm ..?"
  • config.vm.network: hostonly, "188.120.244.5" - не працює. Був створений новий інтерфейс на хост-машині з ip "188.120.244.1". Звичайно 188.120.244.1 IP не є моїм, і я не можу отримати доступ до свого сервера через цей IP.
  • config.vm.network: bridged - я збентежений, як це працює :)

Що у мене зараз: Не працює конфігурація.

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

Як я можу отримати доступ до віртуального вікна через загальнодоступний статичний IP з мережі?

Я використовую Oracle VM VirtualBox Manager 4.1.18 та Vagrant версії 1.0.3.

Заздалегідь дякую за відгуки.


Я з обережністю використовую бродягу із зовнішнім IP-адресою, особливо з провайдером virtualbox. stackoverflow.com/a/16919803/2109800
mc0e

Відповіді:


14

З моменту випуску 1.3.0:

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

Вам просто потрібно помістити цю конфігурацію у свій Vagrantfile (документація) :

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

Ця річ-бродяга справді чудова :-)


Тож я помічаю, що мій сервер DHCP не здається, що мій бродячий ящик справді на цьому ip: \
ThorSummoner

2

Через два тижні я вирішив своє питання таким чином:

Кухова книга створює Vagrantfile із шаблону:

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 повинен генерувати та застосовувати правила 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

І:

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

Тепер я можу встановлювати програми у вікно та підключатись до них через загальнодоступний статичний ip без встановлення "port_forwarding" (як на VPS).


0

Те, що вам справді потрібно, - це мостовий інтерфейс зі статичним IP-адресою. На жаль, бродяг ще не підтримує це (див. Обговорення тут ).

По-перше, встановіть box_config.vm.network: з'єднаний, як вам потрібен віртуальний ящик для створення мостового інтерфейсу, і ви можете видалити box_config.vm.network: hostonly.

Ви можете скористатися наданням оболонок для перенастроювання мережі за допомогою IP-адреси, але ви не можете змінити файл / etc / network / interfaces, або VM не зможе повернутися назад, якщо ви зупините бродячий і переконфігуруйте мережеві інтерфейси, і він згасне, якщо ви змінили цей файл).
Отже, альтернативою є створення сценарію в /etc/network/if-up.d/, який перенастроює IP для інтерфейсу. Не ідеально, але я ще не придумав кращого рішення!


Дивіться відповідні розділи конфігурації нижче. У скрипті bash слід встановити IP / мережну маску, шлюз та DNS (і номер інтерфейсу, якщо ваш інший, він повинен бути eth1, хоча якщо ви тільки що встановили мост у Vagrantfile).
Таким чином, при першому запущенні роботи, і він створює VM, він створює скрипт /etc/network/if-up.d/custom-network-config, який встановлює конфігурацію IP, маршрутизацію та перезапуск апаші (вам потрібно буде змінити це, якщо ви використовуєте інші сервіси, які покладаються на конфігурацію мережі), і він встановить DNS.
Тоді якщо ви знову зробите бродягу, коли VM вже існує (наприклад, після того, як зробив бродягу зупинку), це все, що потрібно зробити, це перезапустити мережеві інтерфейси, щоб запустити сценарій і налаштувати інтерфейс (чомусь я виявив, що сценарій не був натиснутий вимкнено, коли VM було ввімкнено та інтерфейси з'явилися спочатку - не знаю, чому).

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.