วิธีตั้งค่า NTP Server บน Windows ให้เวลาระบบตรงเสมอ
เวลาที่ตรงกันทุกเครื่องในเครือข่ายเป็นเรื่องสำคัญกว่าที่หลายคนคิด ถ้าเวลาไม่ตรง อาจเกิดปัญหาตั้งแต่ Log ที่ไล่เวลาไม่ได้ ไปจนถึง Authentication ที่ใช้งานไม่ได้เพราะ Token หมดอายุผิดเวลา NTP (Network Time Protocol) เป็นโปรโตคอลมาตรฐานที่ช่วยให้คอมพิวเตอร์ทุกเครื่อง Sync เวลาให้ตรงกัน มาดูวิธีตั้งค่าบน Windows กัน
ตั้งค่า Sync เวลาผ่าน Command Line
วิธีเร็วที่สุดคือใช้คำสั่ง w32tm ผ่าน Command Prompt (Run as Administrator)
:: ตรวจสอบสถานะ NTP ปัจจุบัน
w32tm /query /status
:: ตรวจสอบว่ากำลัง Sync กับ NTP Server ไหน
w32tm /query /source
:: ตั้งค่า NTP Server ที่ต้องการ Sync
w32tm /config /manualpeerlist:"pool.ntp.org,0x1" /syncfromflags:manual /reliable:no /update
:: บังคับ Sync เวลาทันที
w32tm /resync /force
:: ตรวจสอบผลลัพธ์
w32tm /query /status
สำหรับ Windows เวอร์ชันเก่า ให้เปิด Control Panel ไปที่ Date and Time คลิกแท็บ Internet Time แล้วคลิก Change settings ในช่อง Server ใส่ที่อยู่ NTP Server เช่น time.windows.com หรือ pool.ntp.org แล้วคลิก Update now
NTP Server ยอดนิยมที่ใช้ได้ฟรี
มี NTP Server หลายตัวที่ใช้ได้ฟรี ทดสอบการเชื่อมต่อกับแต่ละตัวได้ดังนี้
:: ทดสอบ time.windows.com (ค่าเริ่มต้นของ Windows)
w32tm /stripchart /computer:time.windows.com /samples:3
:: ทดสอบ pool.ntp.org (Pool ขนาดใหญ่ทั่วโลก)
w32tm /stripchart /computer:pool.ntp.org /samples:3
:: ทดสอบ time.google.com
w32tm /stripchart /computer:time.google.com /samples:3
:: ทดสอบ NTP Server ของไทย (ใกล้กว่า Latency ต่ำกว่า)
w32tm /stripchart /computer:th.pool.ntp.org /samples:3
สำหรับผู้ใช้ในประเทศไทย th.pool.ntp.org จะให้ความแม่นยำที่ดีกว่าเพราะเซิร์ฟเวอร์อยู่ใกล้กว่า
ตั้ง Windows เป็น NTP Server สำหรับเครือข่ายภายใน
ในองค์กรที่มีเครื่องคอมพิวเตอร์หลายเครื่อง การตั้ง Windows Server เป็น NTP Server ภายในจะทำให้ทุกเครื่อง Sync เวลาจากแหล่งเดียวกัน
แก้ไข Registry
:: เปิด NTP Server ใน Registry
reg add "HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer" /v Enabled /t REG_DWORD /d 1 /f
:: ตั้ง AnnounceFlags เป็น 5 (เป็น Reliable Time Source)
reg add "HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config" /v AnnounceFlags /t REG_DWORD /d 5 /f
ตั้งค่า NTP Source สำหรับเซิร์ฟเวอร์
:: ตั้งค่า NTP Server ต้นทางที่จะ Sync
w32tm /config /manualpeerlist:"th.pool.ntp.org,0x1 time.google.com,0x1" /syncfromflags:manual /reliable:yes /update
Restart Windows Time Service
:: Restart Service
net stop w32time
net start w32time
:: หรือใช้ PowerShell
Restart-Service w32time
ใช้ PowerShell ตั้งค่า NTP (วิธีทางเลือก)
# ตรวจสอบสถานะ NTP Service
Get-Service w32time | Select-Object Name, Status, StartType
# ตั้งค่า NTP Server
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\Parameters" -Name NtpServer -Value "th.pool.ntp.org,0x1"
# เปิด NTP Server
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer" -Name Enabled -Value 1
# Restart Service
Restart-Service w32time
# บังคับ Sync
w32tm /resync /force
ตรวจสอบว่า NTP ทำงานถูกต้อง
:: ตรวจสอบสถานะ NTP แบบละเอียด
w32tm /query /status /verbose
:: ตรวจสอบ Configuration ปัจจุบัน
w32tm /query /configuration
:: ทดสอบ NTP Server จากเครื่อง Client
w32tm /stripchart /computer:ชื่อเซิร์ฟเวอร์ /samples:5 /dataonly
เปิด Firewall สำหรับ NTP
NTP ใช้ UDP Port 123 ต้องเปิดใน Firewall
:: เปิด Firewall สำหรับ NTP (UDP 123)
netsh advfirewall firewall add rule name="NTP Server" dir=in action=allow protocol=UDP localport=123
# หรือใช้ PowerShell
New-NetFirewallRule -DisplayName "NTP Server" -Direction Inbound -Protocol UDP -LocalPort 123 -Action Allow
ทำไม NTP ถึงสำคัญกับเซิร์ฟเวอร์
สำหรับเซิร์ฟเวอร์ที่ให้บริการอยู่ เวลาที่ตรงเป็นสิ่งจำเป็น Log ที่มีเวลาถูกต้องทำให้ Debug ปัญหาได้ง่ายขึ้น Certificate SSL/TLS ต้องการเวลาที่ตรงเพื่อตรวจสอบความถูกต้อง Kerberos Authentication ยอมรับ Ticket ที่มีเวลาคลาดเคลื่อนได้เพียง 5 นาที
สำหรับ VPS ของ DriteStudio ที่ใช้ Windows Server ระบบ NTP ได้รับการตั้งค่ามาให้พร้อมใช้งาน ไม่ต้องมานั่ง config เองตั้งแต่แรก
ปัญหาที่พบบ่อยและวิธีแก้
ปัญหาที่พบบ่อยที่สุดคือ Windows Time Service ไม่ทำงาน
:: ลงทะเบียน Service ใหม่
w32tm /unregister
w32tm /register
:: ตั้งค่า Service เป็น Automatic
sc config w32time start= auto
:: เริ่ม Service
net start w32time
ถ้า Firewall บล็อก NTP ต้องเปิด UDP Port 123 ตามที่แนะนำด้านบน สำหรับความปลอดภัยของเซิร์ฟเวอร์ การมีเวลาที่ถูกต้องเป็นพื้นฐานที่ขาดไม่ได้
ปรับ Sync Interval ให้ถี่ขึ้น
:: ปรับให้ Sync ทุก 1 ชั่วโมง (3600 วินาที) แทนค่าเริ่มต้น 7 วัน
reg add "HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient" /v SpecialPollInterval /t REG_DWORD /d 3600 /f
:: Restart Service เพื่อใช้ค่าใหม่
net stop w32time && net start w32time
คำถามที่พบบ่อย (FAQ)
NTP Sync บ่อยแค่ไหน?
Windows จะ Sync ทุก 7 วันเป็นค่าเริ่มต้น สำหรับเซิร์ฟเวอร์ควรปรับให้ Sync บ่อยขึ้น เช่น ทุก 1 ชั่วโมง ผ่าน Registry
ใช้ NTP Server หลายตัวได้ไหม?
ได้ครับ สามารถตั้ง Fallback NTP Server หลายตัวได้ ถ้าตัวหลักไม่ตอบจะ Sync กับตัวสำรองโดยอัตโนมัติ
NTP ต้องเปิด Port อะไร?
NTP ใช้ UDP Port 123 ถ้ามี Firewall ต้องเปิด Port นี้ทั้งขาเข้าและขาออก
เวลาคลาดเคลื่อนได้มากแค่ไหน?
NTP สามารถ Sync เวลาให้คลาดเคลื่อนได้น้อยกว่า 1 มิลลิวินาทีในเครือข่าย LAN และไม่เกินไม่กี่สิบมิลลิวินาทีผ่านอินเทอร์เน็ต
การตั้งค่า NTP Server ที่ถูกต้องเป็นพื้นฐานสำคัญของระบบเครือข่ายที่ดี หากต้องการ Windows Server ที่พร้อมใช้งาน DriteStudio มี VPS Windows ที่ตั้งค่า NTP มาให้เรียบร้อยแล้ว