็†ฑ้–€ๅˆ†้กž
 ่ผ‰ๅ…ฅไธญ…
็›ฎ้Œ„

๐Ÿง Linux NTP ๆ™‚้–“ๅŒๆญฅๆœๅ‹™ๆ•™ๅญธ:Chrony ่ˆ‡ systemd-timesyncd ่จญๅฎšๅ…จๆ”ป็•ฅ

    ๐Ÿง Linux NTP ๆ™‚้–“ๅŒๆญฅๆœๅ‹™ๆ•™ๅญธ:Chrony ่ˆ‡ systemd-timesyncd ่จญๅฎšๅ…จๆ”ป็•ฅ

    ๆ™‚้–“ๅŒๆญฅๆ˜ฏๆ‰€ๆœ‰็ณป็ตฑ่ˆ‡็ถฒ่ทฏๆœๅ‹™็š„ๅบ•ๅบง——ๅฝฑ้Ÿฟ ๆ†‘่ญ‰ๆœ‰ๆ•ˆๆœŸๆ—ฅ่ชŒๆ™‚้–“็ทšๅข้›†ไธ€่‡ดๆ€ง ่ˆ‡ ๅฎ‰ๅ…จไบ‹ไปถ่ฟฝๆŸฅ。ๆœฌๆ–‡ไปฅ Chrony ่ˆ‡ systemd-timesyncd ็‚บไธป,ๆไพ›「็”จไฝœ NTP Client」่ˆ‡「ๅปบ็ฝฎ LAN ๅ…ง้ƒจ NTP Server」็š„ๅฎŒๆ•ด่จญๅฎš่ˆ‡ๆŽ’้Œฏๆธ…ๅ–ฎ。

    ๐Ÿ“‘ ็›ฎ้Œ„

    ไธ€、Chrony vs systemd-timesyncd:ๆ€Ž้บผ้ธ?

    • Chrony:ๅŠŸ่ƒฝๅฎŒๆ•ด,ไผบๆœๅ™จ/ๅฎขๆˆถ็ซฏ ้ƒฝ่ƒฝๅ‹ไปป,ๆŠ–ๅ‹•ไฟฎๆญฃๅฟซ、ๆ”ฏๆด้›ข็ทšๅพŒ่ฟฝ่ถ•,ไผๆฅญๅปบ่ญฐ้ ่จญ
    • systemd-timesyncd:่ผ•้‡ NTP client(ไธๆไพ› NTP ๆœๅ‹™็ตฆไป–ไบบ),ๆกŒ้ข/ๅฎนๅ™จๅพˆๅค ็”จ。

    ไบŒ、NTP Client ่จญๅฎš(ๆœ€็Ÿญ่ทฏๅพ‘)

    ๆ–นๆกˆ A:ไฝฟ็”จ Chrony(ๅปบ่ญฐ)

    # Ubuntu/Debian
    sudo apt update && sudo apt install -y chrony
    
    # RHEL/Rocky/Alma
    sudo dnf install -y chrony
    
    # ่จญๅฎšไธŠๆธธ(ไปฅ pool.ntp.org ็‚บไพ‹;ไผๆฅญๅฏๆ”นๅ…ง้ƒจ NTP ไธปๆฉŸ)
    sudo sed -i 's/^pool .*/pool tw.pool.ntp.org iburst/' /etc/chrony/chrony.conf
    
    sudo systemctl enable --now chronyd
    sudo timedatectl set-ntp true    # ็ขบไฟ็”ฑ NTP ๅŒๆญฅ
    

    ๆ–นๆกˆ B:ไฝฟ็”จ systemd-timesyncd(ๅƒ… client)

    # ๅฎ‰่ฃ/ๅ•Ÿ็”จ(ๅคšๆ•ธ็™ผ่กŒ็‰ˆๅ…งๅปบ)
    sudo systemctl unmask systemd-timesyncd
    sudo systemctl enable --now systemd-timesyncd
    
    # ๆŒ‡ๅฎšไธŠๆธธ NTP
    sudo bash -c 'cat >/etc/systemd/timesyncd.conf<<EOF
    [Time]
    NTP=tw.pool.ntp.org
    FallbackNTP=time.google.com ntp.ubuntu.com
    EOF'
    sudo systemctl restart systemd-timesyncd
    

    ไธ‰、ๅ…ง้ƒจ NTP Server ๅปบ็ฝฎ(ๅฐ LAN ๆไพ›ๅŒๆญฅ)

    ไฝฟ็”จ Chrony ๆœ€ๅ–ฎ็ด”;timesyncd ไธๆไพ›ๅฐๅค–ๆœๅ‹™。

    # 1) ๅฎ‰่ฃ
    sudo dnf/apt install -y chrony
    
    # 2) ่จญๅฎš /etc/chrony/chrony.conf
    # - ๆŒ‡ๅฎšไธŠๆธธ;ๅ…่จฑๅ…ง็ถฒ;ๅ•Ÿ็”จๆœฌๅœฐๅƒ่€ƒ(้ธๆ“‡ๆ€ง)
    pool tw.pool.ntp.org iburst
    allow 192.168.0.0/16
    # ๅฆ‚ๆžœไฝ ่ฆๅœจๅค–็ถฒไธ้€šๆ™‚ๆไพ›ๆšซๆ™‚ๆ™‚้–“,ๅ–ๆถˆ่จป่งฃไธ‹่กŒ(ๆ…Ž็”จ)
    # local stratum 10
    
    # 3) ๅ•Ÿ็”จๆœๅ‹™
    sudo systemctl enable --now chronyd
    
    # 4) ้˜ฒ็ซ็‰†้–‹ๆ”พ NTP (UDP/123)
    # firewalld
    sudo firewall-cmd --add-service=ntp --permanent
    sudo firewall-cmd --reload
    # ufw
    sudo ufw allow 123/udp
    

    ๅ‚™่จป:SELinux ้ ่จญๅ…่จฑ chronyd;่‹ฅ่‡ช่จ‚่ทฏๅพ‘ๆˆ–้กๅค–้™ๅˆถ,่ซ‹ๆชขๆŸฅ audit ๆ—ฅ่ชŒๅพŒๅ†ไปฅ semanage ่ชฟๆ•ด。

    ๅ››、้ฉ—่ญ‰่ˆ‡็›ฃๆŽงๆŒ‡ไปค

    # ๆ˜ฏๅฆ็”ฑ NTP ๆŽงๅˆถ
    timedatectl
    
    # Chrony ไพ†ๆบ่ˆ‡ๅŒๆญฅ็‹€ๆ…‹
    chronyc sources -v
    chronyc tracking
    chronyc sourcestats
    
    # ็ณป็ตฑๆ™‚่จˆๅ็งป/ๆญฅ้€ฒ็ด€้Œ„
    journalctl -u chronyd --since "today"
    

    ไบ”、ๅฎ‰ๅ…จๅปบ่ญฐ่ˆ‡ๆœ€ไฝณๅฏฆๅ‹™

    • Server ๅƒ… allow ๅ…ง้ƒจ็ถฒๆฎต;ๅค–้ƒจไธปๆฉŸ่ซ‹ๆ”น่ตฐไธŠๆธธ(pool / ISP NTP)。
    • ไฝฟ็”จๅคšๅ€‹ไธŠๆธธ(ๅ…ฌ็ถฒ + ๆœฌๅœฐ ISP)ไธฆๅŠ  iburst ๆๅ‡ๆ”ถๆ–‚้€Ÿๅบฆ。
    • ่™›ๆ“ฌๅŒ–/ๅฎนๅ™จ็’ฐๅขƒ:ๅ„ชๅ…ˆไปฅ ๅฎฟไธปๆฉŸ ็ˆฒ NTP ไพ†ๆบ,้ฟๅ…ๅฑคๅฑคๅปถ้ฒ。
    • ้—œ้ต็ณป็ตฑๆ›ดๆ–ฐ BIOS/RTC ๅพŒ,้ฉ—่ญ‰ timedatectl ๆ˜ฏๅฆไป็”ฑ NTP ๆŽงๅˆถ。

    ๅ…ญ、ๅธธ่ฆ‹ๅ•้กŒๆŽ’ๆŸฅๆธ…ๅ–ฎ

    • ⛔ UDP/123 ่ขซๆ“‹:ๆชขๆŸฅ firewalld/ufw、้‚Š็•Œ้˜ฒ็ซ็‰† ACL。
    • ๐ŸŒ€ NTP ไพ†ๆบไธๅฏ้”:ๆ›ดๆ› pool,ๆˆ–ๅŠ ๅ…ฅ time.google.com/ntp.ubuntu.com
    • ๐Ÿ” ๆœๅ‹™่ก็ช:ไธ่ฆๅŒๆ™‚ๅ•Ÿ็”จ chronyd ่ˆ‡ systemd-timesyncd。ไฟ็•™ๅ…ถไธ€。
    • ⏱️ ๆ™‚้˜ๅคงๅน…ๆผ‚็งป:็ฌฌไธ€ๆฌกๅฏๅ…่จฑๆญฅ้€ฒ(chrony ๆœƒ่‡ชๅ‹•่™•็†),ๆˆ–ๆ‰‹ๅ‹• sudo hwclock -w ๅŒๆญฅ RTC。

    ไธƒ、ๅฟซ้€Ÿ Recipes:Ubuntu / Debian / RHEL / Rocky

    Ubuntu / Debian(Server + Client)
    sudo apt update && sudo apt install -y chrony
    sudo sed -i 's/^pool .*/pool tw.pool.ntp.org iburst/' /etc/chrony/chrony.conf
    echo "allow 192.168.0.0/16" | sudo tee -a /etc/chrony/chrony.conf
    sudo systemctl enable --now chronyd
    sudo ufw allow 123/udp
    chronyc tracking && chronyc sources -v
    
    RHEL / Rocky / Alma(Server + Client)
    sudo dnf install -y chrony
    sudo sed -i 's/^pool .*/pool tw.pool.ntp.org iburst/' /etc/chrony.conf
    echo "allow 192.168.0.0/16" | sudo tee -a /etc/chrony.conf
    sudo systemctl enable --now chronyd
    sudo firewall-cmd --add-service=ntp --permanent && sudo firewall-cmd --reload
    chronyc tracking && chronyc sources -v
    

    ๐Ÿงญ ่กŒๅ‹•ๆธ…ๅ–ฎ

    ✅ ้ธๅฎšๆ–นๆกˆ:Server ็”จ Chrony、ๅทฅไฝœ็ซ™ๅฏ็”จ timesyncd
    ✅ ่จญๅฎšไธŠๆธธ pool ่ˆ‡ allow ๅ…ง็ถฒๆฎต
    ✅ ้–‹ๅ•Ÿ้˜ฒ็ซ็‰† UDP/123 ไธฆ้ฉ—่ญ‰ chronyc tracking/sources
    ✅ ๅฐ‡ๆœฌๆฉŸ่จญ็‚บๅ…ง้ƒจ NTP,ๅ…ถไป–ไธปๆฉŸๆ”นๆŒ‡ๅ‘ๅฎƒ
      

    ๐Ÿ”— ๅปถไผธ้–ฑ่ฎ€

    ๐Ÿ”— ๅˆ†ไบซ้€™็ฏ‡ LINE Facebook X

    ๆฒ’ๆœ‰็•™่จ€:

    ๅผต่ฒผ็•™่จ€

    ๅญ—็ดš