การตั้งค่าเครือข่าย Ubuntu ด้วย Netplan: คู่มือฉบับสมบูรณ์สำหรับมือใหม่และผู้เชี่ยวชาญ

目次

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 มีข้อดีดังนี้

  1. ไวยากรณ์ที่เรียบง่าย: รูปแบบ YAML เข้าใจง่าย มีโครงสร้างชัดเจน มือใหม่ก็สามารถอ่านและแก้ไขได้ไม่ยาก
  2. การจัดการที่เป็นหนึ่งเดียว: ใช้ได้ทั้งบน Desktop และ Server สามารถบริหารจัดการโครงสร้างเครือข่ายที่หลากหลายได้ในที่เดียว
  3. เปลี่ยนแปลงได้แบบไดนามิก: เพียงแก้ไขไฟล์ตั้งค่าและนำไปใช้ การเปลี่ยนแปลงจะมีผลในทันทีแบบเรียลไทม์

โครงสร้างพื้นฐานของ 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 แล้วนำชื่อที่ได้มาใส่ในไฟล์ตั้งค่า

วิธีแก้ไข

  1. หลังบันทึกไฟล์แล้ว ให้ใช้คำสั่ง netplan apply เพื่อนำตั้งค่าไปใช้
  2. ถ้าเกิด error ให้ใช้ sudo netplan try ทดสอบก่อน คำสั่งนี้จะ rollback อัตโนมัติถ้ามีปัญหา
sudo netplan apply
sudo netplan try

2. ปัญหาเชื่อมต่อเครือข่ายไม่ได้

หากเชื่อมต่ออินเทอร์เน็ตไม่ได้ สาเหตุหลักๆ คือ

  • ตั้งค่า Gateway หรือ DNS ผิด: ต้องตรวจสอบว่าใส่ IP และ DNS ถูกต้องหรือไม่
  • ปัญหาทางกายภาพของ Interface: สายหรืออุปกรณ์อาจเสีย แม้ตั้งค่าซอฟต์แวร์ถูกต้องแล้วก็ตาม ควรตรวจสอบอุปกรณ์ด้วย

วิธีแก้ไข

  1. ใช้ ping ทดสอบว่าเชื่อมต่อได้หรือไม่ เช่น ping ไปที่ DNS ของ Google (8.8.8.8)
ping 8.8.8.8
  1. ถ้ามีปัญหาอีกให้รัน 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 มีข้อดีเหนือวิธีเดิมหลายประการ

  1. ตั้งค่าแบบ YAML ที่เข้าใจง่าย: เขียนไฟล์ YAML ได้สะดวก ตรวจสอบข้อผิดพลาดได้ง่าย
  2. โครงสร้างเครือข่ายที่ยืดหยุ่น: ตั้งค่า network interface หลายตัว, bonding, static routing และ VLAN ได้ในไฟล์เดียว
  3. อินเตอร์เฟซที่เป็นหนึ่งเดียว: รองรับทั้ง systemd-networkd และ NetworkManager ใช้งานได้ทั้งบน Desktop และ Server
  4. เปลี่ยนแปลงได้แบบทันที: ใช้คำสั่งเดียวก็เปลี่ยนแปลงการตั้งค่าเครือข่ายได้ทันที ไม่ต้อง reboot

แนวทางต่อไป

เมื่อเข้าใจพื้นฐาน Netplan แล้ว ควรศึกษาเพิ่มเติม เช่น

  1. การสร้างเครือข่ายเสมือน (Virtual Network): ตั้งค่า VLAN หลายตัวเพื่อแบ่ง segment network เพิ่มความปลอดภัย
  2. การตั้งค่า IPv6: เตรียมพร้อมสำหรับการเปลี่ยนผ่านไปยัง IPv6 ด้วย Netplan
  3. การสร้างสคริปต์อัตโนมัติ: สร้างสคริปต์อัตโนมัติและเชื่อมกับเครื่องมือจัดการ เช่น Ansible หรือ Puppet
  4. การเสริมความปลอดภัยของเครือข่าย: เรียนรู้ firewall, การจำกัดสิทธิ์, การแบ่ง segment เพื่อเพิ่มความปลอดภัย

แหล่งข้อมูลสำหรับศึกษาเพิ่มเติม

คู่มือและเอกสารทางการของ Netplan และ Ubuntu เป็นแหล่งข้อมูลที่เชื่อถือได้ นอกจากนี้ฟอรั่มและบล็อกเทคนิคก็เป็นประโยชน์ ตัวอย่างแหล่งข้อมูลเช่น

  • เอกสารทางการของ Netplan: ข้อมูลการตั้งค่าและตัวเลือกต่างๆ ที่ถูกต้องและครบถ้วนที่สุด
  • Ubuntu Community Help Wiki: Wiki ของชุมชน Ubuntu มีตัวอย่างและวิธีแก้ไขปัญหามากมาย
  • ฟอรั่มและบล็อกเทคนิค: เช่น Ask Ubuntu และ Stack Overflow มีกรณีศึกษาและคำถาม-คำตอบที่เป็นประโยชน์

 

侍エンジニア塾