เชื่อมต่อกับเครื่องโฮสต์จาก VirtualBox guest OS หรือไม่


214

ฉันต้องการเข้าถึงคอมพิวเตอร์โฮสต์จากแขกใน VirtualBox เป็นหลัก มีที่อยู่ IP สำหรับโฮสต์ของฉันที่ฉันสามารถใช้จากแขกได้หรือไม่? จำเป็นต้องมีขั้นตอนพิเศษในการตั้งค่านี้หรือไม่? ฉันต้องการเข้าถึงบริการ Apache, FTP และ SSH ของโฮสต์


1
แก้ไขได้ยากโดยไม่ต้องบอกใบ้ว่าเครือข่ายใดที่แขกของคุณมีอยู่จริง บางคนไม่อนุญาตให้เข้าถึงโฮสต์ ลองที่อยู่เกตเวย์เริ่มต้นของผู้เยี่ยมชม
เทอร์โบ J

7
ปรากฎว่าฉันสามารถเข้าถึงได้ผ่านเกตเวย์เริ่มต้นของฉันที่ 10.0.2.2
Naftuli Kay

คำตอบ:


258

คำตอบนี้เกี่ยวกับการติดตั้งระบบปฏิบัติการ guest ใน VirtualBox คุณเพียงแค่ต้องใช้ที่อยู่เกตเวย์ของเครือข่ายบน guest OS เพื่อเชื่อมต่อกับ host OS จาก guest OS

ในการตั้งค่า Vagrant เริ่มต้นคุณควรจะสามารถเข้าถึงโฮสต์ของคุณผ่านเกตเวย์เริ่มต้น

สำหรับผู้เข้าพักที่ใช้ Windows คุณสามารถกำหนดที่อยู่ IP นี้ได้อย่างง่ายดายโดยเรียกใช้คำสั่ง:

ipconfig

มันควรเททิ้งสิ่งนี้:

Windows IP Configuration

Ethernet adapter Local Area Connection:

        Connection-specific DNS Suffix  . :
        IP Address. . . . . . . . . . . . : 10.0.2.15
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 10.0.2.2

10.0.2.2ในตัวอย่างนี้ผู้เข้าพักสามารถเข้าถึงเครื่องโฮสต์


บนแขกที่ใช้ Unix / Linux ให้ใช้คำสั่ง:

netstat -rn

มันควรเททิ้งสิ่งนี้:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wlan0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 wlan0
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 wlan0

192.168.1.1ในตัวอย่างนี้ผู้เข้าพักสามารถเข้าถึงเครื่องโฮสต์


ความคิดใดว่าทำไมการเชื่อมต่อจะช้าลงอย่างน่ากลัวเมื่อทำการเชื่อมต่อโดยใช้เกตเวย์เริ่มต้นตามคำตอบของคุณ?
Ben Swinburne

ดูเหมือนว่านี่จะไม่เหมาะกับฉัน (Ubuntu 12.04, Vagrant 1.0) เกตเวย์เริ่มต้นภายในแขกแสดงเป็น10.0.2.2และ nmap ของ IP นั้นล้มเหลว 192.168.33.1 น่าจะเป็น IP ที่ถูกต้อง (ฉันมีconfig.vm.network :hostonly, "192.168.33.52"ในการตั้งค่าของฉัน.)
Ajedi32

ที่จริงไม่เป็นไร มันได้ผล nmap ไม่ทำงานด้วยเหตุผลบางอย่าง ไม่แน่ใจว่าทำไม ฉันยังคงสามารถเชื่อมต่อกับบริการที่ทำงานบนโฮสต์จาก IP นั้นแม้ว่า nmap จะไม่แสดง
Ajedi32

1
netstat -rnบน CentOS 7.2 Docker 1.11 แสดงที่172.17อยู่เป็นเกตเวย์ของฉัน แต่ IP นั้นไม่ตรงกับโฮสต์ของฉัน ปรากฎว่า10.0.2.2ทำ
Spencer Williams

1
เราจะรู้ได้อย่างไรว่าหนึ่งในรายการเหล่านั้นคือประตู?
Kramer

36

การเข้าถึงเว็บเซิร์ฟเวอร์ของโฮสต์คอมพิวเตอร์จากแขกเป็นเรื่องง่าย สามารถทำได้อย่างง่ายดายโดยใช้สองวิธี ก่อนอื่นให้ทำดังนี้

  • ไปที่อุปกรณ์และเลือกอะแดปเตอร์เครือข่าย ...
  • ในการตั้งค่าอะแดปเตอร์ตรวจสอบที่แนบมาด้วย
  • ถ้าค่าเป็นNATให้ทำตาม

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

    ipconfig /all

    หากคุณอยู่บนLinux, Unix หรือ Mac OS ให้เรียกใช้คำสั่งต่อไปนี้เพื่อขอรับ

    netstat -rn | grep 'default' | awk '{print $2}'

  • ไปที่เว็บเบราว์เซอร์แล้วพิมพ์เกตเวย์เริ่มต้นนี้แล้วกด Enter เว็บเซิร์ฟเวอร์สามารถเข้าถึงได้

  • ถ้าค่านั้นเป็นตัวเชื่อมต่อบริดจ์ให้ทำตาม
    • ค้นหาที่อยู่ ip ของโฮสต์และแขก
      • หากคุณอยู่บน windows ให้เรียกใช้ ipconfigและรับที่อยู่ IP
      • หากคุณอยู่บน Linux, Unix หรือ Mac OS ให้เรียกใช้ifconfig | grep 'inet' และรับที่อยู่ IP
      • ที่อยู่ IP เป็น 192.168.1.1
    • หากคุณต้องการเข้าถึงโฮสต์ให้รันเบราว์เซอร์ในเกสต์และป้อนที่อยู่ IP ของโฮสต์
    • หากคุณต้องการเข้าถึงแขกเรียกใช้เบราว์เซอร์ในโฮสต์และป้อนที่อยู่ IP ของแขก

9

อีกวิธีในการทำเช่นนี้คือใช้เครือข่ายเสมือนประเภท "โฮสต์" ที่ให้อินเทอร์เฟซใน guest OS พร้อมที่อยู่บนซับเน็ตท้องถิ่นแตกต่างจากซับเน็ต"โลกภายนอก" ที่เครื่องโฮสต์ของคุณเปิดอยู่ ในการทำให้งานนี้คุณต้องทำให้แน่ใจว่า:

  • VM ของคุณมีอะแดปเตอร์ "โฮสต์เท่านั้น"
  • บริการโฮสต์ของคุณจำเป็นต้องรับฟังอะแดปเตอร์ในเครื่องทั้งหมดหรืออย่างน้อยสิ่งที่คุณต้องการให้สามารถติดต่อได้
  • โฮสต์ของคุณจะได้รับอะแดปเตอร์เสมือนจริงของตัวเองและคุณจะต้องการหาที่อยู่ IP ของมันและเพิ่มลงในไฟล์ "โฮสต์" ใน guest OS ของคุณ (อย่างไรก็ตามมันใช้งานได้กับ guest OS; บน Windows XP เป็นเพียง " โฮสต์ "ไฟล์ที่ฝังอยู่ใน C: / WINDOWS / system32 / drivers / etc) ตั้งชื่อที่คุณต้องการใช้เป็นชื่อโฮสต์ของโฮสต์

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

ตัวอย่างเช่นใน Ubuntu Ubuntu 11.04 ของฉันฉันได้รับ "vboxnet0" อินเทอร์เฟซเสมือนบน 192.168.56.1 อะแดปเตอร์ในเครื่องมีบางอย่างเช่น 192.168.56.101 ฉันไม่จำเป็นต้องเข้าไปใน VMs ของฉัน แต่ฉันคิดว่ามันจะเป็นไปได้ผ่านการเปลี่ยนแปลงสมมาตรเป็นไฟล์โฮสต์ของโฮสต์ ฉันเพิ่ม

192.168.56.1 mymachine

ไปยังไฟล์โฮสต์ guest OS และพวกเขาสามารถ (ตัวอย่าง) ดูเว็บเซิร์ฟเวอร์ของเครื่องโฮสต์ของฉันที่

http://mymachine/whatever

แน่นอนว่าคุณสามารถติดตั้งอะแดปเตอร์ทั้งบริดจ์และโฮสต์เท่านั้น


0

คุณสามารถสร้างโฟลเดอร์ที่แชร์ได้ใน VirtualBox สิ่งนี้จะสร้าง 'แชร์เครือข่าย' โดยอัตโนมัติภายในกล่องเสมือนเพื่อเข้าถึงโฟลเดอร์ในโฮสต์ระบบของคุณ

นี่เป็นขั้นตอนที่เหมาะสมใน Windows XP guest OS:

http://www.giannistsakiris.com/index.php/2007/09/28/virtualbox-access-shared-folders-from-windows-xp-guest-os/


ดังนั้นฉันสามารถเข้าถึงโฮสต์ของฉันที่ / vboxsvr / ShareName?
Naftuli Kay

ใช่คุณจะตั้งโฟลเดอร์เช่น C: \ STUFF เพื่อแบ่งปันกับ VirtualBox ภายใน VirtualBox Guest OS คุณสามารถไปที่ vboxserver นั้นและเข้าถึงโฟลเดอร์ที่แชร์
kobaltz

จริงๆแล้วฉันไม่ต้องการโฟลเดอร์แชร์ ฉันต้องการที่อยู่ IP สำหรับเครื่องโฮสต์ของฉัน เมื่อฉันได้รับฉันต้องการใช้เพื่อใช้บริการบนเครื่องโฮสต์ของฉันเช่น: echo "GET /\r\n\r\n" | nc 192.168.100.100 80(ส่งคำขอ HTTP GET ไปยังเครื่องโฮสต์ของฉันจากแขก)
Naftuli Kay

1
ในกรณีดังกล่าวคุณอาจต้องตั้งค่าการ์ดเชื่อมต่อเครือข่าย Guest OS ของคุณเป็นบริดจ์ สิ่งนี้จะดึงที่อยู่ IP จาก DHCP หรือเราเตอร์ของคุณ จากนั้นคุณจะสามารถเข้าถึงเครื่องโฮสต์ของคุณผ่านทางที่อยู่ IP แทนโฟลเดอร์แชร์ VBox
kobaltz

0

นี่คือวิธีแก้ไขปัญหานี้อีกโดยใช้อินเทอร์เฟซเครือข่ายเพิ่มเติมและการตั้งค่าปริมาณข้อมูลที่กำหนดสำหรับโฮสต์เพื่อกำหนดเส้นทางผ่านอินเทอร์เฟซเพิ่มเติม


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