1. ภาพรวมของ Netplan ใน Ubuntu
Netplan คืออะไร?
Netplan เป็นเครื่องมือสำหรับจัดการการตั้งค่าเครือข่ายที่ถูกนำมาใช้กับ Ubuntu ตั้งแต่เวอร์ชัน 17.10 ขึ้นไป ก่อนหน้านี้จะใช้ ifconfig
หรือ /etc/network/interfaces
แต่ Netplan ได้มาแทนที่ด้วยรูปแบบใหม่ที่ทันสมัย จุดเด่นที่สำคัญของ Netplan คือ การตั้งค่าเครือข่ายด้วยไฟล์ YAML ซึ่งทำให้สามารถตั้งค่าได้อย่างเรียบง่ายและเป็นระบบ สามารถจัดการเครือข่ายที่ซับซ้อนได้อย่างง่ายดาย
Netplan รองรับ backend อย่าง NetworkManager
และ systemd-networkd
และสามารถใช้ได้ทั้งบน Ubuntu Desktop และ Server ทำให้สามารถจัดการเครือข่ายในสภาพแวดล้อมที่แตกต่างกันได้ด้วยวิธีเดียวกัน
ทำไมควรใช้ Netplan?
เมื่อเปรียบเทียบกับวิธีการตั้งค่าเครือข่ายแบบเดิม Netplan มีข้อดีดังนี้
- ไวยากรณ์ที่เรียบง่าย: รูปแบบ YAML เข้าใจง่าย มีโครงสร้างชัดเจน มือใหม่ก็สามารถอ่านและแก้ไขได้ไม่ยาก
- การจัดการที่เป็นหนึ่งเดียว: ใช้ได้ทั้งบน Desktop และ Server สามารถบริหารจัดการโครงสร้างเครือข่ายที่หลากหลายได้ในที่เดียว
- เปลี่ยนแปลงได้แบบไดนามิก: เพียงแก้ไขไฟล์ตั้งค่าและนำไปใช้ การเปลี่ยนแปลงจะมีผลในทันทีแบบเรียลไทม์
โครงสร้างพื้นฐานของ Netplan
ไฟล์ตั้งค่าของ Netplan จะถูกจัดเก็บไว้ในไดเรกทอรี /etc/netplan/
โดยมีนามสกุล .yaml
ภายในไฟล์จะระบุข้อมูลเกี่ยวกับ network interface, IP address และ DNS server
ตัวอย่างไฟล์ YAML สำหรับตั้งค่า Netplan เบื้องต้นเช่น
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: true
ตัวอย่างนี้คือการตั้งค่าให้ interface ที่ชื่อ enp3s0
รับ IP อัตโนมัติ (DHCP)
บทบาทของ Netplan ใน Ubuntu 18.04 LTS ขึ้นไป
ใน Ubuntu 18.04 LTS ขึ้นไป Netplan จะถูกติดตั้งมาโดยปริยาย และถูกใช้ในการจัดการเครือข่ายทั้งบนเซิร์ฟเวอร์และเดสก์ท็อป โดยเฉพาะในสภาพแวดล้อมเซิร์ฟเวอร์ที่มีหลาย network interface หรือกำหนด IP แบบ static Netplan จะช่วยให้บริหารจัดการได้อย่างมีประสิทธิภาพ
ถัดไปจะอธิบายวิธีตั้งค่าเครือข่ายด้วย Netplan แบบเจาะลึก

2. วิธีตั้งค่าพื้นฐานของ Netplan
ตำแหน่งของไฟล์ตั้งค่า Netplan
ไฟล์ตั้งค่าของ Netplan จะถูกจัดเก็บในไดเรกทอรี /etc/netplan/
สามารถแก้ไขไฟล์ .yaml
เหล่านี้เพื่อเปลี่ยนแปลงการตั้งค่าเครือข่าย ตัวอย่างเช่นชื่อไฟล์ 50-cloud-init.yaml
(ชื่อไฟล์อาจแตกต่างกันไปในแต่ละระบบ)
ในการเปิดไฟล์ตั้งค่า สามารถใช้ editor เช่น vi
หรือ nano
ตามตัวอย่างด้านล่าง
sudo vi /etc/netplan/50-cloud-init.yaml
การตั้งค่า IP แบบไดนามิก (DHCP)
ถ้าต้องการให้เครื่องรับ IP address อัตโนมัติ (DHCP) สามารถใช้ตัวอย่าง YAML ด้านล่าง เหมาะสำหรับบ้านหรือออฟฟิศทั่วไป
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: true
การตั้งค่า IP แบบ Static
ในบางกรณี (เช่น เซิร์ฟเวอร์) ต้องกำหนด IP แบบคงที่ ตัวอย่าง YAML สำหรับ static IP มีดังนี้
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
นำการตั้งค่าไปใช้ (Apply Configuration)
หลังจากแก้ไขไฟล์แล้ว ให้นำการตั้งค่าไปใช้ด้วยคำสั่งนี้
sudo netplan apply
ตรวจสอบการตั้งค่า
ตรวจสอบสถานะของ Network Interface หลังนำตั้งค่าไปใช้ด้วยคำสั่ง
ip a

3. การตั้งค่า Network Interface หลายตัว
การตั้งค่า Ethernet หลายพอร์ต
หากเครื่องมีหลาย network interface สามารถตั้งค่าแต่ละพอร์ตแยกกัน ตัวอย่างด้านล่างคือการตั้งค่าสองพอร์ตให้มี IP และการตั้งค่าต่างกัน
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: true
enp4s0:
addresses:
- 192.168.1.150/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
การตั้งค่า Bonding เพื่อความทนทาน
การ Bonding จะรวม network interface หลายตัวเป็น interface เดียว เพื่อเพิ่มความเสถียร ตัวอย่างนี้คือการรวม enp3s0 และ enp4s0 เข้าด้วยกันเป็น bond0
network:
version: 2
renderer: networkd
bonds:
bond0:
interfaces:
- enp3s0
- enp4s0
addresses:
- 192.168.1.200/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
parameters:
mode: active-backup
primary: enp3s0
การตั้งค่า Wi-Fi
Netplan สามารถตั้งค่า Wi-Fi ได้เช่นกัน ตัวอย่างเช่นเชื่อมต่อกับ SSID ที่กำหนด
network:
version: 2
renderer: networkd
wifis:
wlp2s0:
access-points:
"my_wifi_network":
password: "password1234"
dhcp4: true
การตั้งค่า VLAN
สำหรับองค์กรหรือสถานศึกษาที่ต้องการแบ่ง network แบบ logic Netplan ก็รองรับ VLAN ตัวอย่างด้านล่างคือการตั้งค่า VLAN บน enp3s0
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: true
vlans:
vlan10:
id: 10
link: enp3s0
addresses:
- 192.168.10.1/24

4. การตั้งค่าขั้นสูงของ Netplan
การตั้งค่า Static Routing
ถ้าเครือข่ายของคุณต้องผ่านหลาย router ควรตั้งค่า static route ตัวอย่างนี้คือการกำหนดเส้นทางไปยัง network อื่น
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
addresses:
- 192.168.1.100/24
routes:
- to: 10.0.0.0/24
via: 192.168.1.1
ตัวอย่างนี้จะกำหนดเส้นทางไปยัง 10.0.0.0/24 ผ่าน gateway 192.168.1.1 บน interface enp3s0
การตั้งค่า Default Gateway หลายตัว
Netplan สามารถตั้ง default gateway ให้แต่ละ interface ได้ เช่น ในกรณีที่เชื่อมต่อหลาย network ตัวอย่าง
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
enp4s0:
addresses:
- 10.0.0.100/24
gateway4: 10.0.0.1
การตั้งค่า DNS Server
Netplan สามารถระบุ DNS server แบบ static ได้ง่าย ตัวอย่างนี้ระบุ Google DNS
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
addresses:
- 192.168.1.100/24
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
การตั้งค่า Bonding ขั้นสูง
นอกจาก active-backup แล้ว Netplan ยังรองรับโหมด bonding อื่นๆ เช่น balance-rr (สลับ interface ใช้งาน) ตัวอย่างด้านล่างนี้คือ balance-rr
network:
version: 2
renderer: networkd
bonds:
bond0:
interfaces:
- enp3s0
- enp4s0
addresses:
- 192.168.1.200/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
parameters:
mode: balance-rr
balance-rr
จะสลับใช้งาน interface เพื่อกระจายโหลดและเพิ่ม performance สามารถเปลี่ยนโหมด bonding ได้หลายแบบ เช่น active-backup หรือ balance-tlb ตามความต้องการ
การตั้งค่า VLAN ขั้นสูง
VLAN (Virtual LAN) ช่วยแบ่งเครือข่ายในระบบขนาดใหญ่ ตัวอย่างด้านล่างเป็นการกำหนด vlan100 บน enp3s0
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: true
vlans:
vlan100:
id: 100
link: enp3s0
addresses:
- 192.168.100.1/24
ในตัวอย่างนี้ enp3s0 จะมี VLAN ID 100 และใช้ IP 192.168.100.1 เพื่อแบ่งกลุ่ม network ได้ตามต้องการ

5. การแก้ปัญหา (Troubleshooting) Netplan
แม้ Netplan จะช่วยให้ตั้งค่าระบบเครือข่ายได้สะดวกมากขึ้น แต่ก็อาจเกิดปัญหาได้จากข้อผิดพลาดหรือข้อจำกัดของระบบ ส่วนนี้จะอธิบายปัญหาที่พบบ่อยและวิธีแก้ไขเพื่อให้ใช้งานได้อย่างมีประสิทธิภาพ
ปัญหาที่พบบ่อยกับ Netplan และสาเหตุ
1. การตั้งค่าไม่ถูกนำไปใช้
บางครั้งแก้ไขไฟล์แล้ว แต่ระบบไม่เปลี่ยนแปลง สาเหตุที่พบได้บ่อย เช่น
- ข้อผิดพลาดเรื่องการเยื้อง (Indent) ใน YAML: YAML เคร่งครัดเรื่องช่องว่างและการจัดบรรทัด ถ้ามีการเยื้องผิดจะทำให้ไฟล์ใช้งานไม่ได้ ควรตรวจสอบให้ดี
- ชื่อ interface ไม่ถูกต้อง: ต้องระบุชื่อ network interface ให้ถูกต้อง สามารถดูชื่อจริงด้วยคำสั่ง
ip a
แล้วนำชื่อที่ได้มาใส่ในไฟล์ตั้งค่า
วิธีแก้ไข
- หลังบันทึกไฟล์แล้ว ให้ใช้คำสั่ง
netplan apply
เพื่อนำตั้งค่าไปใช้ - ถ้าเกิด error ให้ใช้
sudo netplan try
ทดสอบก่อน คำสั่งนี้จะ rollback อัตโนมัติถ้ามีปัญหา
sudo netplan apply
sudo netplan try
2. ปัญหาเชื่อมต่อเครือข่ายไม่ได้
หากเชื่อมต่ออินเทอร์เน็ตไม่ได้ สาเหตุหลักๆ คือ
- ตั้งค่า Gateway หรือ DNS ผิด: ต้องตรวจสอบว่าใส่ IP และ DNS ถูกต้องหรือไม่
- ปัญหาทางกายภาพของ Interface: สายหรืออุปกรณ์อาจเสีย แม้ตั้งค่าซอฟต์แวร์ถูกต้องแล้วก็ตาม ควรตรวจสอบอุปกรณ์ด้วย
วิธีแก้ไข
- ใช้
ping
ทดสอบว่าเชื่อมต่อได้หรือไม่ เช่น ping ไปที่ DNS ของ Google (8.8.8.8)
ping 8.8.8.8
- ถ้ามีปัญหาอีกให้รัน
netplan apply
ใหม่ หรือ restart เครือข่าย
sudo systemctl restart networkd
3. ข้อความ Error จาก netplan apply
ถ้าใช้ netplan apply
แล้วขึ้น error อาจเกิดจากเนื้อหาไฟล์ผิดหรือ interface ไม่ถูกต้อง
- ตัวอย่าง Error:
Error in network configuration: failed to bring up device enp3s0
กรณีนี้ให้เช็คชื่อ interface ว่าตรงกับที่เครื่องใช้หรือไม่ และเช็คโครงสร้าง YAML
วิธีแก้ไข
อ่านข้อความ error อย่างละเอียด ตรวจสอบชื่อ interface และ IP ว่าถูกต้อง และดูโครงสร้าง YAML ว่ามีข้อผิดพลาดหรือไม่
ตรวจสอบ Log File
การดู log ด้วยคำสั่ง journalctl
จะช่วยวิเคราะห์ปัญหาเกี่ยวกับ Netplan ได้ดี
journalctl -u systemd-networkd
คำสั่งนี้จะแสดง log ของบริการ networkd ถ้ามี error จะเห็นรายละเอียดที่ใช้วิเคราะห์ปัญหาได้

6. สรุป Netplan และแนวทางต่อไป
การใช้ Netplan ทำให้การตั้งค่าเครือข่ายบน Ubuntu ง่ายและมีประสิทธิภาพมากขึ้น ส่วนนี้จะสรุปเนื้อหาทั้งหมดและแนะนำขั้นตอนสำหรับการเรียนรู้เพิ่มเติมเกี่ยวกับ Netplan
ข้อดีหลักของ Netplan
การใช้ Netplan มีข้อดีเหนือวิธีเดิมหลายประการ
- ตั้งค่าแบบ YAML ที่เข้าใจง่าย: เขียนไฟล์ YAML ได้สะดวก ตรวจสอบข้อผิดพลาดได้ง่าย
- โครงสร้างเครือข่ายที่ยืดหยุ่น: ตั้งค่า network interface หลายตัว, bonding, static routing และ VLAN ได้ในไฟล์เดียว
- อินเตอร์เฟซที่เป็นหนึ่งเดียว: รองรับทั้ง
systemd-networkd
และNetworkManager
ใช้งานได้ทั้งบน Desktop และ Server - เปลี่ยนแปลงได้แบบทันที: ใช้คำสั่งเดียวก็เปลี่ยนแปลงการตั้งค่าเครือข่ายได้ทันที ไม่ต้อง reboot
แนวทางต่อไป
เมื่อเข้าใจพื้นฐาน Netplan แล้ว ควรศึกษาเพิ่มเติม เช่น
- การสร้างเครือข่ายเสมือน (Virtual Network): ตั้งค่า VLAN หลายตัวเพื่อแบ่ง segment network เพิ่มความปลอดภัย
- การตั้งค่า IPv6: เตรียมพร้อมสำหรับการเปลี่ยนผ่านไปยัง IPv6 ด้วย Netplan
- การสร้างสคริปต์อัตโนมัติ: สร้างสคริปต์อัตโนมัติและเชื่อมกับเครื่องมือจัดการ เช่น Ansible หรือ Puppet
- การเสริมความปลอดภัยของเครือข่าย: เรียนรู้ firewall, การจำกัดสิทธิ์, การแบ่ง segment เพื่อเพิ่มความปลอดภัย
แหล่งข้อมูลสำหรับศึกษาเพิ่มเติม
คู่มือและเอกสารทางการของ Netplan และ Ubuntu เป็นแหล่งข้อมูลที่เชื่อถือได้ นอกจากนี้ฟอรั่มและบล็อกเทคนิคก็เป็นประโยชน์ ตัวอย่างแหล่งข้อมูลเช่น
- เอกสารทางการของ Netplan: ข้อมูลการตั้งค่าและตัวเลือกต่างๆ ที่ถูกต้องและครบถ้วนที่สุด
- Ubuntu Community Help Wiki: Wiki ของชุมชน Ubuntu มีตัวอย่างและวิธีแก้ไขปัญหามากมาย
- ฟอรั่มและบล็อกเทคนิค: เช่น Ask Ubuntu และ Stack Overflow มีกรณีศึกษาและคำถาม-คำตอบที่เป็นประโยชน์