Choose Network Type In VirtualBox

เมื่อต้องไปจัดอบรม และต้องใช้ Oracle VM VirtualBox สำหรับสร้าง Virtual Machine (VM) จำนวนหนึ่ง (มากกว่า 1 ตัว ฮ่า ๆ) เราจำเป็นจะต้องรู้ว่า สภาพแวดล้อมของห้องบริการคอมพิวเตอร์ที่เราไปขอใช้งานนั้น จัด IP ให้กับเครื่อง Windows แบบใด เช่น ในกรณีที่มีการปล่อย DHCP IP แบบเหลือเฟือ การเลือกชนิด network ของ VM แต่ละตัว ก็ง่าย เราก็เลือกตั้งค่าเป็น Bridges ซึ่งแบบนี้ VM แต่ละตัวก็จะได้ IP อยู่ในชุดเดียวกันกับ Windows แต่หากจัด IP แบบตายตัวให้กับ MAC Address ของ PC นั้นเลย และไม่ปล่อย DHCP IP เพิ่มให้ อย่างนี้ เราก็ต้องออกแบบว่าจะให้ VM (Guest) เหล่านั้นใช้ IP อะไร จะทำงานร่วมกันได้อย่างไร และจะให้ VM เหล่านั้น ติดต่อกับ Windows (Host) ด้วยหรือไม่

แบบแรก NAT Network

แบบนี้ VirtualBox จะสร้าง network จำลองขึ้นมาในโปรแกรมมันเองเท่านั้น ผลลัพธ์คือ VM (Guest) ทุกตัวจะทำงานร่วมกันได้ แต่จะติดต่อกับ Windows (Host) ไม่ได้ แบบนี้ VM (Guest) ทุกตัวจะได้รับ IP อยู่ในชุดที่ใช้สำหรับ NAT นั่นคือ 10.0.2.0/24 และ VM แต่ละตัวเมื่อได้ IP จะได้ค่า IP ของ DNS server ที่เครื่อง Windows ใช้งานมาให้ด้วย ทำให้ VM สามารถติดต่อไปใช้งาน Internet ได้

ตัวอย่างเช่น VM 2 ตัว ตั้งค่า network ชนิด NAT Network

VM ตัวที่ 1 จะได้ IP 10.0.2.6 และได้ค่า IP DNS Server ชุดที่ใช้ใน Windows (Host) ใช้งาน Internet ได้เลย

VM ตัวที่ 2 ได้ IP 10.0.2.15 และใช้คำสั่ง ping ไปยัง VM ตัวที่ 1 ได้

แต่ Windows (Host) จะใช้คำสั่ง ping VM ทั้ง 2 ตัว ไม่ได้

สำหรับวิธีการตั้งค่า NAT Network ก็เข้าไปที่ File > Preferences > Network  และเราสามารถแก้ หรือ เพิ่มใหม่ ได้

แบบที่สอง Host-Only Adapter

แบบนี้ VirtualBox จะสร้าง Virtual network adapter เพิ่มลงใน Windows OS ให้ด้วย ผลลัพธ์คือ VM (Guest) ทุกตัวจะทำงานร่วมกันได้ และติดต่อกับ Windows (Host) ได้ แต่แบบนี้ VM (Guest) ทุกตัวจะได้รับ IP ในชุด 192.168.56.0/24 (ค่า default ซึ่งเราจะเปลี่ยนได้) แต่ VM แต่ละตัวจะได้มาเพียง IP จะไม่ได้ค่า IP ของ DNS server ที่เครื่อง Windows ใช้งาน ส่งผลให้ VM ไม่สามารถติดต่อไปใช้งาน Internet ได้ แต่ก็แก้ปัญหานี้ได้โดยการเพิ่ม Network Adapter อันที่สอง และตั้งค่า network เป็นชนิด NAT แล้วไป config ให้มีการ start network interface อันที่สองนี้ใน VM (Guest)

ตัวอย่าง VM 2 ตัว ตั้งค่า network ชนิด Host-only Adapter

 

Windows (Host) ได้ IP เพิ่มขึ้นมาคือ 10.0.0.1 (ผมแก้ค่า default มาเป็นอันใหม่ เดิม 192.168.56.1)

VM 1 ได้ IP 10.0.0.101

VM 2 ได้ IP 10.0.0.102

Windows ใช้คำสั่ง ping ไปยัง VM 1 ได้

VM 1 ใช้คำสั่ง ping ไปยัง VM 2 ได้

VM 1 ไม่ได้ค่า IP DNS server ในไฟล์ /etc/resolv.conf ทำให้ติดต่อใช้งาน Internet ไม่ได้

ต้องปิด VM แล้ว เราต้องเพิ่ม Adapter อันที่ 2 ให้เป็น NAT

เปิด VM จากนั้นเข้าไปใน VM ในตัวอย่างคือ Ubuntu 16.04.4 server ให้เพิ่ม Add NAT interface แล้ว reboot

ข้อความที่เพิ่มคือ (ชื่อ interface enp0s8 จะเปลี่ยนไป อาจไม่ใช่ชื่อนี้ เช็คด้วย ifconfig -a)

auto enp0s8

iface enp0s8 inet dhcp

จะเห็นว่า มี network interface 2 อัน อันที่เพิ่มมาเป็น NAT มี IP เป็น 10.0.3.15

ตอนนี้จะได้ค่า IP DNS Server อยู่ใน /etc/resolv.conf ทำให้ใช้งาน Internet ได้

สำหรับวิธีการเปลี่ยนค่า ชุด IP ของ Host-Only Adapter ทำดังนี้ ผมทำการเปลี่ยนตัวเลขชุด 192.168.56 ทุกแห่งที่แท็บ Adapter และแท็บ DHCP Server

ต้องไป disable และ enable VirtualBox Host-only Network ที่ Windows ด้วย แล้วปิดเปิดโปรแกรม VirtualBox

แบบที่สาม Internal Network

แบบนี้ VirtualBox ไม่ได้สร้าง network จำลอง และไม่ได้สร้าง Virtual network adapter เพิ่มลงใน Windows OS แต่ได้เตรียมชื่อไว้ให้ว่า Intnet (ค่า default) ผลลัพธ์คือ แบบนี้ VM (Guest) ทุกตัว จะต้องตั้งค่า IP เองก่อนจึงทำงานร่วมกันได้ และไม่สามารถติดต่อกับ Windows (Host) ได้ และ ไม่สามารถติดต่อไปใช้งาน Internet ได้ แต่ก็แก้ปัญหานี้ได้โดยการสร้าง VM (Guest) 1 ตัว ให้ทำหน้าที่เป็น Router นั่นคือ มี Network Adapter อันที่ 1 เป็นชนิด NAT และมี Network Adapter อันที่ 2 เป็นชนิด Internal Network (ชื่อ Intnet) เมื่อสร้าง Router นี้ขึ้นมา ก็จะทำให้ VM (Guest) ทุกตัวติดต่อกับ Internet ได้ แต่ตัว Router ต้องทำหน้าที่เป็นทั้ง DHCP Server และ DNS Server เพื่อแจก IP ให้กับ VM และ แจกค่า IP ของ DNS Server ให้ด้วยตามลำดับ การตั้งค่าแบบที่สามนี้ ดู ๆ ไปก็น่าจะยุ่งยากมากในการเตรียม แต่ก็มีความสามารถที่เพิ่มมาคือ เราสามารถจำลองระบบเครือข่ายได้ เช่น สามารถสร้างโดเมนเนมให้กับ VM ที่ทำหน้าที่เป็น Web Server ได้ด้วย เช่น เราอาจจะตั้งชื่อ zone ว่า example.com แล้วเราให้ VM Web Server นี้มีชื่อโดเมนเนมว่า wordpress1.example.com อย่างนี้ เราทำได้

ตัวอย่างเช่น VM 2 ตัวที่ตั้งค่า network แบบ Internal Network

ผมมี myrouter.ova ให้ download ไปใช้ โดยการ import เข้าก็ใช้ได้เลย หากจะเล่าว่าต้องติดตั้งอะไรบ้างคงจะยาวมาก ๆ เอาเป็นว่า ใน myrouter.ova นี้ ผมได้ติดตั้ง DHCP Server ใช้ค่า 10.0.100.0/24, DNS Server ใช้ชื่อโดเมนคือ example.com, Apache2 Web Server และผมมี LDAP Database ou=lulu,ou=example,ou=com ไว้ให้ทดสอบ ด้วยครับ

VM ตัวพิเศษ ทำหน้าที่เป็น Router จะมี Network Adapter 2 อัน อันแรกเป็น NAT อันที่สองเป็น Internal Network ชื่อ Intnet (ชื่อนี้เป็นค่า default เราเปลี่ยนได้)

VM ตัวที่ 1 ตั้งค่า network ชนิด Internal Network

VM ตัวที่ 2 ตั้งค่า network ชนิด Internal Network

หวังว่าคงจะได้นำไปประยุกต์ใช้งานกันนะครับ