流浪汉转发一系列端口


20

有没有办法使用流浪汉1.2.1或更高版本转发一系列端口?我知道您可以使用分别转发任何数量的端口

config.vm.forward_port 80, 4567

或者,答案仅仅是不使用流浪汉来做这样的事情吗?



不完全是。想知道是否可以指定要打开的端口范围,而不是一次指定一个范围。也许我会直接与作者联系。
橡子

4
由于Vagrantfile只是一个Ruby脚本,因此您可以编写一个for循环,为所需的每个端口执行config.vm.forward_port。我不太懂Ruby,所以我无法真正帮助您编写代码。
拉萨尔

Answers:


27

如果有人需要如何在Vagrantfile中执行循环的示例,则为:

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

上面的循环会将64000和65535之间的所有端口转发到客户机上的完全相同的端口(请注意,包括64000和65535)。


2
在我的计算机上,流浪者要映射1000个端口有点长。除非您确实需要这么多的映射端口,否则应该映射50个端口。
安托万2015年

@Antoine是的,我也注意到它也非常慢。我通常最终只使用10到20个开发箱。
ddelrio1986

极为缓慢,以检查在Windows上使用的端口,错误出曾经在命令行限制踢。
亚历山大牛逼

@AlexanderT您要转发多少个端口?
ddelrio1986 '18

@ ddelrio1986大约一千。
亚历山大T

2

上面的“ 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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.