web-dev-qa-db-ja.com

浮浪者ボックスのパブリック静的IP

私は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を使用しています。

フィードバックをお寄せいただきありがとうございます。

13
Numbata

リリース1.3.0以降:

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

この設定をVagrantfileに追加するだけです (documentation)

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

この浮浪者のものは本当に素晴らしいです:-)

14
neves

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」設定なしで(VPSのように)パブリック静的IP経由でそれらに接続できます。

2
Numbata

本当に必要なのは、静的IPを持つブリッジインターフェイスです。残念ながら、vagrantはまだこれをサポートしていません(ディスカッション here を参照)。

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

シェルプロビジョニング を使用してIPでネットワークを再構成できますが、/ etc/network/interfacesファイルを変更できないか、VMを使用できませんvagrant haltを実行した場合に復帰する(vagrant upを実行すると、ネットワークインターフェイスが再構成され、そのファイルを変更した場合は終了します)。
そのため、代わりに、/ etc/network/if-up.d /にスクリプトを作成して、インターフェースのIPを再設定します。理想的ではありませんが、まだより良い解決策を思い付いていません!


以下の構成の関連セクションを参照してください。 bashスクリプトでは、IP /ネットマスク、ゲートウェイ、DNSを設定する必要があります(インターフェース番号。異なる場合はeth1にする必要がありますが、Vagrantfileでブリッジを設定しただけの場合)。
そのため、最初に浮浪者を実行すると、VMが作成されます。これは、/ etc/network/if-up.d/custom-network-configを設定するスクリプトを作成します。 IP構成、ルーティング、およびApacheの再起動(ネットワーク構成に依存する他のサービスを使用している場合は、これを変更する必要があります)、およびDNSを設定します。
VMが既に存在する場合に(たとえば、vagrant haltを実行した後)再度vagrant upを実行すると、ネットワークインターフェイスが再起動されるため、スクリプトが実行され、インターフェイスが構成されました(何らかの理由で、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
0
Demelziraptor