ไม่มีการเข้าถึงอินเทอร์เน็ตบน VMs ในเครือข่าย NAT ใน VirtualBox


14

ฉันได้สร้างเครือข่าย NAT ใน VirtulBox 5 ใน Ubuntu 14.04 LTS ด้วยการตั้งค่าต่อไปนี้

ชื่อการทำงาน: NatNetwrok1
เครือข่าย CIDR: 10.0.2.0/24
รองรับ DHCP: เปิดใช้งาน
การสนับสนุน IPv6: ปิดใช้งาน
โดยไม่มีการส่งต่อพอร์ต

นอกจากนี้ฉันมี VMs สองตัว (ทั้ง Xubuntu โคลน) ฉันได้ตั้งค่าการตั้งค่าเครือข่ายเพื่อเปิดใช้งาน NIC สองตัวบนแต่ละ VM ด้วยการตั้งค่าต่อไปนี้ในอะแดปเตอร์ทั้งสี่:

แนบกับ:“ NAT Network”
ชื่อ:“ NatNetwrok1”

เมื่อฉันเรียกใช้ VMs ทั้งสองฉันสามารถดูการตั้งค่าต่อไปนี้เมื่อใช้คำสั่ง ifconfig

ผลลัพธ์ ifconfig บน Xubuntu1

eth0      Link encap:Ethernet  HWaddr 08:00:27:00:8c:03  
          inet addr:10.0.2.9  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe00:8c03/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:43 errors:0 dropped:0 overruns:0 frame:0
          TX packets:47 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:12133 (12.1 KB)  TX bytes:8517 (8.5 KB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:9e:20:e8  
          inet addr:10.0.2.8  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe9e:20e8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:43 errors:0 dropped:0 overruns:0 frame:0
          TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:10294 (10.2 KB)  TX bytes:8798 (8.7 KB)

ผลลัพธ์ ifconfig บน Xubutracentu2

eth0      Link encap:Ethernet  HWaddr 08:00:27:00:8c:03  
          inet addr:10.0.2.9  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe00:8c03/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:43 errors:0 dropped:0 overruns:0 frame:0
          TX packets:47 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:12133 (12.1 KB)  TX bytes:8517 (8.5 KB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:9e:20:e8  
          inet addr:10.0.2.8  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe9e:20e8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:43 errors:0 dropped:0 overruns:0 frame:0
          TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:10294 (10.2 KB)  TX bytes:8798 (8.7 KB)

ปิงระหว่าง 4 IP เหล่านี้ทำงานได้ดี
แต่ฉันไม่สามารถเข้าถึงอินเทอร์เน็ตบน VMs เหล่านี้อย่างใดอย่างหนึ่ง
ในขณะที่ถ้าเปลี่ยน "NAT Network" เป็น "NAT" ฉันสามารถเข้าถึงเครือข่ายได้ แต่ดูเหมือนว่าจะกลายเป็นส่วนหนึ่งของเครือข่ายเสมือนที่แตกต่างกัน ทุกคน
สามารถช่วยฉันระบุและแก้ไขปัญหาได้

ทุกคนสามารถอธิบายความแตกต่างระหว่างNATกับNAT Network ได้ไหม


ปัญหาเดียวกัน ... ใครช่วยได้บ้าง
monitor35

ฉันเพิ่งพบปัญหานี้โดยใช้กล่องเสมือน 5.0.40 จาก repo อูบุนตูเริ่มต้น ในการหลีกเลี่ยงมันฉันตั้งค่า VM แต่ละตัวด้วยสองอินเตอร์เฟส อีกอันหนึ่งมี NatNetwork ภายในและอีกอันใช้โหมดบริดจ์ ภายใต้ guest OS (Ubuntu 16.04) คุณจะต้องบิด / etc / network / interfaces เพื่อให้อินเทอร์เฟซที่สองแสดงขึ้นในเกสต์ ทำให้แต่ละ VM สามารถอยู่ใน NAT ภายในและสามารถเข้าถึงอินเทอร์เน็ตได้ในเวลาเดียวกัน
JulioHM

คำตอบ:


7

ทำไมไม่ทำงาน

ใน 16.04 (และอาจ 14.04) เดอะNAT เครือข่ายคุณลักษณะของรุ่นแพคเกจหลักของVirtualBox (5.0.36) ถูกดักฟัง

ตรวจสอบ!

คุณสามารถตรวจสอบได้ด้วยตนเอง: ถ้ามีls /usr/lib/virtualbox/VBoxNetNATไฟล์ที่ปฏิบัติการได้แสดงว่าคุณอาจมีปัญหาอื่น ๆ

ซ่อมมัน!

จุดบกพร่องนี้ได้รับการแก้ไขในเวอร์ชั่นที่ใหม่กว่า ดังนั้นคุณควรติดตั้งเวอร์ชันใหม่:

ลบเวอร์ชันเก่า

ตัวอย่างเช่นหากคุณติดตั้งโดยใช้aptคุณสามารถเรียกใช้:

sudo apt remove virtualbox --auto-remove

ติดตั้งเวอร์ชันใหม่

การแก้ไขพร้อมใช้งานสำหรับเวอร์ชันที่ใหม่กว่า (Ubuntu yakkety +) สำหรับรุ่นเก่า:

  • เยี่ยมชม virtualbox.org และดาวน์โหลดเวอร์ชันใหม่ล่าสุดด้วยตนเอง
  • หรือ
  • ใช้สคริปต์ต่อไปนี้:

    # add the official repository
    wget -q -O - https://www.virtualbox.org/download/oracle_vbox_2016.asc | sudo apt-key add -
    echo deb http://download.virtualbox.org/virtualbox/debian `lsb_release -cs` non-free contrib | sudo tee /etc/apt/sources.list.d/virtualbox.org.list
    # install the newer version
    sudo apt install virtualbox-5.1
    

1
หากคุณติดตั้ง Virtualbox เวอร์ชันก่อนหน้าตรวจสอบให้แน่ใจว่าคุณได้ถอนการติดตั้งvirtualbox-dkmsเพื่อแก้ไขปัญหานี้แล้ว มิเช่นนั้นคุณอาจยังติดขัดได้โดยไม่ใช้อินเทอร์เน็ต
Barak Itkin

7

ฉันพบสิ่งนี้โดยใช้ VirtualBox 5.0.40 จากที่เก็บ apt เริ่มต้น ในการหลีกเลี่ยงปัญหานี้ฉันได้กำหนดค่า VM แต่ละตัวให้ใช้สองอินเตอร์เฟสเครือข่าย

  • อะแดปเตอร์ 1: Bridge Addapter (สำหรับนิคอนจริงๆของคุณ)
  • อะแดปเตอร์ 2: เครือข่าย NAT (ที่คุณเลือก)

ภายใต้ guets OS (Ubuntu 16.04) คุณจะต้องปรับแต่ง/etc/network/interfacesเพื่อให้อินเทอร์เฟซที่สองแสดงขึ้นมา ในกรณีของฉันฉันต้องการ VMs เพื่อใช้ IP แบบคงที่ภายในเครือข่าย NAT ดังนั้นนี่คือสิ่งที่ฉันได้รับ

## Bridge to Internet
auto enp0s3
iface enp0s3 inet dhcp

## NAT Network among VMs
## Static is optional
## DHCP if you don't need it
auto enp0s8
iface enp0s8 inet static
  address 10.10.11.100
  netmask 255.255.255.0

นี้แน่นอนถือว่าเครือข่าย NAT 10.10.11.0/24ของฉันใช้เครือข่ายย่อย ปรับตัวเลขให้เหมาะกับสถานการณ์ของคุณหรือเพียงแค่ปล่อยให้เป็น dhcp ตามที่คุณต้องการ

หมายเหตุ:สิ่งสำคัญสิ่งหนึ่งที่ควรทราบในการกำหนดค่าแบบคงที่คือสำหรับสถานการณ์เฉพาะนี้คุณไม่สามารถกำหนดเกตเวย์เริ่มต้นได้ การให้enp0s8ค่าเริ่มต้น (เช่น 10.10.11.1) จะทำให้ระบบปฏิบัติการสร้างเส้นทางไปยังเกตเวย์นี้และเส้นทางนั้นยังสามารถเพิ่มการเข้าถึงอินเทอร์เน็ตของคุณได้เช่นกัน คุณควรจะทำเช่นนั้นเมื่ออินเทอร์เฟซนี้ต้องการเส้นทางไปยังเครือข่ายอื่นนอกเหนือจากที่กำหนดค่าไว้

dmesg | grep ethเพื่อหาชื่ออินเตอร์เฟซที่ได้รับมอบหมายจากอูบุนตูสำหรับสภาพแวดล้อมของคุณคุณสามารถ

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


ฉันทำงานได้ดีขึ้นเมื่อฉันใช้ 'dhcp' สำหรับทั้ง eth0 และ eth1 มันเพิ่งกำหนด 10.0.2.15 โดยอัตโนมัติสำหรับ NAT และอินเทอร์เน็ตสาธารณะ eth1 ของฉันไม่มี IP แต่ฉันสามารถ ping อินเทอร์เน็ตจาก VM ได้!
Milean

6

ตามคู่มือ VirtualBox เหล่านี้เป็นไปได้ของเครือข่ายสำหรับ VMs ของคุณ:

  • NAT: เครือข่ายภายในระหว่าง VM และโฮสต์ นอกจากนี้คุณสามารถเข้าถึงอินเทอร์เน็ต VMs สองตัวขึ้นไปในโหมด NAT ไม่มีการเชื่อมต่อระหว่างกันเฉพาะกับโฮสต์และอินเทอร์เน็ต

  • ภายใน: VMs ทั้งหมดที่มีการกำหนดค่านี้จะมีการเชื่อมต่อระหว่างกัน แต่ไม่ใช่กับโฮสต์หรืออินเทอร์เน็ต

  • โฮสต์เท่านั้น:เครือข่ายเสมือนจะถูกสร้างขึ้นระหว่างโฮสต์และ VM ทั้งหมดด้วยการกำหนดค่านี้ แต่คุณจะไม่มีการเข้าถึงอินเทอร์เน็ต

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

  • Bridged: VM ของคุณจะอยู่ในเครือข่ายเดียวกับที่โฮสต์ของคุณราวกับว่าเป็นคอมพิวเตอร์ / เซิร์ฟเวอร์อื่น ๆ ในเครือข่ายนี้และดังนั้นจะมีอินเทอร์เน็ต acces ถ้าโฮสต์ของคุณมี

  • Generic:การกำหนดค่าขั้นสูงและเฉพาะเจาะจงมากขึ้นไม่ค่อยได้ใช้

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

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

ในทางกลับกันมันก็ดูเหมือนว่าคุณ clonned หนึ่ง VM จากที่อื่น ๆ เพราะทั้งสองเครื่องมีที่อยู่ MAC เดียวกัน ( HWaddrในข้อมูลคำสั่ง ifconfig) ทราบว่าคุณควรตรวจสอบช่องที่อ่านว่า " เริ่มใหม่อีกครั้งที่อยู่ MAC ของการ์ดเครือข่ายทั้งหมด "เมื่อโคลน อุปกรณ์สองเครื่องที่มีที่อยู่ MAC เดียวกันจะสร้างปัญหาเสมอ

ฉันไม่ใช่ผู้เชี่ยวชาญใน VirtualBox ดังนั้นผู้ใช้รายอื่นอาจบอกคุณถึงการกำหนดค่าที่เป็นไปได้อื่น ๆ เพื่อให้ได้สิ่งที่คุณต้องการ ฉันหวังว่าคุณจะพบว่าข้อมูลนี้มีประโยชน์

สำหรับข้อมูลเพิ่มเติมคุณสามารถอ่านนี้


3
มันไม่ได้เป็นความจริงที่ว่าNAT เครือข่ายจะป้องกันไม่ให้แขกของคุณจากการเชื่อมต่อกับอินเทอร์เน็ต ฉันสามารถเชื่อมต่ออินเทอร์เน็ตจากแขกของ VM บนเครือข่าย NAT ตามความคิดเห็นล่าสุดในฟอรัม.virtualbox.org/viewtopic.php?f=3&t=69504 "โหมด NAT หมายความว่าแต่ละ VM ถูกแยกออกหลังเราเตอร์ของตัวเอง ... NAT Network นั้นเหมือนกับ NAT ยกเว้นว่าคุณสามารถมี VM ได้หลายตัว เชื่อมต่อกับเราเตอร์ภายในเดียวกัน "
eebbesen

2

นี่อาจเป็นข้อผิดพลาดใน VirtualBox ฉันเคยมีประสบการณ์แบบเดียวกัน (Ubuntu 16.04.2 LTS, VirtualBox 5.0.32_Ubuntu r112930): ตั้งค่าเครือข่าย NAT กำหนดค่าสำหรับ Ubuntu VMs สองเครื่อง VM แต่ละตัวสามารถ ping / SSH ไปที่อื่นและผ่านการส่งต่อพอร์ตฉันสามารถ SSH จากโฮสต์ไปยังแต่ละ VM แต่ไม่มีการเข้าถึงอินเทอร์เน็ตจากภายใน VMs เพื่อนร่วมงานพยายามทำเช่นเดียวกันกับโฮสต์ Windows, VirtualBox (รุ่นที่ไม่รู้จัก) และ VMs เดียวกันและใช้งานได้

เพื่อเป็นการหลีกเลี่ยงปัญหาฉันได้กำหนดค่าการ์ดเครือข่ายที่สองสำหรับแต่ละ VM: การ์ดแรกที่ใช้ NAT เพื่อเข้าถึงอินเทอร์เน็ตส่วนที่สองใช้ "NAT Network" เพื่อเข้าถึงแขกคนอื่น ๆ ฉันต้องตั้งค่าการส่งต่อพอร์ต SSH บนการ์ดแรก (NAT) และกำหนดค่าพอร์ต SSH อื่นบน VM หนึ่ง (เช่น 2222 -> 22 บน VM1, 2223 -> 23 บน VM2)

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

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