NTP server là gì?

Network Time Protocol (NTP) là một thuật toán phần mềm giữ cho các máy tính và các thiết bị công nghệ khác nhau có thể đồng bộ hóa thời gian với nhau. NTP đã đạt được thành công trong việc giữ các thiết bị đồng bộ hóa hiệu quả trong chỉ trong vài milliseconds (1/1000s), nhưng để có thể làm được điều này nó cần phải có một hệ thống thời gian đáng tin cậy để sử dụng làm điểm thời gian chính cho việc đồng bộ.

1. Lợi ích của NTP server

a. Backup dữ liệu theo lập lịch

Backup dữ liệu rất quan trọng với bất kỳ tổ chức nào, nếu hệ thống quá sai về thời gian sẽ khiến việc sao lưu không chính xác.

b. Tăng tốc độ mạng

Nhiều thiết bị sử dụng cache và hệ thống tập tin diện rộng có thể dựa vào tem thời gian (timestamp) để xác định phiên bản nào của đoạn dữ liệu ứng với thời điểm hiện tại. Đồng bộ thời gian không chính xác có thể khiến hệ thống như cache server hoạt động không chính xác, sử dụng sai phiên bản dữ liệu.

c. Hệ thống quản lý mạng

Khi có vấn đề gì đó, việc kiểm tra log hệ thống là một phần chính của debug lỗi. Nhưng nếu thời gian trong những file log này không đồng bộ/không chính xác thì có thể bạn sẽ mất khoảng thời gian dài hơn để tìm ra nguyên nhân và khắc phục lỗi hệ thống.

d. Phân tích xâm nhập

Trong trường hợp nếu có sự xâm nhập mạng trái phép, việc tìm hiểu xem mạng của bạn bị xâm nhập như thế nào và dữ liệu nào được truy cập có thể được kiểm tra rõ ràng nếu bạn có log thời gian chính xác việc login trên router hoặc máy chủ. Hacker thường sẽ xóa log nếu có, nhưng nếu họ không xóa thì bạn cần thời gian chính xác để chuẩn đoán đó.

e. Tuân thủ các quy định

Sarbanes Oxley, HIPAA, GLBA và các quy định khác có thể sẽ cần trong tương lai vì vậy đòi hỏi thời gian chính xác trong các giao dịch cũng như dữ liệu.

2. NTP server hoạt động như thế nào

NTP client gửi một gói tin trong đó chứa tem thời gian được chuyển tiếp đến máy chủ ở dạng số ngày càng tăng từ một điểm thời gian cố định trước đó (unixtime)

Máy chủ NTP sử dụng tem thời gian để tính toán, nếu thời gian trên mạng không khớp sẽ được cộng trừ thêm số giây để khớp với đồng hồ/máy chủ NTP cấp cao hơn đang tham chiếu. Sau đó gửi trả lại NTP client một gói tin khác, có thể thời gian là thời điểm nó gửi gói tin đó đi.

NTP client nhận được gói tin đó, tính toán độ trễ, dựa và thẻ thời gian mà nó nhận được cùng với độ trễ đường truyền, NTP client sẽ set lại thời gian của nó.

NTP chính xác trong khoảng 1/100s trên môi trường internet và thực hiện tốt hơn trên mạng LAN và WAN với độ chính xác là 1/5000s.

3. Public NTP server

Một máy chủ public NTP là một máy chủ thời gian trên internet, như đúng tên gọi, các thành viên trong cộng đồng có thể sử dụng public NTP như một nguồn thời gian đáng tin cậy. Nơi tốt nhất trên internet để tìm một danh sách các máy chủ public NTP là trang web: http://www.pool.ntp.org/

Có hai danh sách máy chủ public NTP trên trang này, một là cho các máy chủ chính (primary servers) và một cho máy chủ thứ cấp (secondary servers).

Các máy chủ chính có tới hàng trăm khách hàng, nhiều máy chủ chính không cho phép truy cập, mà chỉ cho những client nào mà họ đồng ý thôi. Nguyên nhân là do quá nhiều traffic đổ vào để yêu cầu lấy tín hiệu thời gian làm các server chính này quá tải.

Các máy chủ chính cũng chính là Stratum 1 bởi vì nó lấy nguồn thời gian trực tiếp từ đồng hồ nguyên tử hoặc GPS, sóng dài. Các máy chủ thứ cấp thường là Stratum 2, nhận nguồn thời gian từ Stratum 1.

Khi sử dụng máy chủ NTP public bạn cần tuân thủ chính sách và yêu cầu mà nhiều tổ chức trên các máy chủ này quy định.

Cách cấu hình NTP Server và NTP Client trong Windows Server 2019

Cấu hình NTP Server trong Windows Server 2019

Nếu máy tính là một Active Directory Domain Controller, tính năng NTP Server đã được kích hoạt tự động. Vì vậy, ví dụ sau dành cho máy tính cần kích hoạt tính năng NTP Server trong môi trường WorkGroup.

1. Chạy PowerShell với quyền admin và cấu hình như sau:

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

# confirm current setting (follows are default settings)
PS C:\Users\Administrator> Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\w32time\TimeProviders\NtpServer" 

InputProvider                    : 0
AllowNonstandardModeCombinations : 1
EventLogFlags                    : 0
ChainEntryTimeout                : 16
ChainMaxEntries                  : 128
ChainMaxHostEntries              : 4
ChainDisable                     : 0
ChainLoggingRate                 : 30
RequireSecureTimeSyncRequests    : 0
DllName                          : C:\Windows\SYSTEM32\w32time.DLL
Enabled                          : 0
PSPath                           : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Serv
                                   ices\w32time\TimeProviders\NtpServer
PSParentPath                     : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Serv
                                   ices\w32time\TimeProviders
PSChildName                      : NtpServer
PSDrive                          : HKLM
PSProvider                       : Microsoft.PowerShell.Core\Registry

# enable NTP Server feature
PS C:\Users\Administrator> Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\w32time\TimeProviders\NtpServer" -Name "Enabled" -Value 1 

# set [AnnounceFlags] to 5
# number means
# 0x00 : Not a time server
# 0x01 : Always time server
# 0x02 : Automatic time server
# 0x04 : Always reliable time server
# 0x08 : Automatic reliable time server
PS C:\Users\Administrator> Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\services\W32Time\Config" -Name "AnnounceFlags" -Value 5 

# restart Windows Time service
PS C:\Users\Administrator> Restart-Service w32Time 

# if Windows Firewall is running, allow NTP port
PS C:\Users\Administrator> New-NetFirewallRule `
-Name "NTP Server Port" `
-DisplayName "NTP Server Port" `
-Description 'Allow NTP Server Port' `
-Profile Any `
-Direction Inbound `
-Action Allow `
-Protocol UDP `
-Program Any `
-LocalAddress Any `
-LocalPort 123 

2. NTP Server Host cũng cần đồng bộ hóa thời gian với các Host khác với tư cách là NTP Client.

Cấu hình NTP Client trong Windows Server 2019

Cài đặt NTP Client được cấu hình với NTP Server [time.windows.com] theo mặc định của Windows, vì vậy nếu máy tính kết nối với Internet, ngày và giờ sẽ được đồng bộ.

Hơn nữa, nếu máy tính ở trong Active Directory Domain, cài đặt NTP Client cũng được cấu hình như sau, vì vậy nói chung không cần phải thay đổi cài đặt:

  • Domain Controller đồng bộ thời gian với PDC trong domain.
  • PDC trong một domain đồng bộ thời gian với PDC trong Parent Domain (domain chính) hoặc với các Domain Controller khác.
  • Các máy tính khách đồng bộ thời gian với Domain Controller mà client hiện đăng nhập.

Trong máy tính môi trường WorkGroup, có thể thay đổi NTP server mặc định thành những máy chủ khác như sau.

1. Chạy PowerShell với quyền admin và cấu hình như sau:

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

# confirm current synchronization NTP Server
PS C:\Users\Administrator> w32tm /query /source 
time.windows.com,0x8

# change target NTP Server (replace to your timezone server)
# number means
# 0x01 : SpecialInterval
# 0x02 : UseAsFallbackOnly
# 0x04 : SymmetricActive
# 0x08 : NTP request in Client mode
PS C:\Users\Administrator> Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\w32time\Parameters" -Name "NtpServer" -Value "ntp.nict.jp,0x8" 

# restart Windows Time service
PS C:\Users\Administrator> Restart-Service w32Time 

# re-sync manually
PS C:\Users\Administrator> w32tm /resync 
Sending resync command to local computer
The command completed successfully.

# verify status
PS C:\Users\Administrator> w32tm /query /status 

Leap Indicator: 0(no warning)
Stratum: 4 (secondary reference - syncd by (S)NTP)
Precision: -23 (119.209ns per tick)
Root Delay: 0.0252246s
Root Dispersion: 0.0824040s
ReferenceId: 0x85F3EEF3 (source IP:  133.243.238.243)
Last Successful Sync Time: 9/23/2019 10:15:33 PM
Source: ntp.nict.jp,0x8
Poll Interval: 8 (256s)

2. Nếu một máy tính ở trong môi trường domain Active Directory và là một Forest Root, thì mục tiêu đồng bộ thường được cấu hình thành [Local CMOS Clock] (Hardware Clock). Sau đó, nếu bạn muốn thay đổi cài đặt từ [Local CMOS Clock] sang NTP server mạng, hãy thiết lập như sau:

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

# in AD Domain Environment, [Type] is set to [NT5DS]
PS C:\Users\Administrator> (Get-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Services\w32time\Parameters").GetValue("Type") 
NT5DS

# if target is [Local CMOS Clock] but you'd like to change it, change [Type] to [NTP] first
# next, change to NTP server with the same way in [1] section
PS C:\Users\Administrator> Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\w32time\Parameters" -Name "Type" -Value "NTP" 

NTP server là gì? Hướng dẫn cài đặt NTP server trên CentOs 8

Giới thiệu nội dung

  • NTP server là gì?
  • Nguyên lý hoạt động trong NTP server.
  • Hướng dẫn cấu hình NTP Server trên CentOs 8
  • Tổng kết

NTP server là gì?

Giao thức NTP (Network Time Protocol – Là giao thức đồng bộ thời gian mạng) là một giao thức để đồng bộ đồng hồ của hệ thống máy tính thông qua mạng dữ liệu chuyển mạch gói với độ trễ có biến đổi. Khi các client gửi yêu cầu đồng bộ thời gian lên máy chủ, các máy chủ sẽ cập nhật với nhau để có thể đồng bộ chính xác giờ nhất cho client.

Giao thức này được thiết kế ra để tránh ảnh hưởng của độ trễ biến đổi bằng cách là sử dụng bộ đệm jitter. NTP cũng được gọi là của phần mềm được triển khai trong một dự án Dịch vụ NTP Công cộng (NTP Public Services Project).

NTP server là gì?

Nguyên lý hoạt động của NTP server

  • NTP client gửi đi một gói tin, trong đó có chứa một thẻ thời gian tới cho NTP server.
  • NTP server nhận được gói tin, và gửi trả lại NTP client một gói tin khác, có thẻ thời gian là thời điểm nó đã gửi gói tin đó đi.
  • NTP client nhận được gói tin đó, rồi tính toán độ trễ, dựa vào thẻ thời gian mà nó nhận được cùng với độ trễ của đường truyền, NTP client sẽ tự động set lại thời gian của nó.

Hoạt động của ntp server

Hướng dẫn cấu hình NTP Server trên CentOs 8

Chuẩn bị mô hình kết nối

Sử dụng 2 Server cho mô hình:
– CentOS 8
– Có kết nối Internet
– Đăng nhập thao tác với user root

Chuẩn bị trước khi cài đặt

Cấu hình timezone.

# timedatectl set-timezone Asia/Ho_Chi_Minh

Kiểm tra timezone sau khi cài đặt.

# timedatectl

Cấu hình allow Firewalld.

# firewall-cmd –add-service=ntp –permanent

# firewall-cmd –reload

Cấu hình disable SElinux.

# sudo setenforce 0

# sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/sysconfig/selinux

# sed -i ‘s/SELINUX=permissive/SELINUX=disabled/g’ /etc/sysconfig/selinux

Cài đặt Chrony trên cả 2 Server

Truy cập vào SSH vào cả 2 Server. Sau đó tiến hành cài đặt Chrony.

# yum install -y chrony

Sau khi cài đặt tiến hành start Chrony và cho phép khởi động cùng hệ thống.

# systemctl enable –now chronyd

Kiểm tra dịch vụ đang hoạt động.

# systemctl status chronyd

Mặc định file cấu hình của Chrony nằm ở /etc/chrony.conf, tiến hành kiểm tra file cấu hình.

# cat /etc/chrony.conf | egrep -v ‘^$|^#’

Cấu hình Chrony làm NTP Server

Chrony cho phép chúng ta cấu hình Server thành một NTP Server. Việc này phù hợp cho các mô hình mạng LAN có nhiều máy kết nối. Thay vì phải tốn thời gian đồng bộ từ Internet thì chúng ta có thể cấu hình 1 Server làm NTP Server Local và các máy còn lại sẽ đồng bộ thời gian từ NTP Server này về.

Để lựa chọn pool đồng bộ thời gian chúng ta có thể truy cập vào NTP Pool để lựa chọn NTP Server. Ở đây chúng ta giữ nguyên đồng bộ từ centos.pool.ntp.org.

Tại Server 10.10.10.61 là Server sẽ làm NTP Server.  Chúng ta sẽ cấu hình bổ sung cấu hình cho phép các máy Client 10.10.10.62 phía trong có thể đồng bộ thời gian từ Server này.

# sed -i ‘s|#allow 192.168.0.0/16|allow 10.10.10.0/24|g’ /etc/chrony.conf

Trong đó 10.10.10.0/24 chính là dải IP Local mà chúng ta cho phép các Client kết nối vào NTP Server này để đồng bộ thời gian.

Kiểm tra lại file cấu hình.

Restart lại dịch vụ để cập nhật cấu hình.

# systemctl restart chronyd

Sử dụng chronyc để kiểm tra đồng bộ.

# chronyc sources

Kiểm tra đồng bộ sử dụng timedatectl.

Set đồng bộ thời gian cho đồng hồ của BIOS (Đồng hồ phần cứng) hwclock.

# hwclock –systohc

Kiểm tra đồng bộ của date và hwclock đảm bảo đồng bộ

Cấu hình Chrony Client

Sau khi cài đặt và khởi động Chrony thì Server này đã tự động đồng bộ thời gian về từ một trong những NTP Server thuộc pool centos.pool.ntp.org

Bây giờ thay vì đồng bộ thời gian từ Internet chúng ta sẽ đồng bộ từ NTP Server đã cấu hình phía trên.

Tại Server 10.10.10.62 chỉnh sửa cấu hình chrony.

# sed -i ‘s|server 0.centos.pool.ntp.org iburst|server 10.10.10.61 iburst|g’ /etc/chrony.conf

# sed -i ‘s|server 1.centos.pool.ntp.org iburst|#|g’ /etc/chrony.conf

# sed -i ‘s|server 2.centos.pool.ntp.org iburst|#|g’ /etc/chrony.conf

# sed -i ‘s|server 3.centos.pool.ntp.org iburst|#|g’ /etc/chrony.conf

Kiểm tra cấu hình

Khởi động lại Chrony để cập nhật cấu hình.

# systemctl restart chronyd

Sử dụng chronyc kiểm tra đồng bộ.

Kiểm tra đồng bộ sử dụng timedatectl.

Set đồng bộ thời gian cho đồng hồ của BIOS (Đồng hồ phần cứng) hwclock.

# hwclock –systohc

Kiểm tra đồng bộ của date và hwclock đảm bảo đồng bộ.

Tổng kết

Bài viết đã trình bày các khái niệm cơ bản về NTP và hướng dẫn cài đặt cấu hình đồng bộ thời gian trên CentOS 8 sử dụng Chrony. Việc chuyển đổi sử dụng từ NTPD sang Chrony không hệ phức tạp vì Chrony rất thuận tiện trong quá trình cấu hình và thao tác.