ค้นหาเว็บไซต์

วิธีติดตั้งและกำหนดค่าเซิร์ฟเวอร์ NTP และไคลเอนต์บน Debian


Network Time Protocol (NTP) นำเสนอความสามารถเฉพาะสำหรับบริษัทต่างๆ ในการซิงโครไนซ์นาฬิกาของระบบทั้งหมดภายในบริษัท การซิงโครไนซ์เวลามีความสำคัญด้วยเหตุผลหลายประการ ตั้งแต่การประทับเวลาของแอปพลิเคชัน ความปลอดภัย ไปจนถึงรายการบันทึกที่เหมาะสม

เมื่อระบบขององค์กรทั้งหมดรักษาเวลานาฬิกาที่แตกต่างกัน จากจุดยืนในการแก้ไขปัญหาจะยากมากในการพิจารณาว่าเหตุการณ์ใดเหตุการณ์หนึ่งอาจเกิดขึ้นเมื่อใดและภายใต้เงื่อนไขใด

NTP มอบวิธีง่ายๆ เพื่อให้แน่ใจว่าระบบทั้งหมดจะรักษาเวลาที่ถูกต้อง ซึ่งจะช่วยแบ่งเบาภาระของผู้ดูแลระบบ/การสนับสนุนด้านเทคนิคได้อย่างมาก

NTP ทำงานบนสถานที่ตั้งของการซิงโครไนซ์กับนาฬิกาอ้างอิง หรือที่เรียกว่าเซิร์ฟเวอร์ 'stratum 0' จากนั้นเซิร์ฟเวอร์ NTP อื่นๆ ทั้งหมดจะกลายเป็นเซิร์ฟเวอร์ชั้นที่ต่ำกว่าโดยขึ้นอยู่กับระยะห่างจากเซิร์ฟเวอร์อ้างอิง

จุดเริ่มต้นของห่วงโซ่ NTP คือเซิร์ฟเวอร์ stratum 1 ซึ่งจะเชื่อมต่อโดยตรงกับนาฬิกาอ้างอิง stratum 0 เสมอ จากที่นี่ เซิร์ฟเวอร์ชั้นที่ต่ำกว่าจะเชื่อมต่อผ่านการเชื่อมต่อเครือข่ายไปยังเซิร์ฟเวอร์ชั้นที่สูงกว่า

โปรดดูแผนภาพด้านล่างเพื่อดูแนวคิดที่ชัดเจนยิ่งขึ้น

แม้ว่าการตั้งค่าเซิร์ฟเวอร์ stratum 0 หรือ stratum 1 สามารถทำได้ แต่ก็มีค่าใช้จ่ายสูง ดังนั้นคู่มือนี้จะมุ่งเน้นไปที่การตั้งค่าเซิร์ฟเวอร์ชั้นล่าง

Tecmint มีการกำหนดค่าโฮสต์พื้นฐานของ NTP ที่ลิงก์ต่อไปนี้:

  1. วิธีซิงโครไนซ์เวลากับเซิร์ฟเวอร์ NTP

ในกรณีที่คู่มือนี้จะแตกต่างออกไป แทนที่จะให้โฮสต์ทั้งหมดบนเครือข่ายสอบถามไปยังเซิร์ฟเวอร์ NTP สาธารณะ เซิร์ฟเวอร์หนึ่งเครื่อง (หรือหลายเครื่อง) จะติดต่อกับระบบ NTP สาธารณะ จากนั้นให้เวลาสำหรับโฮสต์ทั้งหมดภายใน เครือข่ายท้องถิ่น

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

ขั้นตอนที่ 1: การติดตั้งเซิร์ฟเวอร์ NTP

1. ขั้นตอนแรกในการตั้งค่าโครงสร้าง NTP ภายในคือการติดตั้งซอฟต์แวร์เซิร์ฟเวอร์ NTP แพคเกจซอฟต์แวร์ใน Debian ชื่อ 'NTP' ปัจจุบันมียูทิลิตี้เซิร์ฟเวอร์ทั้งหมดที่จำเป็นในการตั้งค่าลำดับชั้น NTP เช่นเดียวกับบทช่วยสอนทั้งหมดเกี่ยวกับการกำหนดค่าระบบ ถือว่ามีการเข้าถึง รูท หรือ sudo

apt-get install ntp
dpkg --get-selections ntp          [Can be used to confirm NTP is installed]
dpkg -s ntp                        [Can also be used to confirm NTP is installed]

ขั้นตอนที่ 1: การกำหนดค่าเซิร์ฟเวอร์ NTP

2. เมื่อติดตั้ง NTP แล้ว ก็ถึงเวลากำหนดค่าเซิร์ฟเวอร์ชั้นที่สูงกว่าเพื่อค้นหาเวลา ไฟล์การกำหนดค่าสำหรับ NTP จะถูกเก็บไว้ที่ '/etc/ntp.conf' และสามารถแก้ไขได้ด้วยโปรแกรมแก้ไขข้อความใดๆ ไฟล์นี้จะมีชื่อโดเมนแบบเต็มของเซิร์ฟเวอร์ระดับที่สูงกว่า ข้อจำกัดที่กำหนดไว้สำหรับเซิร์ฟเวอร์ NTP นี้ และพารามิเตอร์พิเศษอื่นๆ สำหรับโฮสต์ที่สอบถามเซิร์ฟเวอร์ NTP นี้

หากต้องการเริ่มกระบวนการกำหนดค่า จำเป็นต้องกำหนดค่าเซิร์ฟเวอร์ระดับที่สูงกว่า โดยค่าเริ่มต้น Debian จะใส่พูล Debian NTP ไว้ในไฟล์กำหนดค่า สิ่งเหล่านี้ใช้ได้สำหรับวัตถุประสงค์ส่วนใหญ่ แต่ผู้ดูแลระบบสามารถไปที่ NIST เพื่อระบุเซิร์ฟเวอร์บางตัว หรือใช้เซิร์ฟเวอร์ทั้งหมดของ NIST ในลักษณะหมุนเวียนกัน (แนะนำวิธีการโดย NIST)

สำหรับบทช่วยสอนนี้ เซิร์ฟเวอร์เฉพาะจะได้รับการกำหนดค่า ไฟล์การกำหนดค่าแบ่งออกเป็นส่วนหลักบางส่วนและได้รับการกำหนดค่าตามค่าเริ่มต้นสำหรับ IPv4 และ IPv6 (หากคุณต้องการปิดใช้งาน IPv6 จะมีการกล่าวถึงเรื่องนี้ในภายหลัง) หากต้องการเริ่มกระบวนการกำหนดค่า ต้องเปิดไฟล์การกำหนดค่าด้วยโปรแกรมแก้ไขข้อความ

nano /etc/ntp.conf

สองสามส่วนแรก (driftfile, statsdir และ สถิติ) ได้รับการตั้งค่าอย่างดีเป็นค่าเริ่มต้น ส่วนถัดไปประกอบด้วยเซิร์ฟเวอร์ระดับที่สูงกว่าซึ่งเซิร์ฟเวอร์นี้ควรขอเวลา ไวยากรณ์สำหรับแต่ละรายการเซิร์ฟเวอร์นั้นง่ายมาก:

server <fully qualified domain name> <options>
server time.nist.gov iburst â     [sample entry]

โดยปกติแล้ว เป็นความคิดที่ดีที่จะมีเซิร์ฟเวอร์ชั้นที่สูงกว่าหลายเซิร์ฟเวอร์ให้เลือกในรายการนี้ เซิร์ฟเวอร์นี้จะสอบถามเซิร์ฟเวอร์ทั้งหมดในรายการเพื่อพิจารณาว่าเซิร์ฟเวอร์ใดน่าเชื่อถือที่สุด เซิร์ฟเวอร์สำหรับตัวอย่างนี้ได้มาจาก: http://tf.nist.gov/tf-cgi/servers.cgi

ขั้นตอนที่ 3: การกำหนดค่าข้อจำกัด NTP

3. ขั้นตอนต่อไปคือการกำหนดค่าข้อจำกัด NTP สิ่งเหล่านี้ใช้เพื่อ อนุญาต หรือ ไม่อนุญาตให้ โฮสต์โต้ตอบกับเซิร์ฟเวอร์ NTP ค่าเริ่มต้นสำหรับ NTP คือเวลาให้บริการสำหรับทุกคน แต่ไม่อนุญาตให้กำหนดค่าทั้งการเชื่อมต่อ IPv4 และ IPv6

ขณะนี้เซิร์ฟเวอร์นี้ใช้งานบนเครือข่าย IPv4 เท่านั้น ดังนั้น IPv6 จึงถูกปิดใช้งานด้วยสองวิธี สิ่งแรกที่ทำเพื่อปิดการใช้งาน IPv6 บนเซิร์ฟเวอร์ NTP คือการเปลี่ยนค่าเริ่มต้นที่ daemon เริ่มทำงาน ซึ่งทำได้โดยการเปลี่ยนบรรทัดใน '/etc/default/ntp'

nano /etc/default/ntp
NTPD_OPTS='-4 -g' [Add the ' -4 ' to this line to tell NTPD to only listen to IPv4]

ย้อนกลับไปในไฟล์การกำหนดค่าหลัก (/etc/ntp.conf) NTP daemon จะได้รับการกำหนดค่าโดยอัตโนมัติเพื่อแชร์เวลากับโฮสต์ IPv4/6 ทั้งหมด แต่ไม่อนุญาตให้กำหนดค่า สามารถดูได้จากสองบรรทัดต่อไปนี้:

NTPD ทำงานบนพื้นฐานที่อนุญาต เว้นแต่ถูกปฏิเสธ เนื่องจาก IPv6 ถูกปิดใช้งาน บรรทัด 'restrict -6' จึงสามารถลบออกหรือใส่เครื่องหมายความคิดเห็นด้วย ' # ได้

สิ่งนี้จะเปลี่ยนพฤติกรรมเริ่มต้นสำหรับ NTP เพื่อละเว้นข้อความทั้งหมด สิ่งนี้อาจดูแปลกแต่ให้อ่านต่อไปเนื่องจากส่วนคำสั่งจำกัดจะถูกนำมาใช้เพื่อปรับแต่งการเข้าถึงเซิร์ฟเวอร์ NTP นี้สำหรับโฮสต์ที่ต้องการการเข้าถึง

ตอนนี้เซิร์ฟเวอร์จำเป็นต้องรู้ว่าใครได้รับอนุญาตให้สืบค้นเซิร์ฟเวอร์ตามเวลา และทำอะไรอีกบ้างที่พวกเขาได้รับอนุญาตให้ทำกับเซิร์ฟเวอร์ NTP สำหรับเซิร์ฟเวอร์นี้ เครือข่ายส่วนตัว 172.27.0.0/16 จะถูกนำมาใช้เพื่อสร้างบทจำกัด

บรรทัดนี้แจ้งให้เซิร์ฟเวอร์อนุญาตให้โฮสต์จากเครือข่าย 172.27.0.0/16 เข้าถึงเซิร์ฟเวอร์ได้เป็นระยะๆ พารามิเตอร์หลังมาสก์ช่วยควบคุมสิ่งที่โฮสต์บนเครือข่ายนี้สามารถทำได้เมื่อทำการสอบถามเซิร์ฟเวอร์ ใช้เวลาสักครู่เพื่อทำความเข้าใจตัวเลือกการจำกัดแต่ละตัวเลือกเหล่านี้:

  1. จำกัด: บ่งชี้ว่าหากไคลเอ็นต์ควรใช้การควบคุมอัตราแพ็กเก็ตในทางที่ผิด แพ็กเก็ตจะถูกละทิ้งโดยเซิร์ฟเวอร์ หากเปิดใช้งานแพ็กเก็ต Kiss of Death มันจะถูกส่งกลับไปยังโฮสต์ที่ไม่เหมาะสม ผู้ดูแลระบบสามารถกำหนดค่าอัตราได้ แต่จะใช้ค่าเริ่มต้นที่นี่
  2. KOD: จูบแห่งความตาย หากโฮสต์ละเมิดขีดจำกัดของแพ็กเก็ตไปยังเซิร์ฟเวอร์ เซิร์ฟเวอร์จะตอบกลับด้วยแพ็กเก็ต KoD ไปยังโฮสต์ที่ละเมิด
  3. Notrap: ข้อความควบคุมโหมดปฏิเสธ 6 ข้อความควบคุมเหล่านี้ใช้สำหรับโปรแกรมบันทึกระยะไกล
  4. Nomodify: ป้องกันการสืบค้น ntpq และ ntpdc ที่จะแก้ไขการกำหนดค่าของเซิร์ฟเวอร์ แต่ยังคงอนุญาตให้ทำการสืบค้นข้อมูลได้
  5. Noquery: ตัวเลือกนี้จะป้องกันไม่ให้โฮสต์สอบถามข้อมูลจากเซิร์ฟเวอร์ ตัวอย่างเช่น หากไม่มีตัวเลือกนี้ โฮสต์สามารถใช้ ntpdc หรือ ntpq เพื่อกำหนดว่าเซิร์ฟเวอร์เวลาใดได้รับเวลาจากที่ใด หรือเซิร์ฟเวอร์เวลาเพียร์อื่นๆ ที่อาจสื่อสารด้วย