หน้าเว็บ

วันเสาร์ที่ 12 กรกฎาคม พ.ศ. 2551

การเชื่อมต่อเนตเวิร์คเข้าสู่เครื่อง guest ใน VirtualBox

โดย default แล้ว Virtual Box นั้น เครื่องที่เป็น Guest (OS ที่ run ใน VirtualBox) จะใช้ NAT ในการเชื่อมต่อกับ Network ภายนอก (Network ของเครื่อง Host (OS หลักของเครื่องเราจริงๆ) )

แต่ปัญหาคือมันยอมให้ traffic request ออกด้านนอกได้ แต่มันไม่ยอมให้ traffic request จากด้านนอกเข้ามานี่สิ (คือยอมให้เราเข้าเวบด้านนอกได้ แต่ถ้าเราอยากจะ access ไปที่ web server ที่เราตั้งเอาไว้ใน guest จะยังทำไม่ได้)

วิธีแก้อย่างง่ายๆ คือ ใช้ VBoxManage ในการทำ Port Forwarding ของเครื่อง Host เพื่อไปยังเครื่อง Guest

เริ่มจาก ปิดตัว VirtualBox ซะก่อน (จะแค่สั่ง pause แล้ว save state ก็ได้)

ในเครื่อง Host เข้า Command Line (Cmd)


ถ้าไ่ม่ได้ตั้งค่า path ของ VirtualBox ให้ cd ไปที่ VirtualBox ที่เราลงไว้ เช่น C:\Program Files\innotek VirtualBox
แ้ล้วสั่งคำสั่งต่อไปนี้

1. ตั้งว่าจะใช้โปรโตคอลอะไร
VBoxManage setextradata "yourguestosname" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/http/Protocol" TCP

2. ตั้งว่าจะให้ไปเข้า Port อะไรของเครื่อง Guest
VBoxManage setextradata "yourguestosname" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/http/GuestPort" 80

3. ตั้งว่าจะใช้ port อะไรของเครื่อง Host
VBoxManage setextradata "yourguestosname" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/http/HostPort" 8888

โดย yourguestosname ให้แทนด้วยชื่อ Guest OS ที่ได้ตั้งเอาไว้ เช่นของผมตั้งไว้ว่า GUESTWIN
ส่วนคำว่า http ก็สามารถแทนด้วยชื่อ application อื่นๆที่ต้องการ เช่น ftp
แล้วก็หมายเลขก็ตาม app ที่เราให้บริการ

พอเซตค่าเสร็จก็เปิดให้ VirtualBox ทำงานก็จะพร้อมทำงานได้

จากตัวอย่างคือผมจะเข้า web server ของเครื่ือง Guest ที่เปิด port 80 เอาไว้ โดยสามารถพิมพ์ URL ใน browser ของเครื่อง host คือ http://localhost:8888/index.html เป็นต้น

ระบบที่ผมใช้ทดลอง
Host: Windows XP SP2
Guest: Windows Server 2003 SP2
VirtualBox: Version 1.5.6

2 ความคิดเห็น:

Unknown กล่าวว่า...

พี่คับ รบกวนถามหน่อยคับ คือผม set network เป็น Bridged adapter,MAC Bridge Miniport เวลาทดลอง ping จากเครื่องหลักไปยัง virtualbox มันต้องพิม ping hostname ดอท อะไรแล้วอ่าคับ

ไม่ระบุชื่อ กล่าวว่า...

ผมว่าถ้าจะให้ง่ายกว่านั้นแค่ตั้งค่า network เป็น Bridged adapter ก็จบแล้วละครับผลที่ได้เหมือนกันเลยไม่ยุ่งยากด้วย