คนจรจัดส่งต่อช่วงของพอร์ต


20

มีวิธีการส่งต่อช่วงของพอร์ตโดยใช้คนเร่ร่อน 1.2.1 หรือสูงกว่า? ฉันรู้ว่าคุณสามารถส่งต่อพอร์ตจำนวนเท่าใดก็ได้โดยใช้

config.vm.forward_port 80, 4567

หรือคำตอบคืออย่าใช้คนเร่ร่อนทำสิ่งนั้น?


สิ่งนี้ช่วยได้ไหม? docs.vagrantup.com/v2/networking/forwarded_ports.html
dawud

ไม่แน่นอน ต้องการทราบว่าคุณสามารถระบุช่วงของพอร์ตที่จะเปิดมากกว่าหนึ่งครั้ง บางทีฉันจะติดต่อผู้เขียนโดยตรง
โอ๊ก

4
เนื่องจาก Vagrantfile เป็นเพียงสคริปต์ Ruby คุณอาจสามารถเขียน a for loop ที่เรียกใช้งาน config.vm.forward_port สำหรับทุกพอร์ตที่คุณต้องการ ฉันไม่เชี่ยวชาญใน Ruby ดังนั้นฉันจึงไม่สามารถช่วยคุณเกี่ยวกับรหัสได้
Lasar

คำตอบ:


27

หากใครต้องการตัวอย่างของวิธีการวนรอบในไฟล์ Vagrant ของคุณที่นี่ก็คือ:

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

วนรอบด้านบนจะส่งต่อพอร์ตทั้งหมดระหว่าง 64000 ถึง 65535 ไปยังพอร์ตเดียวกันบนแขก (โปรดทราบว่ารวม 64000 และ 65535)


2
ที่คนจรจัดในคอมพิวเตอร์ของฉันใช้เวลาในการแมปพอร์ต 1,000 บิต หากคุณไม่ต้องการพอร์ตที่แมปจำนวนมากคุณควรแมป 50 พอร์ต
แอนทอน

@ ถึงใช่ฉันได้สังเกตเห็นว่ามันช้ามากเช่นกัน ปกติแล้วฉันจะใช้ 10 ถึง 20 ในการพัฒนากล่อง
ddelrio1986

ช้ามากในการตรวจสอบพอร์ตที่ใช้บน windows ข้อผิดพลาดออกไปเมื่อข้อ จำกัด ของบรรทัดคำสั่งเริ่มขึ้น
Alexander T

@AlexanderT คุณพยายามส่งต่อพอร์ตกี่พอร์ต?
ddelrio1986

@ ddelrio1986 ประมาณหนึ่งพัน
Alexander T

2

ตัวอย่าง 'สำหรับ' ด้านบนนั้นถูกต้องสำหรับการทำช่วงแบบรวม หากคุณต้องการส่งต่อชุดพอร์ตเฉพาะคุณต้องใช้ตัวดำเนินการ Ruby .each

ตัวแปรสามารถเข้าไปด้านในหรือด้านนอกของวนรอบ Vagrant.configure หลัก

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

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

ลูปจำเป็นต้องเข้าไปใน Vagrant.configure block สำหรับ VM ที่คุณต้องการแมปไว้ (จำไว้ว่าคุณสามารถมี VM ได้หลายอันใน Vagrantfile ไฟล์เดียว)

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.