จริงๆแล้วมีเหตุผลที่ดีมากมายที่จะใช้ NAT กับ VMs ของคุณแทนที่จะเชื่อมต่ออินเตอร์เฟซ .. (นี่เป็นคำถามเก่า แต่มันเกิดขึ้นเมื่อผลลัพธ์แรกของฉันค้นหาวิธีการนี้คือการย้ายจาก VirtualBox ที่ฉันทำ มันตลอดเวลาดังนั้นฉันคิดว่ามันมีมูลค่าเพิ่ม)
เหตุผลสองสามข้อในการใช้ NAT คือ:
- ง่ายและพกพาได้
- หากคุณใช้ LAN ของลูกค้าที่ต้องการที่อยู่ MAC ที่รู้จักเพื่อรับ IP (ไม่เช่นนั้นคุณต้องลองเดาสิ่งที่ไม่ได้ใช้งานและเสี่ยงต่อความขัดแย้งและมักจะดึงความสนใจของคุณ :))
- สิ่งต่าง ๆ เช่นการอนุญาตให้ VMs ของคุณใช้พร็อกซีเซิร์ฟเวอร์เดียวบนโฮสต์ของคุณ (IE หากคุณไม่ได้ควบคุมเครือข่ายที่คุณเปิดอยู่) หรือสามารถไฟร์วอลล์ / กรองทราฟฟิกออกอากาศ (windows ฯลฯ ) ได้ สถานที่ที่สะดวก
- ความสามารถในการกำหนด IP คงที่หรือสำรองไว้เพื่อให้คุณสามารถอ้างอิงได้โดยใช้ชื่อ / IP จากนอกโฮสต์ (อีกครั้งหากคุณไม่สามารถรับการจองบนเครือข่ายด้วยอินเทอร์เฟซบริดจ์)
- แต่ที่สำคัญที่สุดคือช่วยให้คุณสามารถซ่อนอยู่หลังการกำหนดค่าไฟร์วอลล์เดียวบนโฮสต์ของคุณและแบ่งปันสิ่งต่าง ๆ ระหว่างคุณ / พวกเขาในวิธีที่ได้รับการป้องกันมากกว่าการเปิดเผย VM ทุกตัวให้เป็น "เสริม" และต้องปกป้องพวกเขาทั้งหมด .. เหมือนกับที่คุณทำกับโมเด็มอินเทอร์เน็ต / เราเตอร์
อย่างไรก็ตามสำหรับกรณีของฉัน (VMWare Workstation 10, โฮสต์ Linux, OS X Guest) และทุกคนที่สะดุดกับเรื่องนี้นี่เป็นภาพรวมของสิ่งที่ได้ผลสำหรับฉัน นอกเหนือจาก waffling และ what-ifs มีเพียง 3 ขั้นตอนหลักเท่านั้น
- ดังนั้นก่อนอื่นคุณต้องตัดสินใจเลือกสิ่งที่คุณต้องการอนุญาตให้ VM / แขกของคุณจาก "นอก" ของโฮสต์ของคุณ (หมายเหตุดังต่อไปนี้คุณจะสามารถเข้าถึงได้อย่างง่ายดายจากโฮสต์เอง) การเดิมพันที่ปลอดภัยจะเป็นการเปิดเผย / อนุญาตเฉพาะ SSH (พอร์ต 22) ไปยังเครื่องในเครือข่ายย่อยของคุณ คุณสามารถอนุญาตพอร์ต 80/443 หากคุณมีเว็บเซิร์ฟเวอร์บน VM และอื่น ๆ และคุณยังสามารถใช้ "อุโมงค์" เพื่อเข้าถึงบริการอื่น ๆ โดยใช้ SSH (จะยกตัวอย่างด้านล่าง) และใช้ FUSE / SSHFS เพื่อให้โฮสต์ของคุณ การเข้าถึงระบบไฟล์ .. (หรือสิ่งอำนวยความสะดวกโฟลเดอร์ที่แชร์ใน VMWare แต่ฉันยังไม่ได้ใช้)
ดังนั้นความคิดจึงเป็นเช่น: "อนุญาตสิ่งต่าง ๆ บนเครือข่ายท้องถิ่นของฉัน (เช่น 10.1.1.0/24 หรือ 192.168.1.0/24) เพื่อเชื่อมต่อกับพอร์ต 22222 บนโฮสต์ซึ่งเราจะส่งต่อไปยังพอร์ต 22 ของ แขกพิเศษ ". ต้องเป็นแขกที่แน่นอน (ซึ่งจะทำให้สามารถกำหนดค่า IP ของคุณทั้งหมดมีประโยชน์มากขึ้นและคุณสามารถเปลี่ยนได้ทั้งหมดในที่เดียวโดยไม่ต้องเปิด VM แต่ละตัว) เช่นเดียวกับที่ทำผ่านเราเตอร์อินเทอร์เน็ตของคุณเพื่อให้เกมต่างๆ ผ่าน ฯลฯ
ดังนั้นเมื่อเสร็จสิ้นคุณสามารถใช้แล็ปท็อปหรือเครื่องอื่น ๆ บน LAN ไปยังเวิร์กสเตชันของคุณ (โฮสต์ vmware) ใน 22222 และคุณจะถูกกระรอกไปยังแขกที่คุณบอกให้ส่งต่อให้คุณ ดังที่กล่าวไว้ข้างต้นถ้าคุณบอกว่าต้องการเชื่อมต่อกับเซิร์ฟเวอร์ postgres บนเกสต์ (หรือเซิร์ฟเวอร์ vnc ซึ่งมักจะไม่เข้ารหัส) คุณสามารถสร้างช่องสัญญาณในคำสั่งเดียวกัน (แทนที่จะเพิ่มไปยัง dhcp conf) สำหรับเช่น
console ~> ssh root@hostip -p 22222 -L 54320:localhost:5432
และคุณจะถูกส่งต่อไปยังแขกผ่านทางไอพีไปข้างหน้าใน vmware และสามารถชี้เครื่องมือ pgadmin3 ของคุณไปที่ localhost: 54320 (ไม่ใช่แบบพิเศษ) บนแล็ปท็อปของคุณและการจราจรบนเครือข่ายของคุณจะถูกเข้ารหัส (หมายเหตุ 'localhost' มีการส่งต่อไปยังแขกแล้ว)
หมายเหตุ
- มีหลายวิธีที่จะทำสิ่งนี้ .. หนึ่งคุณสามารถเพียงแค่อุโมงค์ไปยังโฮสต์และระบุ IP ของแขกใน -L และมันจะ "แยกออก" และชี้ให้คุณมี แต่ตัวเลือก nat.conf ดีและ สะดวกและคุณไม่ต้องพิมพ์ทุกครั้ง นอกจากนี้ยังมีวิธีอื่นในการส่งต่อพอร์ต
- ฉันได้เห็นการอ้างอิงถึงสองสามเธรดของเครือข่ายเสมือน gui ที่จะทำสิ่งนี้ (เช่น virtualbox มี) แต่ฉันไม่พบมันในรุ่นนี้
- ฉันไม่ได้ใช้ windows ดังนั้นแม้ว่าฉันคิดว่ามันจะคล้ายกับการกำหนดค่าเป็นโฮสต์ฉันไม่แน่ใจ การกำหนดค่า NAT ควรใช้ได้กับแขก vmware ทุกคน (แม้ว่าฉันจะไม่ได้ใช้ VMWare รุ่นอื่น ๆ ก็ตาม)
VMware ตั้งค่าเส้นทางเพื่อให้โฮสต์สามารถติดต่อแขก NAT โดยตรงโดยตรงจากคอนโซลของโฮสต์ฉันสามารถ ping / ssh ฯลฯ NAT guest 192.168.198.10 (กำหนดไว้ด้านบน) โดยตรง
console ~> route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
<snip>
192.168.198.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
192.168.233.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
- จาก linux note มี viddware บางตัวที่มี systemd init เพื่อเริ่มทำงานอย่างอัตโนมัติและพร้อมกับที่ฉันพบฉันไม่สามารถรีสตาร์ท vmware (vmci ไม่โหลดอีกครั้ง) และฉันต้องรีสตาร์ท เครื่องของฉันเพื่อทำ NAT / DHCP ให้เหนือสิ่งอื่นใด แต่คุณอาจไม่มีปัญหา มีเธรดบางส่วนที่มีโซลูชัน systemd ว่า