ฉันต้องการเข้าถึงคอมพิวเตอร์โฮสต์จากแขกใน VirtualBox เป็นหลัก มีที่อยู่ IP สำหรับโฮสต์ของฉันที่ฉันสามารถใช้จากแขกได้หรือไม่? จำเป็นต้องมีขั้นตอนพิเศษในการตั้งค่านี้หรือไม่? ฉันต้องการเข้าถึงบริการ Apache, FTP และ SSH ของโฮสต์
ฉันต้องการเข้าถึงคอมพิวเตอร์โฮสต์จากแขกใน VirtualBox เป็นหลัก มีที่อยู่ IP สำหรับโฮสต์ของฉันที่ฉันสามารถใช้จากแขกได้หรือไม่? จำเป็นต้องมีขั้นตอนพิเศษในการตั้งค่านี้หรือไม่? ฉันต้องการเข้าถึงบริการ Apache, FTP และ SSH ของโฮสต์
คำตอบ:
คำตอบนี้เกี่ยวกับการติดตั้งระบบปฏิบัติการ 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
ในตัวอย่างนี้ผู้เข้าพักสามารถเข้าถึงเครื่องโฮสต์
10.0.2.2
และ nmap ของ IP นั้นล้มเหลว 192.168.33.1 น่าจะเป็น IP ที่ถูกต้อง (ฉันมีconfig.vm.network :hostonly, "192.168.33.52"
ในการตั้งค่าของฉัน.)
netstat -rn
บน CentOS 7.2 Docker 1.11 แสดงที่172.17
อยู่เป็นเกตเวย์ของฉัน แต่ IP นั้นไม่ตรงกับโฮสต์ของฉัน ปรากฎว่า10.0.2.2
ทำ
การเข้าถึงเว็บเซิร์ฟเวอร์ของโฮสต์คอมพิวเตอร์จากแขกเป็นเรื่องง่าย สามารถทำได้อย่างง่ายดายโดยใช้สองวิธี ก่อนอื่นให้ทำดังนี้
ถ้าค่าเป็นNATให้ทำตาม
เกตเวย์เริ่มต้นเมื่อคุณติดตั้งกล่องเสมือนโดยทั่วไปจะ
10.0.2.2
เป็นค่าเริ่มต้น หากคุณไม่ได้เปลี่ยนแปลงอะไรเลยสิ่งนี้จะใช้ได้ แต่ถ้าคุณเปลี่ยนมันและเครื่องที่คุณใช้งานอยู่ก็คือหน้าต่างทำงานตามคำสั่งและค้นหาเกตเวย์เริ่มต้น
ipconfig /all
หากคุณอยู่บนLinux, Unix หรือ Mac OS ให้เรียกใช้คำสั่งต่อไปนี้เพื่อขอรับ
netstat -rn | grep 'default' | awk '{print $2}'
ไปที่เว็บเบราว์เซอร์แล้วพิมพ์เกตเวย์เริ่มต้นนี้แล้วกด Enter เว็บเซิร์ฟเวอร์สามารถเข้าถึงได้
ipconfig
และรับที่อยู่ IPifconfig | grep 'inet'
และรับที่อยู่ IPอีกวิธีในการทำเช่นนี้คือใช้เครือข่ายเสมือนประเภท "โฮสต์" ที่ให้อินเทอร์เฟซใน guest OS พร้อมที่อยู่บนซับเน็ตท้องถิ่นแตกต่างจากซับเน็ต"โลกภายนอก" ที่เครื่องโฮสต์ของคุณเปิดอยู่ ในการทำให้งานนี้คุณต้องทำให้แน่ใจว่า:
เมื่อคุณทำสิ่งนี้แล้วคุณควรจะสามารถ "เห็น" โฮสต์จาก 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
แน่นอนว่าคุณสามารถติดตั้งอะแดปเตอร์ทั้งบริดจ์และโฮสต์เท่านั้น
คุณสามารถสร้างโฟลเดอร์ที่แชร์ได้ใน VirtualBox สิ่งนี้จะสร้าง 'แชร์เครือข่าย' โดยอัตโนมัติภายในกล่องเสมือนเพื่อเข้าถึงโฟลเดอร์ในโฮสต์ระบบของคุณ
นี่เป็นขั้นตอนที่เหมาะสมใน Windows XP guest OS:
echo "GET /\r\n\r\n" | nc 192.168.100.100 80
(ส่งคำขอ HTTP GET ไปยังเครื่องโฮสต์ของฉันจากแขก)
นี่คือวิธีแก้ไขปัญหานี้อีกโดยใช้อินเทอร์เฟซเครือข่ายเพิ่มเติมและการตั้งค่าปริมาณข้อมูลที่กำหนดสำหรับโฮสต์เพื่อกำหนดเส้นทางผ่านอินเทอร์เฟซเพิ่มเติม