Port-Forwarding

Vagrant 轉發一系列埠

  • January 23, 2015

有沒有辦法使用 vagrant 1.2.1 或更高版本轉發一系列埠?我知道您可以使用單獨轉發任意數量的埠

config.vm.forward_port 80, 4567

或者,答案是否根本不使用 vagrant 來做這樣的事情?

如果有人需要一個如何在你的 Vagrantfile 中執行循環的範例,它是:

for i in 64000..65535
   config.vm.network :forwarded_port, guest: i, host: i
end

上述循環會將 64000 和 65535 之間的所有埠轉發到客戶機上完全相同的埠(請注意,包括 64000 和 65535)。

上面的“for”範例對於包含範圍是正確的。如果你想轉發一組特定的埠,你需要使用 Ruby 的 .each 操作符。

變數可以進入主 Vagrant.configure 循環的內部或外部。

UDP_PORTS_LIST={
 "5000" => 5000, # Some service
}

TCP_PORTS_LIST={
 "5900" => 5900, # VNC
}

循環需要進入您要為其映射的 VM 的 Vagrant.configure 塊(請記住,您可以在單個 Vagrantfile 中擁有多個 VM)。

UDP_PORTS_LIST.each do |guest, host|
 config.vm.network "forwarded_port", guest: "#{guest}", host: "#{host}", protocol: "udp"
end
TCP_PORTS_LIST.each do |guest, host|
 config.vm.network "forwarded_port", guest: "#{guest}", host: "#{host}", protocol: "tcp"
end

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