การกำหนดค่า Ubuntu vmware guest NAT


9

ฉันมีโฮสต์ Windows ที่ใช้งาน Ubuntu VM แขกผ่านทาง vmplayer เครื่องเสมือนนั้นจะถูกโคลนกระจายในหมู่คนหลายคน (ใช้โฮสต์ Windows) และใช้สำหรับการดำเนินการฝึกอบรมเชิงปฏิบัติการการเขียนโปรแกรม ฉันกำลังพยายาม - และจนถึงตอนนี้ล้มเหลว - ในการตั้งค่าเครือข่ายเพื่อตอบสนองความต้องการต่อไปนี้:

  1. ผู้เข้าพักจะต้องมีการเข้าถึงอินเทอร์เน็ต
  2. โคลนทั้งหมดควรมีชื่อโฮสต์เดียวกัน (สมมุติว่าWorkshopเป็นรูปธรรม)
  3. ระบบโฮสต์จะต้องสามารถเข้าถึงแขกที่เกี่ยวข้องผ่านทางชื่อนั้นได้ (เช่นping Workshopจะทำการ ping ผู้เยี่ยมชมที่ทำงานบนโฮสต์นั้นและไม่ใช่โคลนอื่น ๆ )

สิ่งที่ฉันลองมาแล้ว:

  • "ติดตั้ง" อะแดปเตอร์เครือข่าย NAT สำหรับแขก
  • พยายามเชื่อมต่อแขกผ่าน DHCP ใน/ etc / network / interfaces :

    auto eth0
    iface eth0 inet dhcp
       hostname Workshop
    

มันใช้งานได้เท่าที่เชื่อมต่อกับอินเทอร์เน็ต อย่างไรก็ตามฉันไม่สามารถเชื่อมต่อกับแขกจากโฮสต์ได้เลย (เช่นping Workshopไม่ทำงานถ้าฉันใช้ที่อยู่ที่ส่งคืนโดยifconfigจะไม่ทำงานจากโฮสต์)

  • จากนั้นฉันลองกำหนดที่อยู่แบบคงที่ให้กับแขก:

    auto eth0
    iface eth0 inet static
         address 172.241.0.101
         netmask 255.255.0.0
         gateway 172.241.0.100
    

(172.241.0.100 เป็นที่อยู่ที่กำหนดให้กับโฮสต์โดย VMWare Network VMNet8 Adapter - นั่นคืออะแดปเตอร์ NAT ด้านบน) ตอนนี้ฉันสามารถping 172.241.0.101และ telnet จากโฮสต์ ฉันยังสามารถ ping และ telnet จากแขกไปยัง 172.241.0.100 (โฮสต์) แต่มันเกี่ยวกับมัน - ไม่มีการเชื่อมต่อกับเครือข่ายที่กว้างขึ้น (ฉันไม่สามารถเข้าถึงแขกผ่านชื่อโฮสต์ของมันได้ แต่นั่นไม่สำคัญเพราะถ้ากดมาฉันจะสามารถใช้ที่อยู่ได้โดยตรงตราบใดที่มันเหมือนกันสำหรับทุกคน - ไม่ใช่ชื่อ)

ตอนนี้ฉันคิดว่าฉันสามารถใช้ตัวเลือกการเชื่อมต่อเครือข่ายบริดจ์กับ DHCP และนั่นจะให้สิ่งที่ฉันต้องการในกรณีของ VM หนึ่ง (ฉันไม่ได้ลองในกรณีนี้ แต่ฉันจำได้ว่าทำก่อนหน้านี้) อย่างไรก็ตามในกรณีของ VM หลายแห่งที่มีชื่อโฮสต์เดียวกันและโฮสต์ของพวกเขาเชื่อมต่อกับเครือข่ายเดียวกันที่จะมีปัญหาจะใช่ไหม?

โซลูชั่นและคำแนะนำอื่น ๆ ของคุณจะได้รับการชื่นชมมาก

คำตอบ:


8

ก่อนอื่นใช่คุณจะไม่สามารถใช้การเชื่อมต่อเครือข่ายบริดจ์ได้เนื่องจากแขกทุกคนจะมีชื่อโฮสต์เดียวกันดังนั้นคุณจะต้องใช้ NAT

คุณได้รับส่วนกำหนดค่าที่ถูกต้องอย่างไรก็ตามปัญหาของคุณควรอยู่ในเกตเวย์เริ่มต้นที่คุณกำหนดให้กับผู้เยี่ยมชม เกตเวย์เริ่มต้นเมื่อใช้ NAT ไม่ใช่ IP ของโฮสต์เป็น IP ของ "สวิตช์เสมือน" ที่เชื่อมต่อกับเครือข่าย NAT (อะแดปเตอร์โฮสต์ VMnet8 เป็นเพียงอุปกรณ์อื่นที่เชื่อมต่อกับเครือข่ายเพื่ออนุญาตให้โฮสต์สื่อสารกับ VM) สวิตช์เสมือนนี้เรากำลังพูดถึงรับ.2IP ในเครือข่ายย่อย ดังนั้นในกรณีของคุณคุณ/etc/network/interfacesควรอ่าน:

auto eth0
iface eth0 inet static
     address 172.241.0.101
     netmask 255.255.0.0
     gateway 172.241.0.2

สิ่งนี้จะให้สิทธิ์การเข้าถึง VM แขกของคุณกับอินเทอร์เน็ต (ผ่าน172.241.0.2) และสื่อสารกับโฮสต์ของคุณ ( 172.241.0.100) ดังนั้นลองใช้งานและแจ้งให้เราทราบหากใช้งานได้

หากไม่ได้ผล (ไม่น่าเป็นไปได้สูง) คุณต้องค้นหาว่า IP ของสวิตช์เสมือนคืออะไร สิ่งที่คุณสามารถทำได้คือให้ VM ได้รับ IP ผ่าน DHCP (เช่นเปลี่ยนไปiface eth0 inet dhcpเช่นคุณมีมันก่อน) route -nแล้วทำ นี่จะแสดงเกตเวย์เริ่มต้นที่คุณใช้ ใช้ IP นั้นในการกำหนดค่าแบบคงที่ของคุณ


เพื่อให้สามารถ ping guest VM โดยใช้ชื่อโฮสต์Workshopได้นี่คือสิ่งที่คุณสามารถทำได้ คุณต้องเพิ่มรายการในhostsแฟ้มใน Windows C:\Windows\System32\drivers\etc\hostsซึ่งตั้งอยู่ใน แก้ไขไฟล์นั้นเพื่อรวมบรรทัดต่อไปนี้ในท้ายที่สุด:

อย่างไรก็ตามในการแก้ไขไฟล์ภายใต้ Windows คุณต้องเปิดเป็นผู้ดูแลระบบใน Notepad หรือ Wordpad ... และบางครั้งไฟล์ก็ไม่ได้ช่วยให้คุณบันทึกได้ดังนั้นคุณต้องคัดลอกไฟล์ไปไว้ที่อื่นแก้ไข ลบส่วนขยาย. txt ถ้ามีแล้วย้อนกลับไปแทนที่ส่วนเดิมและ "ยืนยัน" มัน ... โอ้ฉันรัก Linux แต่ต่อไปนี้เป็นบรรทัดที่คุณต้องเพิ่ม:

172.241.0.101    Workshop

เมื่อเสร็จแล้วคุณควรจะสามารถping Workshopประสบความสำเร็จจากโฮสต์ Windows ของคุณ

แม้ว่าแน่นอนว่าเพื่อให้สามารถใช้งานได้ในเวิร์กช็อปของคุณคุณจะต้องแก้ไขไฟล์โฮสต์ในโฮสต์ Windows เดียวทุกเครื่องเว้นแต่ว่าคุณจะทำการโคลนเครื่อง Windows

เคล็ดลับ : เนื่องจากคุณจะกำหนด IP แบบคงที่ให้กับแขกของคุณตรวจสอบให้แน่ใจว่า "NAT network" ใน VMplayer บนโฮสต์ Windows ทั้งหมดของคุณกำลังใช้เครือข่ายย่อย172.241.0.0/16เนื่องจากฉันคิดว่า VMware กำหนดเครือข่ายย่อยแบบสุ่มให้กับเครือข่ายเสมือน VMnet1, 2 และอื่น ๆ ) ดังนั้น VMnet8 อาจไม่ได้ใช้ซับเน็ตเดียวกันกับโฮสต์ Windows อื่น หากพวกเขาไม่ได้คุณจะต้องให้เครือข่ายย่อย VMnet8 ด้วยตนเองโดยใช้ Virtual Network Editor ใน VMware


แก้ไข

ตกลง. หลังจากความคิดเห็นนี่คือสิ่งที่คุณต้องทำ:

  1. กำหนดค่าเครื่องโฮสต์ (Windows) ของคุณเพื่อ "รับที่อยู่ IP โดยอัตโนมัติ" บนอะแดปเตอร์ VMnet8 มันควรจะได้รับ 192.168.186.1IP
  2. การกำหนดค่าของคุณ (Ubuntu) เครื่องของผู้เข้าพักไปยัง IP 192.168.186.3 - 192.168.186.127แบบคงที่ในช่วง มาใช้192.168.186.3กัน นอกจากนี้กำหนดค่าเกตเวย์เริ่มต้นและเซิร์ฟเวอร์ DNS ให้เป็น192.168.186.2ดังนั้นคุณ/etc/network/interfacesควรจะ:

    auto eth0
    iface eth0 inet static
         address 192.168.186.3
         netmask 255.255.255.0
         gateway 192.168.186.2
         dns-nameservers 192.168.186.2
    
  3. ทดสอบการเชื่อมต่อท้องถิ่นโดยการกระตุก192.168.186.1และ192.168.186.2จากเครื่องแขก คุณควรจะ ping จากโฮสต์ไปยังแขก

  4. ทดสอบการเชื่อมต่ออินเทอร์เน็ตในเครื่องแขกโดยการกระตุกgoogle.comหรือท่องอินเทอร์เน็ต
  5. เพิ่มบรรทัด192.168.186.3 Workshopลงhostsในไฟล์ของคุณในเครื่องโฮสต์ Windows
  6. ทดสอบping Workshopจากเครื่องโฮสต์ Windows

หากคุณต้องการใช้ IP จากเครือข่าย / พูลอื่นนอกเหนือจาก192.168.186.0/24นี้คุณจะต้องไปที่Edit > Virtual Network EditorVMware ค้นหา VMnet8 และเปลี่ยนการตั้งค่า DHCP ที่ด้านล่างสุดเป็นเครือข่ายที่คุณต้องการและเปลี่ยน IP แบบคงที่ตามลำดับ (เกตเวย์เริ่มต้นจะเป็น IP ที่สามารถใช้ได้ครั้งที่สองเสมอx.x.x.2)

ป้อนคำอธิบายรูปภาพที่นี่


172.241.0.2 ไม่ทำงาน มันไม่ตอบ ping เช่นกัน (ตามความเป็นจริงแล้วการรัน nmap -sP 172.241.0.0/24 จะส่งคืนโฮสต์สดสองโฮสต์เท่านั้น - .100 และ. 101) เมื่อกำหนดค่าด้วย dhcp ที่อยู่ที่แตกต่างกันอย่างสิ้นเชิงจะถูกส่งกลับโดยเส้นทาง - n: 192.168.186.2
malenkiy_scot

โอ้ฉันคิดว่าคุณกำลังใช้เครือข่าย 172.241.0.0/16 เพราะมันเป็นสิ่งที่ DHCP ใช้อยู่ ลองคิดดูสินั่นเป็น IP สาธารณะ [Oo] จริงๆ มีเหตุผลที่คุณกำหนดโฮสต์และ IP แขกในเครือข่าย 172.241.0.0 หรือไม่? ต่อไปลองดูคำตอบที่แก้ไขแล้วของฉัน
Alaa Ali

ไม่มันไม่ใช่สิ่งที่ DHCP ใช้ แต่นั่นคือวิธีการกำหนดค่า adNet ของ VMNet8 ได้รับที่อยู่ DHCP ผ่านบริการ VMWare DHCP ฉันไม่ทราบว่าจะรับที่อยู่จากที่ใด ฉันไม่คิดว่าที่อยู่ 172.241 นั้นเป็นแบบสาธารณะ เมื่อฉันสร้างการเชื่อมต่อระหว่างโฮสต์และแขกและเรียกใช้ CPORTS มันแสดงให้เห็นว่า 10.63.41.41 (นั่นคือที่อยู่ของโฮสต์บน LAN) เชื่อมต่อกับตัวเองในพอร์ตต่าง ๆ - ซึ่งสมเหตุสมผลเนื่องจากเป็น NAT (หรืออาจเป็น PAT จริง ๆ ) . ที่จริงฉันคิดตามบรรทัดเดียวกับที่คุณทำเกี่ยวกับเกตเวย์ - ว่ามันมีที่อยู่ที่แตกต่างกัน
malenkiy_scot

ใช่ดังที่ได้กล่าวไว้ในคำตอบของฉันบริการ DHCP และพูลนั้นสามารถกำหนดค่าได้จากตัวแก้ไขเครือข่ายเสมือน (ฉันได้เพิ่มภาพหน้าจอในคำตอบของฉัน) เกตเวย์, เซิร์ฟเวอร์ DHCP และ DNS ล้วนเป็นอุปกรณ์เสมือนที่เหมือนกันทั้งหมด, x.x.x.2. และใช่อย่างที่คุณพูดแน่นอนว่ามันใช้โอเวอร์โหลด (PAT) มากกว่า IP ของโฮสต์ของคุณ คุณไม่ควรเห็น IP ของแขกในเครือข่ายที่กว้างขึ้น นอกจากนี้ยัง172.241.0.0/16 เป็นช่วง IP สาธารณะ =) 172.16.0.0 - 172.31.255.255เป็นช่วงส่วนตัวในที่อยู่คลาส B แต่มันไม่สำคัญเลยมันไม่ควรส่งผลอะไรเลย
Alaa Ali

นอกจากนี้คุณสามารถเยี่ยมชมหน้านี้หากคุณต้องการอ่านเพิ่มเติมเกี่ยวกับ NAT ใน VMware มันเป็นการอ่านที่ดี
Alaa Ali

3

ฉันมีปัญหาคล้ายกันโดยใช้ VMWare Player ทำงานบน Windows 7 กับแขก Ubuntu แต่ฉันสามารถเชื่อมต่อจากโฮสต์กับแขกและแขกไปยังโฮสต์ แต่ปัญหาคือฉันไม่สามารถเชื่อมต่ออินเทอร์เน็ตจากแขก หลังจากอ่าน @Alaa คำตอบฉันต้องเพิ่มบิดอีกหนึ่งชื่อเพื่อเพิ่มชื่อเซิร์ฟเวอร์ DNS ลงในไฟล์อินเตอร์เฟส (dns-nameservers 192.168.150.2) จากนั้นทุกอย่างก็เข้าแถว

นี่คือการกำหนดค่าของฉันที่ทำงาน

การกำหนดค่าอินเตอร์เฟส VMWare บนโฮสต์:

อีเธอร์เน็ตอะแดปเตอร์ VMware อะแดปเตอร์เครือข่าย VMnet8: (ไคลเอ็นต์)

Connection-specific DNS Suffix  . : 
Description . . . . . . . . . . . : VMware Virtual Ethernet Adapter for VMnet8
Physical Address. . . . . . . . . : 00-50-56-C0-00-08
DHCP Enabled. . . . . . . . . . . : No
Autoconfiguration Enabled . . . . : Yes
Link-local IPv6 Address . . . . . : fe80::9c13:cbf2:1dc:259f%42(Preferred) 

IPv4 Address. . . . . . . . . . . : 192.168.150.1(Preferred) 
Subnet Mask . . . . . . . . . . . : 255.255.255.0

Default Gateway . . . . . . . . . : 
DHCPv6 IAID . . . . . . . . . . . : 704663638
DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-19-06-50-32-88-53-2E-7A-D3-8E
DNS Servers . . . . . . . . . . . : fec0:0:0:ffff::1%1
                                    fec0:0:0:ffff::2%1
                                    fec0:0:0:ffff::3%1
NetBIOS over Tcpip. . . . . . . . : Enabled 

อินเทอร์เฟซของผู้เยี่ยมชม Ubuntu เปลี่ยนแปลง:

auto eth0
iface eth0 inet static
address 192.168.150.10
netmask 255.255.255.0
gateway 192.168.150.2
dns-nameservers 192.168.150.2

192.168.150.2 เป็นพร็อกซีของ VMWare ที่จะส่งต่อการรับส่งข้อมูลแขกไปยังโฮสต์


สวัสดีฉันพบปัญหาเดียวกับคุณ คุณช่วยอธิบายเพิ่มเติมเกี่ยวกับวิธีการแก้ปัญหาได้ไหม สิ่งแรกคือตำแหน่งที่รับข้อมูลของ "อะแดปเตอร์อีเทอร์เน็ต VMware อะแดปเตอร์เครือข่าย VMnet8: (ไคลเอนต์)" คุณหมายถึงคุณต้องอัพเดทการเปลี่ยนแปลงใน / etc / network / interfaces นอกจากนี้สำหรับที่อยู่เช่น "netmask", "เกตเวย์" พวกเขาจะแตกต่างกันไปตามเครื่องที่แตกต่างกันหรือไม่? หรือฉันสามารถใช้เช่นเดียวกับที่คุณโพสต์
288609
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.