Networking

vagrant box 的公共靜態 IP

  • October 13, 2018

我有帶有 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 版。

提前感謝您的回饋。

自 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"

這個流浪的東西真的很棒:-)

兩週後,我以這種方式解決了我的問題:

Cookbook 從模板生成 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 上一樣)。

引用自:https://serverfault.com/questions/418422