Virtualbox“ พอร์ตส่งต่อ” จากแขกไปยังโฮสต์ [ปิด]


162

นี่คือการตั้งค่าของฉัน:

- Host: Windows XP
- Guest: Ubuntu 10.04
- Networking: NAT

ผมตั้งเว็บเซิร์ฟเวอร์ Apache บนแขก แต่ฉันต้องการที่จะสามารถที่จะทำนี้บนเครื่อง Windows:

- go to the browser, type http://localhost:8000

นอกจากนี้ฉันพยายามเปลี่ยนเครือข่ายของฉันเป็นบริดจ์และฉันได้รับ IP ใหม่ แต่เมื่อฉันพยายามทำ http: //: 8000 มันบอกว่ามันไม่สามารถเชื่อมต่อได้


1
ผมมีปัญหาเหมือนกัน. ปรากฎว่า guest OS มีไฟร์วอลล์ที่แอคทีฟบล็อกพอร์ต 80
Nicholas Shanks

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

1
1. ไปที่ VM 2. ifconfig (รับ IP ภายในเครื่อง - ควรเป็น 10.0.2.X) 3. ssh 10.0.2.2 เพื่อไปยังเครื่องโฮสต์
Mark Roberts

@deeperDATA อาจอยู่ในขอบเขตของงานของผู้พัฒนาเว็บ แต่สแต็คโอเวอร์โฟลว์ไม่ได้มีไว้เพื่อแค็ปซูลทุกส่วนของงาน มันเป็นเครื่องพิสูจน์ถึงความซับซ้อนของอาชีพของเราที่ความต้องการของมันครอบคลุมไซต์แลกเปลี่ยนสแต็คจำนวนมาก
Kevin Lawrence

1
ฉันใช้เวลานานกว่าจะทำให้มันทำงานได้ ปัญหาของเราคือการผูก IP ของแอปพลิเคชั่นในระบบแขกมันผูกกับชื่อเครื่องหมายถึง 127.0.1.1 ใน Ubuntu เราเปลี่ยนการเชื่อมโยงเป็น 0.0.0.0 พอร์ตการตั้งค่าการส่งต่อ: โฮสต์ IP = โฮสต์ DNS IP Host, พอร์ต = 8080, บุคคลทั่วไป IP = IP ของ eth0, บุคคลทั่วไปพอร์ต = 8080
slowy

คำตอบ:


222

เครือข่ายการสื่อสารโฮสต์ -> แขก

เชื่อมต่อกับแขกและหาที่อยู่ IP:

ifconfig 

ตัวอย่างของผลลัพธ์ (ที่อยู่ ip คือ 10.0.2.15):

eth0      Link encap:Ethernet  HWaddr 08:00:27:AE:36:99
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0

ไปที่หน้าต่างเช่น VBox - เมนู> -> อะแดปเตอร์เครือข่าย:

  • อะแดปเตอร์ควรจะ NAT
  • คลิกที่ "การส่งต่อพอร์ต"
  • แทรกบันทึกใหม่ (+ ไอคอน)
    • สำหรับ host ip ให้ป้อน 127.0.0.1 และสำหรับที่อยู่ ip ของผู้เยี่ยมชมที่คุณได้รับจาก prev ขั้นตอน (ในกรณีของฉันคือ 10.0.2.15)
    • ในพอร์ตเคสของคุณคือ 8000 - วางไว้บนทั้งคู่ แต่คุณสามารถเปลี่ยนพอร์ตโฮสต์ได้หากคุณต้องการ

ไปที่ระบบโฮสต์และลองในเบราว์เซอร์:

http://127.0.0.1:8000

หรือที่อยู่ IP เครือข่ายของคุณ (ค้นหาบนเครื่องโฮสต์โดยเรียกใช้: ipconfig)

เครือข่ายการสื่อสารบุคคลทั่วไป -> โฮสต์

ในกรณีนี้ไม่จำเป็นต้องส่งต่อพอร์ตการสื่อสารผ่าน LAN กลับไปที่โฮสต์

บนเครื่องโฮสต์ - ค้นหาที่อยู่ ip ของคุณ:

ipconfig

ตัวอย่างของผลลัพธ์:

IP Address. . . . . . . . . . . . : 192.168.5.1

บนเครื่องแขกคุณสามารถสื่อสารโดยตรงกับโฮสต์เช่นตรวจสอบด้วย ping:

# ping 192.168.5.1
PING 192.168.5.1 (192.168.5.1) 56(84) bytes of data.
64 bytes from 192.168.5.1: icmp_seq=1 ttl=128 time=2.30 ms
...

11
พอร์ตทั้งสองจะไม่เป็น 8000 พอร์ตโฮสต์จะเป็น 8000 หรือที่คุณต้องการ แต่พอร์ตแขกควรเป็น 80
Yasin

5
การรับจาก VM ไปยังโฮสต์ในกรณีนี้ควรเป็นไปได้โดยไปที่ VM และรับที่อยู่ IP ของ ITS (10.0.2.15 ดังด้านล่าง) ในการเข้าถึงเครื่องโฮสต์จาก VM นั้น IP คือ 10.0.2.2 (ตามแบบแผน)
Mark Roberts

5
หากใช้ NAT สำหรับผู้เยี่ยมชม ... หากบริการที่ทำงานบนโฮสต์ถูกผูกไว้กับ 127.0.0.1 เท่านั้นแขกจะไม่สามารถใช้ไอพีสาธารณะของโฮสต์เพื่อเชื่อมต่อกับบริการนั้น (ตัวอย่างเช่นบริการ: privoxy) แต่คุณต้องใช้ 10.0.2.2 ตามที่ระบุไว้โดย Mark หรือสิ่งใด 'เส้นทาง -n' (ทำงานบนแขก) จะแสดงเป็นเกตเวย์เริ่มต้น
desm 6'14

4
ในกรณีของ CentOS เราอาจต้องปิดการใช้งานไฟร์วอลล์หรือแก้ไขกฎเฉพาะใน iptable
Reddy

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

14

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

หากคุณต้องการเข้าถึงเช่นในเบราว์เซอร์ให้เชื่อมต่อกับมันโดยใช้ IP ท้องถิ่นแทน:

http://192.168.180.1:8000

นี่เป็นเพียงตัวอย่างของหลักสูตรคุณสามารถหา IP ที่เกิดขึ้นจริงโดยการออกifconfigคำสั่งบนเปลือกในระบบปฏิบัติการของผู้เข้าพัก


ฉันลองสิ่งนี้เช่นกัน แต่ไม่ได้ผลกับทั้ง NAT และบริดจ์ บันทึก apache ในผู้เยี่ยมชมไม่ได้ให้ข้อผิดพลาดใด ๆ และ apache จะเปิดใช้งานในผู้เยี่ยมชม
Carmen

คุณแน่ใจหรือว่าคุณใช้ IP ที่ถูกต้อง คุณสามารถตรวจสอบว่าโดยพยายามที่จะเข้าถึงที่อยู่จากภายในเครื่องเสมือน หากล้มเหลวคุณกำลังใช้ IP ผิดหรือไม่ได้ตั้งค่า apache ให้ฟังบนพอร์ต 8080
Chris

ทำงานให้ฉัน - ขอบคุณ!
Matt Frear

ทำงานให้ฉันเช่นกัน ก่อนที่จะแทนที่ "localhost" ด้วยที่อยู่ IP ของโฮสต์ OS ฉันจะได้รับ "เซิร์ฟเวอร์ปฏิเสธคีย์ของคุณ" และ "การเข้าถึงถูกปฏิเสธ" โดยไม่มีคำอธิบายใน /var/log/auth.log แม้ LogLevel DEBUG3 ใน / etc / ssh / sshd_config
VR

@Chris หมายความว่าบนโฮสต์ที่มีรายการโฮสต์เสมือนเช่นmysite.localhostจะไม่สามารถเข้าถึงเครื่อง Guest เพราะฉันต้องอ้างถึงโฮสต์โดยใช้ที่อยู่ IP เท่านั้นหรือไม่
danjah
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.