วิธีซิงค์เวลาบน Ubuntu: ติดตั้งและตั้งค่า ntpd/NTP Server อย่างละเอียด

目次

1. บทนำ: ทำไมการซิงค์เวลา (Time Sync) จึงสำคัญ

ปัญหาที่เกิดจากเวลาระบบคลาดเคลื่อน

ในระบบ Linux รวมถึง Ubuntu การรักษาเวลาให้ถูกต้องแม่นยำเป็นสิ่งสำคัญอย่างยิ่ง หลายคนอาจมองว่าเป็นแค่เรื่องของนาฬิกาคลาดเคลื่อนเล็กน้อย แต่สำหรับการบริหารเซิร์ฟเวอร์หรือสภาพแวดล้อมแอปพลิเคชัน ความคลาดเคลื่อนของเวลาอาจนำไปสู่ปัญหาที่ร้ายแรงได้

ตัวอย่างปัญหาที่อาจเกิดขึ้น มีดังนี้:

  • ความสอดคล้องของล็อกข้อมูลเสียหาย
    หากเวลาใน System Log หรือ Application Log คลาดเคลื่อน จะทำให้การวิเคราะห์หาสาเหตุปัญหาในภายหลังเป็นเรื่องยาก
  • cron job ทำงานผิดเวลา
    งานที่ตั้งเวลาทำงาน (เช่น Backup, Batch) อาจไม่ทำงานตรงเวลาที่กำหนด ส่งผลให้เกิดปัญหาข้อมูล
  • เกิดข้อผิดพลาดกับ SSL certificate หรือการรับรองความปลอดภัย
    การใช้งาน HTTPS หรือ SSH จำเป็นต้องใช้เวลาให้ถูกต้อง หากเวลาคลาดเคลื่อน ระบบอาจแสดงว่าใบรับรองหมดอายุและไม่สามารถเชื่อมต่อได้

โดยเฉพาะอย่างยิ่ง กรณีที่ต้องซิงค์เวลาในหลายเซิร์ฟเวอร์บนเครือข่ายเดียวกัน หากเวลาคลาดเคลื่อนอาจมีผลกระทบต่อทั้งระบบอย่างมาก

บทบาทและความสำคัญของ NTP

เครื่องมือที่ช่วยป้องกันปัญหาเหล่านี้คือ NTP (Network Time Protocol) NTP จะเชื่อมต่อกับเซิร์ฟเวอร์เวลา (Time Server) ทั้งจากอินเทอร์เน็ตหรือภายในเครือข่าย และปรับเวลาในระบบโดยอัตโนมัติ

บน Ubuntu มีเครื่องมือสำหรับ NTP หลายตัว เช่น ntpd, chrony, systemd-timesyncd ในบทความนี้จะเน้นที่ ntpd (Network Time Protocol daemon) พร้อมแนะนำวิธีติดตั้งและใช้งานบน Ubuntu

โดยเฉพาะอย่างยิ่งสำหรับเซิร์ฟเวอร์ที่ต้องรันตลอดเวลา หรือระบบที่ต้องการความแม่นยำของล็อก ntpd มีความเสถียรและได้รับความนิยมสูง

ในหัวข้อต่อไป จะอธิบายพื้นฐานเกี่ยวกับ ntpd และทางเลือกที่มีใน Ubuntu

年収訴求

2. ntpd คืออะไร? บทบาทและตัวเลือกบน Ubuntu

ภาพรวมและจุดเด่นของ ntpd

ntpd (Network Time Protocol Daemon) คือโปรแกรม daemon ที่ใช้ NTP เพื่อให้เวลาระบบแม่นยำ โดยจะเชื่อมต่อกับเซิร์ฟเวอร์ NTP เป็นระยะๆ และปรับเวลาโดยอัตโนมัติ

จุดเด่นของ ntpd คือจะค่อยๆ ปรับเวลา (smooth sync) เพื่อไม่ให้ระบบหรือแอปพลิเคชันได้รับผลกระทบจากการเปลี่ยนเวลาแบบฉับพลัน

ntpd ยังรองรับ การสื่อสารแบบ Symmetric และ ระบบยืนยันตัวตน (Authentication) เหมาะสำหรับองค์กรที่ต้องการความมั่นคงและปลอดภัยสูง

เครื่องมือซิงค์เวลาที่มีให้เลือกบน Ubuntu

Ubuntu มีทางเลือกในการซิงค์เวลา ดังนี้:

  • ntpd (แพ็คเกจ ntp)
    เหมาะกับการใช้งานระยะยาวและต้องการตั้งค่าละเอียด สามารถซิงค์กับ NTP สาธารณะได้อย่างแม่นยำ
  • chrony
    เป็นทางเลือกใหม่ของ ntpd มีความแม่นยำและซิงค์ได้รวดเร็ว โดยเฉพาะตอนระบบบูต เหมาะกับเครื่อง VM หรือสเปคต่ำ
  • systemd-timesyncd
    บริการซิงค์เวลาแบบเบา ถูกเปิดใช้งานโดยค่าเริ่มต้นใน Ubuntu 20.04 เป็นต้นไป เหมาะกับผู้ใช้งานทั่วไป ไม่เหมาะกับการตั้งค่าขั้นสูงหรือเป็น NTP server ภายใน

เหตุผลที่ควรเลือก ntpd และข้อดี

จุดเด่นของ ntpd คือ ความเสถียรและความน่าเชื่อถือ เหมาะกับ:

  • เซิร์ฟเวอร์ที่ต้องออนไลน์ยาวนานและต้องการความแม่นยำสูง
  • ต้องการตั้ง NTP server ในเครือข่ายภายใน
  • ต้องการฟีเจอร์ยืนยันตัวตนหรือควบคุมขั้นสูงในองค์กร

ntpd ยังใช้งานร่วมกับระบบอื่นได้ดีและมีประสบการณ์ใช้งานยาวนาน จึงลดความกังวลเรื่องปัญหาเมื่อติดตั้ง

3. การติดตั้งและตั้งค่าเริ่มต้น ntpd บน Ubuntu

ขั้นตอนการติดตั้ง ntpd

ติดตั้ง ntp package ด้วยคำสั่งต่อไปนี้:

sudo apt update
sudo apt install ntp

คำสั่งนี้จะติดตั้ง ntpd และไฟล์ที่เกี่ยวข้อง หากใน Ubuntu มีการเปิดใช้ chrony หรือ systemd-timesyncd อยู่ ควรปิดการทำงานก่อน

sudo systemctl stop systemd-timesyncd
sudo systemctl disable systemd-timesyncd

เปิดใช้บริการและตรวจสอบสถานะ

หลังติดตั้ง ให้เปิดและตรวจสอบสถานะ ntpd:

sudo systemctl enable ntp
sudo systemctl start ntp
sudo systemctl status ntp

หาก status แสดง “active (running)” แปลว่า ntpd ทำงานถูกต้อง

ตรวจสอบและแก้ไขไฟล์ตั้งค่าเบื้องต้น

ไฟล์ตั้งค่าหลักคือ /etc/ntp.conf หลังติดตั้งจะตั้งค่า default NTP server เช่น pool.ntp.org

ตรวจสอบไฟล์ด้วยคำสั่ง:

cat /etc/ntp.conf

ถ้าต้องการใช้เซิร์ฟเวอร์ในประเทศญี่ปุ่น แก้ไขไฟล์เป็น:

server ntp.nict.jp iburst

ตัวเลือก iburst ช่วยให้ซิงค์เร็วขึ้นตอนเริ่มต้น แนะนำให้เพิ่มไว้

หลังเปลี่ยนแปลง ให้ restart ntpd

sudo systemctl restart ntp

ตรวจสอบการซิงค์เวลาอัตโนมัติ

หลังเปิดใช้งาน ntpd ระบบจะซิงค์เวลากับเซิร์ฟเวอร์โดยอัตโนมัติ ตรวจสอบสถานะด้วยคำสั่งนี้:

ntpq -p

จะเห็นรายชื่อ NTP server, delay, offset และข้อมูลอื่น ๆ

4. การตั้งค่าและปรับแต่ง NTP Server

เลือก NTP Server ที่แนะนำ

ควรเลือก NTP server ที่เชื่อถือได้ (โดยเฉพาะ server ภายในประเทศ) เพื่อความแม่นยำ

ตัวอย่าง NTP server ในญี่ปุ่น:

  • ntp.nict.jp (NICT)
  • ntp.jst.mfeed.ad.jp (JST/MFEED)
  • ntp.ring.gr.jp (Internet Multifeed)

สามารถใช้ได้โดยไม่ต้องลงทะเบียนเป็นพิเศษในกรณีใช้ส่วนบุคคล

ตัวอย่างการตั้งค่าใน /etc/ntp.conf:

server ntp.nict.jp iburst
server ntp.jst.mfeed.ad.jp iburst
server ntp.ring.gr.jp iburst

ตั้งค่าขั้นสูงใน ntp.conf

ใน /etc/ntp.conf สามารถตั้งค่าละเอียดได้ ตัวอย่างเช่น:

  • restrict directive
    กำหนดเงื่อนไขให้เครื่องไหนเชื่อมต่อกับ server ได้บ้าง (เพิ่มความปลอดภัย) ตัวอย่าง: อนุญาตเฉพาะเครื่องใน local network
  restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
  • driftfile
    กำหนดไฟล์บันทึก drift (ความคลาดเคลื่อนเล็กน้อยของ clock) โดยทั่วไปไม่ต้องเปลี่ยน
  driftfile /var/lib/ntp/ntp.drift

 

ตั้ง NTP Server ภายในเครือข่าย (Local Network)

สามารถตั้งให้ Ubuntu ทำหน้าที่เป็น NTP server ภายใน (สำหรับเครื่องอื่น ๆ ในเครือข่ายองค์กรที่ไม่มีอินเทอร์เน็ต) ได้

ขั้นตอนหลัก:

  1. เพิ่ม restrict rule สำหรับ local ใน /etc/ntp.conf restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
  2. ตั้ง client ให้ชี้ไปที่ IP ของ NTP server ภายใน server 192.168.0.10 iburst # IP ของ NTP server
  3. เปิด port 123/udp บน firewall sudo ufw allow 123/udp

หาก port ถูก block จะ sync ไม่ได้ ตรวจสอบด้วย ntpq

5. การตรวจสอบการทำงานและการแก้ปัญหา ntpd

วิธีตรวจสอบสถานะบริการ

ใช้คำสั่งนี้เพื่อตรวจสอบว่า ntpd ทำงานอยู่หรือไม่

sudo systemctl status ntp

ถ้าขึ้น active (running) คือใช้งานได้ หากขึ้น inactive หรือ failed แปลว่าอาจมีปัญหาในการตั้งค่าหรือ dependency

ตรวจสอบ log แบบละเอียดได้ด้วย

journalctl -u ntp

ตรวจสอบการซิงค์ (ntpq -p)

เช็คว่า ntpd ซิงค์กับ NTP server ได้หรือไม่ด้วย

ntpq -p

ตัวอย่าง output:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp.nict.jp     .NICT.           1 u   25   64  377    1.123   -0.345   0.024

แต่ละคอลัมน์หมายถึงอะไร เช่น:

  • remote: ชื่อ NTP server
  • st: stratum (ลำดับชั้น, ยิ่งต่ำยิ่งแม่นยำ)
  • reach: ประวัติการเชื่อมต่อ
  • delay: ค่าดีเลย์เครือข่าย (ms)
  • offset: คลาดเคลื่อนเวลา (ms)
  • jitter: ความแปรปรวน

หากมี * หน้า server นั้นคือเป็น server ที่ sync อยู่ปัจจุบัน

ข้อผิดพลาดที่พบบ่อยและวิธีแก้ไข

รวมปัญหาที่มักเจอเมื่อใช้ ntpd และแนวทางแก้

1. ntpq -p ไม่แสดงข้อมูล / reach เป็น 0

  • สาเหตุ: อาจเพราะ firewall หรือ router block port UDP 123
  • แนวทางแก้: ตรวจสอบ firewall ทั้ง server และ client ต้องอนุญาต UDP 123
sudo ufw allow 123/udp

2. ขึ้นว่า System clock not synchronized

  • สาเหตุ: ntpd ไม่ได้รัน หรือมี service อื่น (เช่น systemd-timesyncd) รันอยู่
  • แนวทางแก้: ปิด service อื่นและ restart ntpd
sudo systemctl disable systemd-timesyncd
sudo systemctl restart ntp

3. ชื่อ NTP server แก้ไขไม่ได้

  • สาเหตุ: ปัญหา DNS หรือ network
  • แนวทางแก้: ping ชื่อ server เช่น ping ntp.nict.jp ตรวจสอบ network และแก้ DNS หากจำเป็น

4. เวลาคลาดเคลื่อนมากแต่ sync ไม่ได้

  • สาเหตุ: ถ้าเวลาเพี้ยนมาก ntpd จะไม่ sync ให้อัตโนมัติ
  • แนวทางแก้: ใช้ ntpd -gq เพื่อ sync ครั้งเดียวก่อน แล้วค่อย restart ntpd
sudo ntpd -gq  # sync ทันทีครั้งเดียว
sudo systemctl restart ntp

การมอนิเตอร์อย่างต่อเนื่อง

ในระบบ production แนะนำให้ตั้ง script เก็บ log จาก ntpq -p และแจ้งเตือนเมื่อมีปัญหา เช่น reach เป็น 0 ต่อเนื่อง เพื่อป้องกันปัญหาก่อนเกิดขึ้นจริง

6. เปรียบเทียบ ntpd กับเครื่องมือซิงค์เวลาอื่น

เครื่องมือซิงค์เวลาหลักที่ใช้บน Ubuntu

บน Ubuntu มีเครื่องมือซิงค์เวลาหลัก 3 ตัว ซึ่งมีจุดเด่นต่างกัน:

  • ntpd (แพ็คเกจ ntp)
  • chrony
  • systemd-timesyncd

การเลือกใช้ควรดูตามความต้องการและลักษณะระบบ

จุดเด่นของ ntpd

  • ข้อดี
  • ประสบการณ์ใช้งานยาวนาน เสถียรสูง น่าเชื่อถือ
  • ตั้งค่าได้หลากหลาย ทำเป็น NTP server ในองค์กรได้
  • หาข้อมูลแก้ปัญหาหรือเทียบเคียงจากชุมชนได้ง่าย
  • ข้อด้อย
  • การ sync ครั้งแรกอาจใช้เวลานาน
  • อาจไม่เหมาะกับ network ที่เปลี่ยนแปลงตลอด (VM, คลาวด์)

จุดเด่นของ chrony

  • ข้อดี
  • sync ได้รวดเร็วโดยเฉพาะตอนบูต
  • เหมาะกับ VM, network แปรเปลี่ยน, notebook
  • มีระบบปรับค่าตามสภาพแวดล้อม ทำให้แม่นยำมาก
  • ข้อด้อย
  • ถ้าจะใช้เป็น NTP server ใน local ต้องตั้งค่าเพิ่มขึ้น
  • เอกสารหรือเคสใช้งานยังน้อยกว่า ntpd

จุดเด่นของ systemd-timesyncd

  • ข้อดี
  • Ubuntu 20.04 ขึ้นไปมีมาให้ตั้งแต่แรก ใช้งานง่ายมาก
  • ซิงค์ขั้นพื้นฐาน กิน resource น้อย
  • integrate กับ systemd ได้ดี
  • ข้อด้อย
  • ตั้งค่าขั้นสูงหรือทำ NTP server ใน local ไม่ได้
  • เหมาะแค่กับระบบขนาดเล็กหรือสำหรับผู้เริ่มต้น

ตารางเปรียบเทียบ (Summary Table)

คุณสมบัติntpdchronysystemd-timesyncd
ความแม่นยำสูงสูงมากปานกลาง
ความเร็ว sync ครั้งแรกช้าได้เร็วมากปานกลาง
ตั้งเป็น NTP server ภายใน○ (ตั้งยากกว่า)× (ทำไม่ได้)
ความยืดหยุ่นของการตั้งค่าสูงปานกลางต่ำ
รองรับ VM/Cloud
ข้อมูลอ้างอิงและ community
เหมาะกับงานServer/องค์กรVM/NotebookPC เดี่ยว/มือใหม่

คำแนะนำเลือกตามการใช้งาน

  • งานเซิร์ฟเวอร์ (รันตลอดเวลา)
     → ntpd หรือ chrony เหมาะสมที่สุด
  • VM, Cloud, Notebook
     → chrony แม่นยำและยืดหยุ่น
  • ใช้งาน PC เดี่ยว ไม่ซับซ้อน
     → systemd-timesyncd ก็เพียงพอ

7. คำถามที่พบบ่อย (FAQ)

Q1. Ubuntu 22.04 มี ntpd ติดตั้งมาแต่แรกหรือไม่?

A1.
ไม่ใช่ Ubuntu 22.04 จะเปิดใช้ systemd-timesyncd มาให้ หากต้องการใช้ ntpd ต้องติดตั้ง ntp package เพิ่มเอง

sudo apt install ntp

หลังติดตั้งควรปิด systemd-timesyncd เพื่อป้องกันการชนกันของบริการ

Q2. ใช้ ntpq -p แล้วไม่แสดงข้อมูลต้องทำอย่างไร?

A2.
สาเหตุหลัก ๆ มีดังนี้

  • บริการยังไม่รัน: ตรวจสอบด้วย sudo systemctl status ntp แล้ว start ถ้าต้องการ
  • เชื่อมต่อกับ NTP server ไม่ได้: ตรวจสอบ firewall ว่าอนุญาต UDP 123 หรือไม่
  • ตั้งค่าไฟล์ผิด: ตรวจสอบ /etc/ntp.conf

ตรวจสอบเบื้องต้นด้วยคำสั่ง

ntpq -p

ถ้าไม่แสดงหรือ reach เป็น 0 แสดงว่าติดต่อ server ไม่สำเร็จ

Q3. ควรเลือก ntpd หรือ chrony?

A3.
ขึ้นกับรูปแบบการใช้งาน

  • Server ระยะยาวหรือ NTP server ภายในntpd เสถียรกว่า
  • VM, Notebook, Network แปรเปลี่ยนchrony ตอบโจทย์กว่า
  • ต้องการแค่ sync ง่ายๆsystemd-timesyncd เพียงพอ

Q4. ntpd -gq คืออะไร?

A4.
ntpd -gq คือการ sync เวลาแบบเร็วครั้งเดียวแล้วจบ

  • -g: ยอมรับเวลาที่คลาดเคลื่อนมาก
  • -q: sync แล้วออก ไม่รัน background

เหมาะกับกรณีเวลาคลาดเคลื่อนมากจน ntpd ปกติไม่ยอม sync

Q5. การระบุ NTP server หลายตัวมีข้อดีไหม?

A5.
มีข้อดีเพราะช่วยเพิ่มความน่าเชื่อถือ หาก server ตัวหนึ่งมีปัญหา จะ sync กับอีกตัวแทน

ตัวอย่างการตั้งค่าใน /etc/ntp.conf:

server ntp.nict.jp iburst
server ntp.jst.mfeed.ad.jp iburst
server ntp.ring.gr.jp iburst

8. สรุป: ซิงค์เวลาให้เสถียร เพิ่มความเชื่อถือระบบ

ทบทวนข้อดีของ ntpd

สำหรับ Ubuntu การซิงค์เวลาที่แม่นยำ ไม่ได้แค่เพิ่มความสะดวก แต่ยังเกี่ยวข้องกับ ความปลอดภัย การแก้ปัญหา การจัดการล็อก และความถูกต้องของกระบวนการอัตโนมัติ อีกด้วย

บทความนี้ครอบคลุมตั้งแต่พื้นฐานของ NTP วิธีใช้ ntpd การติดตั้ง การปรับแต่ง การตรวจสอบการทำงาน จนถึงเปรียบเทียบกับเครื่องมืออื่น

คำแนะนำสำหรับผู้อ่าน

การเลือกเครื่องมือซิงค์เวลาที่เหมาะสมบน Ubuntu ควรดูจากวัตถุประสงค์และโครงสร้างระบบ
แต่หลักสำคัญคือ “ไม่มีเวลาที่ถูกต้อง ก็ไม่มีระบบที่เสถียร”

  • งาน server หรือจัดการล็อก → ตั้ง ntpd หรือ chrony ให้รัดกุม
  • ใช้งานเดี่ยว ต้องการความง่ายsystemd-timesyncd ก็พอ

ความแม่นยำของเวลามักไม่เห็นผลชัดในชีวิตประจำวัน แต่เมื่อเกิดปัญหา จะเป็น “มาตรฐานที่สร้างความแตกต่าง” เสมอ

ขอให้บทความนี้ช่วยให้คุณตั้งค่าระบบซิงค์เวลาที่เหมาะสมที่สุดกับ Ubuntu ของคุณได้