การกำหนดค่า NAT Network ใน VirtualBox

การกำหนดค่า NAT Network ใน VirtualBox

ทำไม VM ออกเน็ตได้ แต่คุยกันเองไม่ได้

หลายคนที่เริ่มใช้ VirtualBox มักเจอปัญหาคล้ายกัน คือสร้าง Ubuntu Server หรือ Rocky Linux ขึ้นมาทดสอบหลายเครื่อง แต่เครื่องเสมือนออกอินเทอร์เน็ตได้เพียงอย่างเดียว กลับไม่สามารถสื่อสารกันเองได้ หรือ SSH จากเครื่อง Host เข้าไปยัง VM ไม่ได้ตามที่ต้องการ

สาเหตุหลักมักมาจากการเลือกโหมด Network Adapter ไม่เหมาะสม โดยเฉพาะการใช้โหมด NAT แบบปกติ ซึ่งเหมาะสำหรับ VM เดี่ยว แต่ถ้าต้องการสร้าง Lab หลายเครื่อง เช่น Web Server, Database Server, Monitoring Server หรือ Kubernetes Lab การใช้ NAT Network จะเหมาะสมกว่า เพราะ VM หลายเครื่องสามารถอยู่ในเครือข่ายเดียวกัน ออกอินเทอร์เน็ตผ่าน Host ได้ และยังแยกออกจาก LAN จริงเพื่อความปลอดภัย

บทความนี้จะพาไปตั้งค่า NAT Network ใน VirtualBox แบบทีละขั้นตอน พร้อมตัวอย่างการทดสอบ IP, Internet, SSH และ Port Forwarding


NAT Network คืออะไร

NAT Network คือโหมดเครือข่ายใน VirtualBox ที่ทำงานคล้าย Router ภายในเครื่องคอมพิวเตอร์ของเรา โดย VM ที่เชื่อมต่อกับ NAT Network จะได้รับ IP Address ภายในวงเดียวกัน เช่น 192.168.100.0/24 และสามารถออกอินเทอร์เน็ตผ่านเครื่อง Host ได้

จุดเด่นของ NAT Network คือ

  • VM หลายเครื่องสามารถสื่อสารกันเองได้

  • VM สามารถออกอินเทอร์เน็ตได้

  • ไม่รบกวนเครือข่ายจริงขององค์กรหรือบ้าน

  • เหมาะสำหรับทำ Lab ด้าน Linux Server, Docker, DevOps และ Cybersecurity

  • สามารถทำ Port Forwarding เพื่อ SSH หรือเข้าถึง Web Server ใน VM ได้

ให้มองภาพง่าย ๆ แบบนี้



พื้นฐานที่จำเป็นก่อนเริ่ม

บทความนี้ทดสอบตามแนวทางต่อไปนี้

  • Host OS: Windows 11 หรือ Linux Desktop

  • VirtualBox: 7.2.x

  • Guest OS: Ubuntu Server 24.04/26.04 หรือ Rocky Linux 9/10

  • มี VM อย่างน้อย 1–2 เครื่อง

  • ผู้ใช้มีสิทธิ์เปิด VirtualBox Manager ได้

  • ถ้าจะใช้คำสั่ง VBoxManage ต้องเข้าถึง Terminal หรือ PowerShell ได้

ตัวอย่างในบทความนี้จะใช้เครือข่ายจำลองชื่อ

nat-lab

และใช้วง IP

192.168.100.0/24

โดย Gateway มักเป็น

192.168.100.1

NAT, NAT Network, Bridged และ Host-only ต่างกันอย่างไร

ก่อนตั้งค่า ควรเข้าใจความแตกต่างแบบสั้น ๆ ก่อน

NAT

เหมาะกับ VM เครื่องเดียวที่ต้องการออกอินเทอร์เน็ตอย่างง่าย ไม่ต้องตั้งค่าเยอะ แต่ VM แต่ละเครื่องมักถูกแยกอยู่คนละ NAT engine ทำให้การสื่อสารระหว่าง VM ไม่สะดวก

NAT Network

เหมาะกับการทำ Lab หลายเครื่อง VM สามารถคุยกันเองได้ และยังออกอินเทอร์เน็ตได้ผ่าน Host เหมาะสำหรับ SysAdmin Lab มากที่สุดในหลายกรณี

Bridged Adapter

VM จะไปอยู่ในวง LAN จริงเหมือนเป็นเครื่องอีกเครื่องหนึ่ง เหมาะเมื่อต้องการให้เครื่องอื่นในเครือข่ายจริงเข้าถึง VM ได้โดยตรง แต่ต้องระวังเรื่องความปลอดภัยและ IP ซ้ำ

Host-only Adapter

VM คุยกับ Host ได้ และ VM คุยกันเองได้ แต่โดยทั่วไปจะออกอินเทอร์เน็ตไม่ได้ ถ้าไม่ได้ตั้งค่าเพิ่มเติม

สรุปง่าย ๆ

NAT          = VM ออกเน็ตง่าย แต่เหมาะกับ VM เดี่ยว
NAT Network  = VM หลายเครื่องคุยกันได้ + ออกเน็ตได้
Bridged      = VM อยู่ใน LAN จริง
Host-only    = Lab ปิด คุยกับ Host ได้ แต่ออกเน็ตไม่ได้โดยตรง

ขั้นตอนที่ 1: สร้าง NAT Network ใน VirtualBox

เปิดโปรแกรม Oracle VirtualBox Manager

จากนั้นไปที่เมนู

File > Tools > Network

เลือกแท็บ NAT Networks

กดปุ่ม Create

จากนั้นกด Properties แล้วกำหนดค่าดังนี้

Name: nat-lab
IPv4 Prefix: 192.168.100.0/24
Enable DHCP: เปิดใช้งาน
Supports IPv6: ปิดไว้ก่อนได้ ถ้ายังไม่ได้ทดสอบ IPv6

แนะนำให้เปิด DHCP ไว้ก่อน เพื่อให้ VM ได้ IP อัตโนมัติ เหมาะสำหรับผู้เริ่มต้นและลดโอกาสตั้งค่า IP ผิด

แนะนำ Screenshot:
ควรใส่ภาพหน้าจอ Network Manager > NAT Networks หลังสร้าง nat-lab สำเร็จ


ขั้นตอนที่ 2: ผูก VM เข้ากับ NAT Network

เลือก VM ที่ต้องการตั้งค่า เช่น Ubuntu-Server-01

คลิก

Settings > Network

ที่ Adapter 1 ให้ตั้งค่าดังนี้

Enable Network Adapter: เปิด
Attached to: NAT Network
Name: nat-lab
Adapter Type: Intel PRO/1000 MT Desktop หรือค่า Default
Cable Connected: เปิด

กด OK

ทำแบบเดียวกันกับ VM เครื่องที่ 2 เช่น Rocky-Server-01

แนะนำ Screenshot:
ควรใส่ภาพหน้าจอ Settings > Network > Adapter 1 ที่เลือกเป็น NAT Network


ขั้นตอนที่ 3: เปิด VM แล้วตรวจสอบ IP Address

เปิด VM แล้ว Login เข้า Ubuntu Server หรือ Rocky Linux

สำหรับ Ubuntu Server ใช้คำสั่ง

ip addr

หรือแบบสั้น

ip -br addr

ตัวอย่างผลลัพธ์ที่ควรเห็น

enp0s3    UP    192.168.100.10/24

ตรวจสอบ Default Gateway

ip route

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

default via 192.168.100.1 dev enp0s3

ถ้าใช้ Rocky Linux ก็ใช้คำสั่งเดียวกันได้

ip -br addr
ip route

ถ้า VM ยังไม่ได้ IP ให้ลองขอ IP ใหม่ด้วยคำสั่ง

# Ubuntu / Debian
sudo dhclient -v

สำหรับ Rocky Linux ที่ใช้ NetworkManager

# สั่งให้ NetworkManager เชื่อมต่อใหม่
sudo nmcli networking off
sudo nmcli networking on

ขั้นตอนที่ 4: ทดสอบออกอินเทอร์เน็ต

ให้ทดสอบ DNS และ Internet ด้วยคำสั่ง

# ทดสอบ ping ไปยัง DNS ของ Google
ping -c 4 8.8.8.8

จากนั้นทดสอบชื่อโดเมน

# ทดสอบว่า DNS ทำงานหรือไม่
ping -c 4 google.com

ถ้า 8.8.8.8 ping ได้ แต่ google.com ping ไม่ได้ แสดงว่า Internet ใช้ได้ แต่ DNS มีปัญหา

ตรวจสอบไฟล์ DNS resolver

cat /etc/resolv.conf

บน Ubuntu Server ที่ใช้ systemd-resolved อาจตรวจสอบเพิ่มได้ด้วย

resolvectl status

ขั้นตอนที่ 5: ทดสอบให้ VM คุยกันเอง

สมมุติมี VM 2 เครื่อง

Ubuntu-Server-01 = 192.168.100.10
Rocky-Server-01  = 192.168.100.11

จากเครื่อง Ubuntu ให้ ping ไปที่ Rocky

ping -c 4 192.168.100.11

จากเครื่อง Rocky ให้ ping กลับไปที่ Ubuntu

ping -c 4 192.168.100.10

ถ้า ping ได้ แปลว่า NAT Network ทำงานถูกต้อง และ VM ทั้งสองเครื่องอยู่ในเครือข่ายเดียวกันแล้ว

⚠️ ถ้า ping ไม่ได้ อาจเกิดจาก firewall ภายใน Guest OS ไม่อนุญาต ICMP หรือ Network Adapter ของ VM ไม่ได้เลือก nat-lab เหมือนกัน


ขั้นตอนที่ 6: ตั้งค่า SSH Server ใน VM

ถ้าต้องการ SSH เข้า VM จากเครื่อง Host ให้ติดตั้ง OpenSSH Server ก่อน

สำหรับ Ubuntu Server

# อัปเดต package index
sudo apt update

# ติดตั้ง OpenSSH Server
sudo apt install -y openssh-server

# ตรวจสอบสถานะ SSH
sudo systemctl status ssh

สำหรับ Rocky Linux

# ติดตั้ง OpenSSH Server
sudo dnf install -y openssh-server

# เปิดใช้งาน SSH ทันที และให้เริ่มอัตโนมัติหลัง reboot
sudo systemctl enable --now sshd

# ตรวจสอบสถานะ SSH
sudo systemctl status sshd

ถ้าใช้ Rocky Linux และเปิด firewalld อยู่ ให้ตรวจสอบว่าอนุญาต SSH แล้ว

# ตรวจสอบ service ที่ firewall อนุญาต
sudo firewall-cmd --list-services

ถ้ายังไม่มี ssh ให้เพิ่มอย่างปลอดภัย

# อนุญาตเฉพาะ service SSH
sudo firewall-cmd --add-service=ssh --permanent

# โหลดค่า firewall ใหม่
sudo firewall-cmd --reload

ขั้นตอนที่ 7: ทำ Port Forwarding เพื่อ SSH จาก Host เข้า VM

ในกรณี NAT Network เครื่อง Host จะไม่สามารถเข้าถึง VM จาก IP ภายในได้เสมอไป ขึ้นกับระบบและการตั้งค่า ดังนั้นวิธีที่ควบคุมง่ายคือการทำ Port Forwarding

ไปที่

File > Tools > Network Manager > NAT Networks

เลือก nat-lab

เข้าแท็บ Port Forwarding

เพิ่ม Rule ใหม่ เช่น

Name: ssh-ubuntu
Protocol: TCP
Host IP: 127.0.0.1
Host Port: 2222
Guest IP: 192.168.100.10
Guest Port: 22

ความหมายคือ เมื่อเรา SSH ไปที่ 127.0.0.1:2222 บนเครื่อง Host ระบบจะส่งต่อไปยัง VM ที่ IP 192.168.100.10 port 22

ทดสอบจากเครื่อง Host

ssh username@127.0.0.1 -p 2222

ตัวอย่าง

ssh sysadmin@127.0.0.1 -p 2222

⚠️ คำเตือน: อย่ากำหนด Host IP เป็นค่าว่างหรือ 0.0.0.0 ถ้าไม่ต้องการเปิดให้เครื่องอื่นใน LAN เข้าถึง VM ควรใช้ 127.0.0.1 เพื่อจำกัดเฉพาะเครื่อง Host เท่านั้น


ขั้นตอนที่ 8: สร้าง NAT Network ด้วย VBoxManage

สำหรับผู้ดูแลระบบที่ต้องการทำซ้ำหลายเครื่อง หรือเขียนเป็น Script สามารถใช้ VBoxManage ได้

บน Linux/macOS ใช้คำสั่งนี้ได้โดยตรง

# สร้าง NAT Network ชื่อ nat-lab พร้อมเปิด DHCP
VBoxManage natnetwork add \
  --netname nat-lab \
  --network "192.168.100.0/24" \
  --enable \
  --dhcp on

เริ่มการทำงานของ NAT Network

# เริ่ม NAT Network
VBoxManage natnetwork start --netname nat-lab

ตรวจสอบรายการ NAT Network

# แสดง NAT Network ทั้งหมด
VBoxManage list natnetworks

เพิ่ม Port Forwarding สำหรับ SSH

# Forward Host port 2222 ไปยัง VM 192.168.100.10 port 22
VBoxManage natnetwork modify \
  --netname nat-lab \
  --port-forward-4 "ssh-ubuntu:tcp:[127.0.0.1]:2222:[192.168.100.10]:22"

ลบ Port Forwarding

# ลบ rule ชื่อ ssh-ubuntu
VBoxManage natnetwork modify \
  --netname nat-lab \
  --port-forward-4 delete ssh-ubuntu

ลบ NAT Network

# ⚠️ ใช้เมื่อต้องการลบ NAT Network จริง ๆ
VBoxManage natnetwork remove --netname nat-lab

สำหรับ Windows ให้เปิด PowerShell แล้วเข้าโฟลเดอร์ VirtualBox ก่อน เช่น

cd "C:\Program Files\Oracle\VirtualBox"

จากนั้นจึงใช้คำสั่ง

.\VBoxManage.exe list natnetworks

ทดสอบและ Verify

หลังตั้งค่าเสร็จ ควรตรวจสอบตามลำดับนี้

1. VM ได้ IP หรือไม่

ip -br addr

ควรเห็น IP อยู่ในวงที่ตั้งไว้ เช่น

192.168.100.x/24

2. มี Default Gateway หรือไม่

ip route

ควรเห็นบรรทัด default via

3. ออกอินเทอร์เน็ตได้หรือไม่

ping -c 4 8.8.8.8
ping -c 4 google.com

4. VM คุยกันเองได้หรือไม่

ping -c 4 192.168.100.11

5. SSH ผ่าน Port Forwarding ได้หรือไม่

จาก Host ทดสอบ

ssh username@127.0.0.1 -p 2222

ถ้าทำครบทั้งหมดแล้วผ่าน แสดงว่า NAT Network พร้อมใช้งานสำหรับ Lab แล้ว


Troubleshooting ที่พบบ่อย

VM ไม่ได้ IP Address

ให้ตรวจสอบว่า NAT Network เปิด DHCP แล้วหรือยัง และ VM เลือก Network Name ถูกต้องหรือไม่

Attached to: NAT Network
Name: nat-lab

จากนั้น Restart VM หรือสั่งขอ IP ใหม่

sudo dhclient -v

VM ออกเน็ตไม่ได้

ตรวจสอบ Gateway

ip route

ตรวจสอบ DNS

cat /etc/resolv.conf

และลอง Restart NAT Network จาก VirtualBox Network Manager

SSH เข้าไม่ได้

ตรวจสอบ 4 จุดนี้

# ตรวจสอบว่า SSH ทำงานหรือไม่
sudo systemctl status ssh

หรือบน Rocky Linux

sudo systemctl status sshd

ตรวจสอบ IP ของ VM

ip -br addr

ตรวจสอบ firewall

sudo firewall-cmd --list-services

ตรวจสอบ Port Forwarding ว่า Host Port และ Guest IP ถูกต้องหรือไม่

Host Port ซ้ำ

ถ้าใช้ port 2222 แล้วไม่ได้ อาจมีโปรแกรมอื่นใช้อยู่ ลองเปลี่ยนเป็น 2223, 2224 หรือหมายเลขอื่นที่ไม่ชนกัน


Best Practice สำหรับทำ Lab ด้วย NAT Network

แนะนำให้กำหนด IP Range แยกตามประเภท Lab เช่น

192.168.100.0/24 = Linux Server Lab
192.168.110.0/24 = Docker Lab
192.168.120.0/24 = Cybersecurity Lab
192.168.130.0/24 = Kubernetes Lab

ถ้าเป็น Lab ที่ต้องการความแน่นอน เช่น Ansible, Kubernetes, DNS Server หรือ Monitoring ควรกำหนด Static IP ให้แต่ละ VM เพื่อให้อ้างอิงง่าย

ตัวอย่างการวางแผน IP

192.168.100.10 = ubuntu-server-01
192.168.100.11 = rocky-server-01
192.168.100.20 = docker-node-01
192.168.100.30 = monitoring-server

อย่าลืมตั้ง hostname ให้สื่อความหมาย เช่น

# เปลี่ยน hostname บน Ubuntu/Rocky
sudo hostnamectl set-hostname ubuntu-server-01

สรุป

NAT Network ใน VirtualBox เป็นโหมดเครือข่ายที่เหมาะมากสำหรับการทำ Lab ด้าน System Administration เพราะช่วยให้ VM หลายเครื่องอยู่ในวงเดียวกัน สื่อสารกันเองได้ และยังออกอินเทอร์เน็ตได้โดยไม่ต้องนำ VM ไปผูกกับ LAN จริงโดยตรง

สำหรับผู้เริ่มต้น แนะนำให้เริ่มจากการสร้าง NAT Network ผ่าน GUI ก่อน จากนั้นค่อยเรียนรู้การใช้ VBoxManage เพื่อทำ Automation หรือสร้าง Lab ซ้ำได้รวดเร็วขึ้น เมื่อเข้าใจ NAT Network แล้ว จะสามารถต่อยอดไปทำ Lab ที่ซับซ้อนขึ้นได้ เช่น Web Server + Database Server, Docker Compose, Ansible, Kubernetes, Monitoring ด้วย Prometheus/Grafana หรือ Cybersecurity Lab แบบแยกเครือข่าย



Write by Dr.Arnut Ruttanatirakul
SysAdmin Knowledge
https://www.sysadmin.in.th
June 13, 2026