Vagrant Boxのパブリック静的IP


13

1つのイーサネットカードと2つのパブリック静的IP(188.120.245.4および188.120.244.5)を備えたサーバー(Debian Squeeze)があります。

欲しいもの:静的IP(188.120.244.5)経由のアクセスで仮想ボックス(Ubuntu)をセットアップします。

私が試していたこと:

  • config.vm.forward_port-良いアイデア:ホストマシンで188.120.244.5を使用してインターフェース「eth1:1」をセットアップし、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プロバイダーでvagrantを使用するのは慎重です。 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"

このVagrantは本当に素晴らしいです:-)


だから、私のDHCPサーバーは、私の浮浪者ボックスが本当にそのIPにあると考えていないように見えることに気付きます:\
ThorSummoner 14

2

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

これで、アプリケーションをボックスにインストールし、「port_forwarding」セットアップなしでパブリック静的IPを介して接続できます(VPSのように)。


0

本当に必要なのは、静的IPを備えたブリッジインターフェイスです。残念ながら、vagrantはまだこれをサポートしていません(こちらの説明をご覧ください)。

まず、virtualboxでブリッジインターフェイスを作成する必要があるため、box_config.vm.network:bridgedを設定し、box_config.vm.network:hostonlyを削除できます。

シェルプロビジョニングを使用してIPを使用してネットワークを再構成できますが、/ etc / network / interfacesファイルを変更することはできません。ネットワークインターフェースを再設定すると、そのファイルを変更した場合は停止します)。
そのため、別の方法として、/ etc / network / if-up.d /にインターフェイスのIPを再設定するスクリプトを作成します。理想的ではありませんが、私はまだより良い解決策を思いついていません!


以下の構成の関連セクションを参照してください。bashスクリプトでは、IP /ネットマスク、ゲートウェイ、およびDNSを設定する必要があります(また、インターフェイス番号が異なる場合は、Vagrantfileでブリッジされたばかりの場合はeth1にする必要があります)。
したがって、最初にvagrant upを実行してVMを作成すると、スクリプト/etc/network/if-up.d/custom-network-configが作成され、IP設定、ルーティング、およびApacheの再起動が設定されます(必要になります)ネットワーク設定に依存する他のサービスを使用している場合はこれを変更し、DNSを設定します。
その後、VMが既に存在するときに(たとえば、Vagrant Haltを実行した後)再びVagrantを実行すると、ネットワークインターフェイスが再起動され、スクリプトが実行され、インターフェイスが構成されます(何らかの理由で、スクリプトがキックされなかったことがわかりました) 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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.