目次
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 เข้าด้วยกันเป็น bond0network:
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 บน enp3s0network:
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 DNSnetwork:
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-rrnetwork:
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 บน enp3s0network:
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
วิธีแก้ไข
อ่านข้อความ 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 มีกรณีศึกษาและคำถาม-คำตอบที่เป็นประโยชน์