สวัสดีตอนบ่ายแขกและผู้อ่านประจำ ฉันค่อยๆ ย้ายจากพื้นฐานไปสู่การศึกษา Linux ในเชิงลึกมากขึ้น วันนี้ผมอยากจะพิจารณา การทำงานของโปรโตคอล ntpตลอดจนการตั้งค่า เซิร์ฟเวอร์เวลาบน Linux(เซิร์ฟเวอร์เอ็นทีพี)- เรามาเริ่มกันด้วยทฤษฎีกันก่อน

โปรโตคอล NTP

โปรโตคอลเวลาเครือข่าย (NTP)- โปรโตคอลเครือข่ายสำหรับการซิงโครไนซ์นาฬิกาภายในของคอมพิวเตอร์โดยใช้เครือข่ายที่มีความหน่วงผันแปร (อ่าน "ความกว้างของช่องสัญญาณ"/คุณภาพ)

NTP ใช้สำหรับการทำงาน โปรโตคอล UDP และพอร์ต 123

เวอร์ชันโปรโตคอลปัจจุบัน - เอ็นทีพี 4. เอ็นทีพีใช้ระบบลำดับชั้น "ระดับรายชั่วโมง"(เรียกอีกอย่างว่า ชั้น). ระดับ 0 (หรือชั้น 0)- โดยปกติจะเป็นอุปกรณ์ที่เป็นนาฬิกาอะตอม (โมเลกุล ควอนตัม) นาฬิกา GPS หรือนาฬิกาวิทยุ อุปกรณ์เหล่านี้มักจะไม่ได้เผยแพร่บนเวิลด์ไวด์เว็บ แต่เชื่อมต่อโดยตรง เซิร์ฟเวอร์เวลาระดับ 1ผ่านโปรโตคอล RS-232 (ระบุด้วยลูกศรสีเหลืองในภาพประกอบ) ระดับ 1ซิงโครไนซ์กับนาฬิกาที่มีความแม่นยำสูง ระดับ 0มักจะทำงานเป็นแหล่งที่มาสำหรับเซิร์ฟเวอร์ ระดับ 2. ระดับ 2ซิงโครไนซ์กับเครื่องใดเครื่องหนึ่ง ระดับ 1และการซิงโครไนซ์กับเซิร์ฟเวอร์ในระดับของคุณก็เป็นไปได้เช่นกัน ระดับ 3ทำงานคล้ายกับอันที่สอง โดยปกติแล้ว เซิร์ฟเวอร์ระดับ 2 และต่ำกว่าจะถูกเผยแพร่บนเครือข่าย โปรโตคอล NTPรองรับได้ถึง 256 ระดับ ฉันอยากจะทราบด้วยว่าเซิร์ฟเวอร์ระดับ 1 และ 2 และบางครั้งถึงระดับ 3 ก็ไม่ได้เปิดให้บุคคลทั่วไปเข้าถึงได้เสมอไป บางครั้งเพื่อที่จะซิงโครไนซ์กับพวกเขา คุณต้องส่งคำขอทางไปรษณีย์ไปยังผู้ดูแลระบบโดเมน

เหตุใดจึงมีข้อจำกัดในการเข้าถึงเซิร์ฟเวอร์? เมื่อเปลี่ยนไปยังแต่ละระดับ ข้อผิดพลาดที่เกี่ยวข้องกับเซิร์ฟเวอร์หลักจะเพิ่มขึ้นเล็กน้อย แต่ จำนวนเซิร์ฟเวอร์ทั้งหมดเพิ่มขึ้นและดังนั้นจึง .

การกำหนดเซิร์ฟเวอร์ NTP บนเครือข่ายท้องถิ่น

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

โหมดการทำงานของเซิร์ฟเวอร์/ไคลเอ็นต์ NTP

ไคลเอนต์/เซิร์ฟเวอร์

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

โหมดแอคทีฟ/พาสซีฟแบบสมมาตร

โหมดนี้จะใช้หากมีการซิงโครไนซ์เวลาระหว่างเครื่องเพียร์จำนวนมาก นอกเหนือจากข้อเท็จจริงที่ว่าแต่ละเครื่องซิงโครไนซ์กับแหล่งภายนอกแล้ว ยังซิงโครไนซ์กับเพื่อนบ้าน (เพียร์) ซึ่งทำหน้าที่เป็นไคลเอนต์และเซิร์ฟเวอร์เวลาสำหรับพวกเขา ดังนั้นแม้ว่าเครื่องจักรจะ "สูญเสีย" แหล่งข้อมูลภายนอก แต่ก็ยังสามารถรับเวลาที่แม่นยำจากเพื่อนบ้านได้ เพื่อนบ้านสามารถทำงานได้ในสองโหมด - ใช้งานและโต้ตอบ การทำงานในโหมดแอคทีฟ เครื่องจะส่งเวลาไปยังเครื่องใกล้เคียงทั้งหมดที่แสดงอยู่ในส่วนเพียร์ของไฟล์การกำหนดค่า ntp.conf หากไม่ได้ระบุเพื่อนบ้านไว้ในส่วนนี้ จะถือว่าเครื่องทำงานในโหมดพาสซีฟ เพื่อป้องกันไม่ให้ผู้โจมตีโจมตีเครื่องอื่นโดยอ้างว่าเป็นแหล่งที่ใช้งานอยู่ ต้องใช้การรับรองความถูกต้อง

โหมดออกอากาศ

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

โหมดมัลติคาสต์

โหมดนี้มีลักษณะคล้ายกับการออกอากาศหลายประการ ข้อแตกต่างคือที่อยู่แบบหลายผู้รับของเครือข่ายคลาส D ในพื้นที่ที่อยู่ IP ใช้ในการส่งแพ็กเก็ต สำหรับไคลเอนต์และเซิร์ฟเวอร์ จะมีการระบุที่อยู่ของกลุ่มมัลติคาสต์ซึ่งใช้สำหรับการซิงโครไนซ์เวลา ทำให้สามารถซิงโครไนซ์กลุ่มของเครื่องที่อยู่บนเครือข่ายย่อยที่แตกต่างกันได้ โดยที่เราเตอร์ที่เชื่อมต่อเครื่องเหล่านั้นรองรับโปรโตคอล IGMP และได้รับการกำหนดค่าให้ส่งทราฟฟิกแบบหลายผู้รับ

โหมดเมนี่แคสต์

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

ในการส่งตัวอย่างเวลา ไคลเอนต์และเซิร์ฟเวอร์ที่ทำงานในโหมดมัลติคาสต์ใช้ที่อยู่กลุ่มมัลติคาสต์ (เครือข่ายคลาส D) ลูกค้าและเซิร์ฟเวอร์ที่ใช้ที่อยู่เดียวกันจะสร้างการเชื่อมโยงเดียวกัน จำนวนการเชื่อมโยงถูกกำหนดโดยจำนวนที่อยู่แบบหลายผู้รับที่ใช้

เวลาในลินุกซ์

ฉันจะบอกคุณสั้น ๆ ว่าเวลาใดใน Linux และวิธีตั้งค่า ใน Linux เช่นเดียวกับระบบปฏิบัติการอื่น ๆ มี 2 ครั้ง ครั้งแรก - ฮาร์ดแวร์ บางครั้งก็เรียกว่า นาฬิกาเรียลไทม์ย่อ ( อาร์ทีซี) (หรือที่รู้จักในชื่อนาฬิกา BIOS) มักจะเกี่ยวข้องกับคริสตัลควอตซ์ที่สั่นซึ่งมีความแม่นยำเพียงไม่กี่วินาทีต่อวัน ความแม่นยำขึ้นอยู่กับความผันผวนต่างๆ เช่น อุณหภูมิโดยรอบ นาฬิกาเรือนที่สองอยู่ภายใน นาฬิกาโปรแกรม ซึ่งเกิดขึ้นอย่างต่อเนื่องตลอดจนระหว่างการขัดจังหวะการทำงานของระบบ สิ่งเหล่านี้อาจมีการเปลี่ยนแปลงเนื่องจากโหลดของระบบจำนวนมากและเวลาแฝงที่ถูกขัดจังหวะ อย่างไรก็ตาม โดยทั่วไประบบจะอ่านนาฬิกาฮาร์ดแวร์ตอนบูต จากนั้นจึงใช้นาฬิการะบบ

วันที่และเวลาของระบบปฏิบัติการตั้งค่าตอนบูตตามค่า นาฬิกาฮาร์ดแวร์, และ การตั้งค่าโซนเวลา- การตั้งค่าเขตเวลาจะถูกนำมาจากไฟล์ /etc/localtime- ไฟล์นี้คือลิงก์ (แต่มักจะเป็นการคัดลอก) ของไฟล์ใดไฟล์หนึ่งในโครงสร้างไดเร็กทอรี /usr/share/zoneinfo/.

นาฬิกาฮาร์ดแวร์ Linux สามารถเก็บเวลาในรูปแบบได้ เวลาสากลเชิงพิกัด(คล้ายกับ GMT) หรือเวลาอาณาเขตปัจจุบัน คำแนะนำทั่วไปเกี่ยวกับเวลาที่ควรตั้งค่า (?) มีดังต่อไปนี้: หากมีการติดตั้งระบบปฏิบัติการหลายระบบบนคอมพิวเตอร์และหนึ่งในนั้นคือ Windows คุณจะต้องใช้เวลาปัจจุบัน (เนื่องจาก Windows ต้องใช้เวลาจาก BIOS/CMOS และถือเป็นท้องถิ่น) หากใช้เฉพาะอันที่ใช้งานอยู่ ระบบยูนิกซ์ตระกูลขอแนะนำให้จัดเก็บเวลาไว้ใน BIOS ในรูปแบบ UTC

เมื่อระบบปฏิบัติการบู๊ต นาฬิการะบบปฏิบัติการและนาฬิกา BIOS จะเป็นอิสระจากกันโดยสิ้นเชิง เคอร์เนลของระบบซิงโครไนซ์นาฬิการะบบกับนาฬิกาฮาร์ดแวร์ทุกๆ 11 วินาที

หลังจากผ่านไประยะหนึ่ง อาจมีความแตกต่างกันหลายวินาทีระหว่างนาฬิกาของฮาร์ดแวร์และซอฟต์แวร์ นาฬิกาใดบอกเวลาได้ถูกต้อง? ไม่มีอย่างใดอย่างหนึ่งจนกว่าเราจะตั้งค่า การซิงโครไนซ์เวลา

บันทึก:

เคอร์เนล Linux จะจัดเก็บและคำนวณเวลาเป็นจำนวนวินาทีตั้งแต่เที่ยงคืนเสมอ 1 มกราคม 1970 ของปีโดยไม่คำนึงว่านาฬิกาของคุณตั้งเป็นเวลาท้องถิ่นหรือสากล การแปลงเป็นเวลาท้องถิ่นเสร็จสิ้นในระหว่างขั้นตอนการร้องขอ

เนื่องจากจำนวนวินาทีตั้งแต่วันที่ 1 มกราคม 1970 UTC จะถูกจัดเก็บเป็นจำนวนเต็ม 32 บิตที่มีเครื่องหมาย (ซึ่งเป็นจริงบนระบบ Linux/Intel) นาฬิกาของคุณจะหยุดทำงานในช่วงปี 2038 Linux ไม่มีปัญหาปี 2000 แต่มีปัญหาปี 2038 โชคดีที่เมื่อถึงตอนนั้นระบบ Linux ทั้งหมดจะทำงานบนระบบ 64 บิต จำนวนเต็ม 64 บิตจะมีนาฬิกาของเราจนถึงประมาณปี 292271 ล้าน

เซิร์ฟเวอร์ NTP ลินุกซ์

การแนะนำ

มีการใช้งานหลายอย่างสำหรับการซิงโครไนซ์เวลาสำหรับ Linux OS ที่มีชื่อเสียงที่สุดคือ Xntpd (NTP เวอร์ชัน 3), ntpd (NTP เวอร์ชัน 4), Crony และ ClockSpeed ในตัวอย่างของเรา เราจะใช้เซิร์ฟเวอร์ ntpd

ntpd daemon เป็นทั้งเซิร์ฟเวอร์เวลาและไคลเอนต์ ขึ้นอยู่กับการตั้งค่าของไฟล์คอนฟิกูเรชัน /etc/ntpd.conf (บางครั้ง /etc/ntp.conf) daemon สามารถ “รับ” เวลาจากเซิร์ฟเวอร์ระยะไกลและ “กระจาย” เวลาให้กับเจ้าบ้านอื่น

ทั่วไป วงจรซิงโครไนซ์เวลาบนเครือข่ายท้องถิ่นมีดังนี้: คุณต้องมีเซิร์ฟเวอร์ 1 หรือ 2 เครื่องที่สามารถเข้าถึงเครือข่ายทั่วโลกซึ่งจะได้รับเวลาจากอินเทอร์เน็ต คอมพิวเตอร์ทุกเครื่องในเครือข่ายท้องถิ่นจะซิงโครไนซ์กับเซิร์ฟเวอร์ที่ระบุซึ่งรับเวลาจากอินเทอร์เน็ต

กำลังติดตั้ง ntpd

จริงๆ แล้ว, การติดตั้งภูตเดือดลงไปติดตั้งแพ็คเกจต่อไปนี้: เอ็นทีพี(แพ็คเกจรวมถึง daemon เองด้วย) ntpdate(ยูทิลิตี้สำหรับการซิงโครไนซ์เวลาด้วยตนเองล้าสมัย) ntp-doc(เอกสารประกอบแพ็คเกจ) ในบางรุ่นคุณจะต้องติดตั้งแบบเดียวกัน ntp-utils(ยูทิลิตี้การวินิจฉัย) โดยบางรายการจะรวมอยู่ในแพ็คเกจ ntp ฉันอธิบายวิธีการติดตั้งโปรแกรมบน Linux มา หลังจากติดตั้งแพ็คเกจ ในการกระจายส่วนใหญ่ daemon จะได้รับการกำหนดค่าเป็นไคลเอนต์ ntp แล้ว (ตัวอย่างเช่น นี่เป็นกรณีใน Debian) ดังนั้น ไฟล์คอนฟิกูเรชันหลักจึงถูกสร้างขึ้นโดยอัตโนมัติ: /etc/ntp.conf และ /var/lib/ntp/ntp.drift และ daemon จะถูกเปิดใช้งานโดยอัตโนมัติ

ก่อนที่จะตั้งค่าเดมอนให้ซิงโครไนซ์กับโลกภายนอก ฉันขอแนะนำให้ตั้งค่าวันที่ของระบบปัจจุบันเป็นค่าที่ใกล้เคียงกับเรียลไทม์มากที่สุด การตั้งวันที่ใน Linuxผลิตโดยคำสั่ง: วันที่ MMDDhhmmCCYY.ss,โดยที่ MM - เดือน, DD - วันของเดือน, hh - ชั่วโมง, mm - นาที, CCYY - ตัวเลข 4 หลักของปี, ss - วินาที ขณะเดียวกันก็มีคุณค่า CCYY.ssไม่จำเป็นต้องระบุ

อย่างที่คุณเห็นคำสั่งที่ระบุจะตั้งค่าวันที่และเวลาปัจจุบันเป็นวันที่ 27 ธันวาคม 2553 เวลา 20:06:30 น. คำสั่งวันที่โดยไม่มีพารามิเตอร์ แสดงเวลาระบบปัจจุบัน คำสั่งนี้มีพารามิเตอร์มากมาย ซึ่งสามารถพบได้ใน man date

นอกจากนี้ยังจำเป็นต้องกำหนดค่านาฬิกาฮาร์ดแวร์และโซนเวลาให้ถูกต้องด้วย ตามที่กล่าวไว้ข้างต้น เขตเวลาได้รับการกำหนดค่าโดยการคัดลอกไฟล์โซนที่ต้องการจากไดเร็กทอรี /usr/share/zoneinfo/เพื่อยื่น /etc/localtime:

เซิร์ฟเวอร์ Ntp:~# cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

ฮาร์ดแวร์ ฉันตั้งนาฬิกาเป็น UTC:

# cat /etc/sysconfig/นาฬิกา | grep UTC # UTC=true บ่งชี้ว่านาฬิกาถูกตั้งค่าเป็น UTC; UTC=เซิร์ฟเวอร์ ntp2 ที่แท้จริง:~# cat /etc/default/rcS | grep UTC UTC=ใช่

ตัวอย่างแรกแสดงให้เห็น ไฟล์การกำหนดค่าซึ่งกำหนดการใช้ UTC สำหรับ RH ส่วนที่สองสำหรับการแจกแจง Deb

นอกจากการตั้งค่าให้ใช้เวลา UTC แล้ว คุณต้องระบุด้วย เวลาฮาร์ดแวร์- (ในกรณีส่วนใหญ่ สิ่งนี้ไม่จำเป็น เนื่องจากเวลาของระบบที่ระบุจะถูกซิงโครไนซ์กับฮาร์ดแวร์โดยเคอร์เนลอย่างหลีกเลี่ยงไม่ได้) แต่ถ้าคุณมีใจที่จะทำมัน... คำสั่ง hwclockอ่านและตั้งค่านาฬิกาฮาร์ดแวร์ตามพารามิเตอร์ที่ส่งผ่านไป ตัวเลือกที่ใช้ได้มีอธิบายไว้ในหน้าคู่มือของคำสั่ง นี่คือตัวอย่างบางส่วนของการใช้ hwclock:

Ntp-server# hwclock # อ่านเวลาจากนาฬิกาฮาร์ดแวร์ ntp-server# hwclock --systohc --utc # ตั้งเวลานาฬิกาของฮาร์ดแวร์เป็น # UTC ตามเวลาของระบบ ntp-server# hwclock --systohc # ตั้งเวลานาฬิกาของฮาร์ดแวร์ # เป็นภายในเครื่อง เวลาตามเวลาของระบบ ntp-server# hwclock --set --date "22 Mar 2002 13:17" # ตั้งเวลานาฬิกาฮาร์ดแวร์ # เป็นสตริงที่ระบุ

อีกทางเลือกหนึ่งในการเปลี่ยนเวลาในนาฬิกาฮาร์ดแวร์คือการเข้าถึง BIOS เมื่อระบบบู๊ต เนื่องจากเวลาของระบบปฏิบัติการไม่ขึ้นอยู่กับนาฬิกาของฮาร์ดแวร์ การเปลี่ยนแปลงใดๆ ใน BIOS จะถูกนำมาพิจารณาในครั้งถัดไปที่คุณบูต

เมื่อเตรียมและติดตั้งทุกอย่างเรียบร้อยแล้ว เรามาต่อกันที่ ที่สถานที่ก่อสร้าง.

การจัดการ ntpd daemon

ควบคุม ntpd เดมอนไม่ต่างจากการควบคุมปีศาจตัวอื่น เริ่มหรือรีสตาร์ทบริการ ntpd:

#/etc/init.d/ntp เริ่มต้น #/etc/init.d/ntp รีสตาร์ท

หยุด:

#/etc/init.d/ntp หยุด

#/bin/kill `cat /var/run/ntpd.pid`

daemon มีพารามิเตอร์การเรียกทำงานดังต่อไปนี้:

P - ไฟล์ PID
-g - อนุญาตให้เปลี่ยนเป็นการกระโดดครั้งใหญ่
-c - ไฟล์ปรับแต่ง
-q - บังคับการซิงโครไนซ์ด้วยตนเอง

การตั้งค่าเซิร์ฟเวอร์ ntpd

ก่อนอื่น ฉันแนะนำให้คุณเปลี่ยนพารามิเตอร์การเรียกใช้ daemon ในไฟล์คอนฟิกูเรชันต่อไปนี้:

เซิร์ฟเวอร์ Ntp:~# cat /etc/default/ntp NTPD_OPTS="-g"

# cat /etc/sysconfig/ntpd # พารามิเตอร์สำหรับ NTP daemon # ดู ntpd(8) สำหรับรายละเอียดเพิ่มเติม .... # ระบุพารามิเตอร์เพิ่มเติมสำหรับ ntpd NTPD_ARGS="-g"

พารามิเตอร์นี้จะช่วยให้คุณสามารถซิงโครไนซ์นาฬิกาได้แม้ว่าจะมีเวลาต่างกันมากก็ตาม

อย่างที่ฉันบอกไปแล้วว่าข้อมูลการกำหนดค่า ntpd เดมอนอยู่ในไฟล์ /etc/ntp.confไวยากรณ์ของไฟล์เป็นมาตรฐาน เช่นเดียวกับในการกำหนดค่าอื่นๆ: บรรทัดว่างและบรรทัดที่ขึ้นต้นด้วยอักขระ "#" จะถูกละเว้น นี่เป็นตัวอย่างง่ายๆ:

เซิร์ฟเวอร์ Ntp:~# cat /etc/ntp.conf เซิร์ฟเวอร์ ntplocal.example.com ต้องการเซิร์ฟเวอร์ timeserver.example.org เซิร์ฟเวอร์ ntp2a.example.net driftfile /var/db/ntp.drift

พารามิเตอร์ เซิร์ฟเวอร์ระบุเซิร์ฟเวอร์ที่จะใช้สำหรับการซิงโครไนซ์ หนึ่งตัวในแต่ละบรรทัด หากระบุเซิร์ฟเวอร์ด้วยอาร์กิวเมนต์ ชอบมากกว่า, ยังไง ntplocal.example.comจากนั้นเซิร์ฟเวอร์นี้จะได้รับสิทธิพิเศษมากกว่าเซิร์ฟเวอร์อื่นๆ การตอบสนองจากเซิร์ฟเวอร์ที่ต้องการจะถูกยกเลิก หากมีความแตกต่างอย่างมากจากการตอบสนองของเซิร์ฟเวอร์อื่น มิฉะนั้น จะถูกนำมาใช้โดยไม่คำนึงถึงการตอบสนองอื่นๆ การโต้แย้ง ชอบมากกว่าโดยทั่วไปใช้สำหรับเซิร์ฟเวอร์ NTP ที่ทราบกันว่ามีความแม่นยำมาก เช่น เซิร์ฟเวอร์ที่ใช้อุปกรณ์เวลาที่มีความแม่นยำโดยเฉพาะ

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

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

จำกัดค่าเริ่มต้นละเว้น

ถ้าคุณต้องการ อนุญาตซิงค์นาฬิกาของคุณกับเซิร์ฟเวอร์ของคุณเท่านั้น เครื่องบนเครือข่ายของคุณ, แต่ ห้ามพวกเขา กำหนดค่าเซิร์ฟเวอร์หรือเป็นผู้เข้าร่วมที่เท่าเทียมกันในการซิงโครไนซ์เวลา จากนั้นแทนที่จะเพิ่มบรรทัดข้างต้น:

จำกัด 192.168.1.0 มาสก์ 255.255.255.0 nomodify nottrap

โดยที่ 192.168.1.0 คือที่อยู่ IP ของเครือข่ายของคุณ และ 255.255.255.0 คือเน็ตมาสก์ /etc/ntp.confอาจมีคำสั่งจำกัดหลายประการ

เพื่อการทำงานของ daemon ที่ถูกต้องและแม่นยำยิ่งขึ้นขอแนะนำให้เลือกเซิร์ฟเวอร์ระดับ - จาก stratum 2 (แน่นอนว่าคุณสามารถใช้ stratum1 ได้ แต่คุณจะต้องเสียเวลาค้นหาเซิร์ฟเวอร์ดังกล่าว) และจาก stratum ที่เลือก 2 อันที่มี "ระยะทาง" ขั้นต่ำ โดยทั่วไปแล้ว เซิร์ฟเวอร์ดังกล่าวอาจให้บริการโดย ISP ของคุณ จำนวนเซิร์ฟเวอร์ที่เลือกเป็นที่ต้องการ - มากกว่า 2 ถึง 3 ยิ่งมากยิ่งดี แต่อยู่ในขอบเขตที่สมเหตุสมผล หากคุณขี้เกียจเกินไปที่จะเลือกเซิร์ฟเวอร์ที่ดีที่สุด คุณสามารถดูรายชื่อเซิร์ฟเวอร์ระดับที่สองที่เปิดอยู่ได้จากที่นี่: http://support.ntp.org/bin/view/Servers/StratumTwoTimeServers

การเลือกรายการเซิร์ฟเวอร์อ้างอิง NTP

เราไปที่ที่อยู่ที่ระบุ (http://support.ntp.org/bin/view/Servers/StratumTwoTimeServers) และเลือกรายการเซิร์ฟเวอร์เริ่มต้น จากรายการนี้ เราเลือกเซิร์ฟเวอร์ที่ตรงกับความต้องการของเราโดยการวิเคราะห์เอาต์พุตคำสั่ง ntpdate- เมื่อดำเนินการคำสั่ง จะใช้ไวยากรณ์ต่อไปนี้:

พารามิเตอร์ ntpdate เซิร์ฟเวอร์_คั่นด้วย_space

เพื่อให้แน่ใจว่าการสืบค้นของเราจะไม่เปลี่ยนแปลงระบบ เราต้องใช้พารามิเตอร์ -q ซึ่งระบุการใช้การสืบค้นโดยไม่ทำการเปลี่ยนแปลง นอกจากนี้ยังเป็นไปได้ที่จะใช้สวิตช์ -d ซึ่งระบุว่าคำสั่งจะถูกดำเนินการในโหมดแก้ไขข้อบกพร่องพร้อมเอาต์พุตของข้อมูลเพิ่มเติมโดยไม่ต้องทำการเปลี่ยนแปลงจริง (ด้วยสวิตช์นี้ขยะอื่น ๆ จำนวนมากจะปรากฏขึ้น :) ซึ่งเรา ไม่จำเป็นในขณะนี้) พารามิเตอร์อื่นๆ สามารถพบได้ใน man 8 ntpdate จากลิงก์ที่ระบุ ฉันเลือกเซิร์ฟเวอร์ Open Access ทั้งหมดในรัสเซีย (RU) + เซิร์ฟเวอร์ที่ผู้ให้บริการให้มาและรันคำสั่ง มันกลายเป็นดังนี้:

เซิร์ฟเวอร์ Ntp:~# ntpdate -q ntp2.ntp-servers.net ntp1.vniiftri.ru ntp2.vniiftri.ru ntp4.vniiftri.ru ntp0.ntp-servers.net ntp1.ntp-servers.net ntp3.vniiftri.ru เซิร์ฟเวอร์ ntp.corbina.net 88.147.255.85, ชั้น 1, ชดเชย 0.006494, ล่าช้า 0.09918 เซิร์ฟเวอร์ 62.117.76.142, ชั้น 1, ชดเชย 0.002552, ล่าช้า 0.06920 เซิร์ฟเวอร์ 62.117.76.141, ชั้น 1, ชดเชย 0.0 031 47, ล่าช้า 0.06918 เซิร์ฟเวอร์ 62.117.76.140, stratum 1, ออฟเซ็ต 0.004823, ดีเลย์ 0.07350 เซิร์ฟเวอร์ 88.147.254.228, stratum 1, ออฟเซ็ต -0.002355, ดีเลย์ 0.12030 เซิร์ฟเวอร์ 88.147.254.229, stratum 1, ออฟเซ็ต -0.000922, ดีเลย์ 0.10577 เซิร์ฟเวอร์ 62.117 .76.13 8, ชั้น 1, ออฟเซ็ต 0.005331, ดีเลย์ 0.07401 เซิร์ฟเวอร์ 195.14 .40.141, ชั้น 2, ชดเชย 0.002846, ล่าช้า 0.07188 13 มกราคม 19:14:09 ntpdate: ปรับเวลาเซิร์ฟเวอร์ 62.117.76.141 ชดเชย 0.003147 วินาที

ในตัวอย่าง เซิร์ฟเวอร์ของเราออกระดับ stratum1 ได้สำเร็จ ซึ่งเป็นข่าวดี (ยกเว้นเซิร์ฟเวอร์ของผู้ให้บริการ) อ็อฟเซ็ตคือความแตกต่างของเวลากับเซิร์ฟเวอร์นี้เป็นวินาที ดีเลย์คือดีเลย์การซิงโครไนซ์เป็นวินาที โดยปกติข เกี่ยวกับได้รับความแม่นยำมากขึ้นเมื่อใช้เซิร์ฟเวอร์ที่มีค่าหน่วงเวลาต่ำในการส่งแพ็กเก็ตผ่านเครือข่าย เพื่อระบุสิ่งนี้ คุณสามารถใช้ . ดังนั้น ให้เลือกอันที่มีเวลาตอบสนองสั้นกว่า และจากนั้นเลือกอันที่มีฮ็อปน้อยกว่า เพื่อไม่ให้เป็นการเสียเวลา ฉันจะใช้เซิร์ฟเวอร์ที่ระบุทั้งหมดและป้อนลงในไฟล์กำหนดค่า โดยรวมแล้ว เมื่อทราบทั้งหมดข้างต้นแล้ว ฉันจะอธิบายไฟล์ผลลัพธ์ของฉัน /etc/ntp.conf:

Ntp-server:~# cat /etc/ntp.conf # เซิร์ฟเวอร์เครือข่ายท้องถิ่น (ใส่เครื่องหมายความคิดเห็น, ไม่ได้ใช้ - มีเซิร์ฟเวอร์เดียวบนเครือข่าย) #server 192.168.0.2 #server 192.168.0.5 # เซิร์ฟเวอร์อินเทอร์เน็ต เซิร์ฟเวอร์ ntp2.ntp- เซิร์ฟเวอร์.net เซิร์ฟเวอร์ntp1.vniiftri.ru เซิร์ฟเวอร์ntp2.vniiftri.ru เซิร์ฟเวอร์ntp4.vniiftri.ru เซิร์ฟเวอร์ntp0.ntp-servers.net เซิร์ฟเวอร์ntp1.ntp-servers.net เซิร์ฟเวอร์ntp3.vniiftri.ru เซิร์ฟเวอร์ntp.corbina.net # ไฟล์เซิร์ฟเวอร์ driftfile /var/lib/ntp/ntp.drift logfile /var/log/ntpstats # การจำกัดการเข้าถึงเซิร์ฟเวอร์: # โดยค่าเริ่มต้น เราจะเพิกเฉยต่อทุกอย่าง การจำกัดค่าเริ่มต้นจะละเว้น # localhost โดยไม่มีพารามิเตอร์ - นั่นหมายความว่าทุกอย่างจะได้รับอนุญาต พารามิเตอร์ใช้กับข้อห้ามเท่านั้น จำกัด 127.0.0.1 # ข้อมูลต่อไปนี้จะอธิบายเซิร์ฟเวอร์ที่เราซิงโครไนซ์บนเครือข่ายท้องถิ่น # เราอนุญาตพวกเขาทุกอย่าง ยกเว้นกับดักและคำขอถึงเรา จำกัด 192.168.0.2 noquery notrap จำกัด 192.168.0.5 noquery notrap # สำหรับท้องถิ่น เรายังอนุญาตทุกอย่างยกเว้นกับดักและการแก้ไข จำกัด 192.168.0.1 mask 255.255.255.0 nomodify nottrap nopeer # อนุญาตแหล่งเวลาภายนอก การเข้าถึง: จำกัด ntp2.ntp-servers.net จำกัด ntp1.vniiftri.ru จำกัด ntp2.vniiftri.ru จำกัด ntp4.vniiftri.ru จำกัด ntp0.ntp-servers.net จำกัด ntp1.ntp-servers.net จำกัด ntp3.vniiftri.ru จำกัด ntp.corbina.net # และนี่คือแฮ็กที่ตั้งค่าระดับความน่าเชื่อถือของเซิร์ฟเวอร์ (strata) ให้กับตัวเองเท่ากับ 3 # โดยสรุปยิ่งระดับยิ่งสูงก็ยิ่งมีจำนวนน้อยลงเท่านั้น 0 คือนาฬิกาอะตอม, #1 ซิงโครไนซ์กับนาฬิกาอะตอม, 2 อยู่กับนาฬิกาเรือนแรก และอื่นๆ เซิร์ฟเวอร์ 127.127.1.1 เหลวไหล 127.127.1.1 ชั้น 3

เพื่อความเข้าใจเชิงลึกและการกำหนดค่าของเซิร์ฟเวอร์ ฉันจะอธิบายพารามิเตอร์การกำหนดค่า ntpd บางตัวที่ฉันไม่ได้กล่าวถึง::

  • เปิดปิด รับรองความถูกต้อง/ตรวจสอบ/pll/pps/stats - เปิดปิด โหมดการทำงาน:
    • รับรองความถูกต้อง- สื่อสารกับเพื่อนบ้านที่ไม่ได้กล่าวถึงในโหมดการรับรองความถูกต้องเท่านั้น
    • เฝ้าสังเกต- อนุญาตให้มีการตรวจสอบคำขอ
    • กรุณา- อนุญาตให้ตั้งค่าความถี่สัญญาณนาฬิกาท้องถิ่นผ่าน NTP
    • สถิติ- อนุญาตให้รวบรวมสถิติ
  • สถิติลูปสถิติ- เมื่อมีการแก้ไขนาฬิกาท้องถิ่นแต่ละครั้ง ให้เขียนบรรทัดลงในไฟล์ ลูปสถิติ;
  • สถิติเพียร์สถิติ- ทุกการสื่อสารกับเพื่อนบ้านจะถูกบันทึกไว้ในบันทึกที่จัดเก็บไว้ในไฟล์ เพียร์สถิติ;
  • สถิติสถิตินาฬิกา- ทุกข้อความจากไดรเวอร์นาฬิกาในเครื่องจะถูกเขียนลงในบันทึกที่จัดเก็บไว้ในไฟล์ สถิตินาฬิกา;
  • statsdir(catalog_name_with_statistics)- ระบุชื่อของไดเร็กทอรีที่จะเก็บไฟล์ที่มีสถิติเซิร์ฟเวอร์
  • ไฟล์เกน - กำหนดอัลกอริทึมสำหรับสร้างชื่อไฟล์ซึ่งประกอบด้วย:
    • คำนำหน้า- ส่วนคงที่ของชื่อไฟล์ ตั้งค่าระหว่างการคอมไพล์หรือโดยคำสั่งการกำหนดค่าพิเศษ
    • ชื่อไฟล์- เพิ่มลงในคำนำหน้าโดยไม่มีเครื่องหมายทับ ห้ามมีจุดสองจุด สามารถเปลี่ยนได้ด้วยคีย์ไฟล์
    • คำต่อท้าย- สร้างขึ้นขึ้นอยู่กับชื่อประเภท;
  • จำกัดที่อยู่ตัวเลข- กำหนดข้อจำกัดการเข้าถึง: แพ็กเก็ตจะถูกจัดเรียงและปิดบัง ที่อยู่ต้นทางจะถูกนำไปใช้และเปรียบเทียบตามลำดับ ธงจะถูกนำมาจากการเปรียบเทียบที่สำเร็จครั้งล่าสุด เข้าถึง:
    • ไม่มีธง- ให้สิทธิ์เข้าถึง;
    • ไม่สนใจ- ละเว้นแพ็กเก็ตทั้งหมด
    • ไม่มีการสืบค้น- ละเว้นแพ็กเก็ต NTP 6 และ 7 (คำขอและการแก้ไขสถานะ)
    • เสนอชื่อ- ละเว้นแพ็กเก็ต NTP 6 และ 7 (การแก้ไขสถานะ)
    • ถูก จำกัด- ให้บริการลูกค้าเพียงจำนวนจำกัดจากเครือข่ายที่กำหนด
    • ไม่- ให้บริการโฮสต์ แต่ไม่ซิงโครไนซ์กับมัน
  • ขีดจำกัดของลูกค้าขีด จำกัด- สำหรับธง ถูก จำกัดกำหนดจำนวนลูกค้าสูงสุดที่ให้บริการ (โดยค่าเริ่มต้น 3)

ดังนั้นเราจึงได้ ntpd-serverซึ่งซิงโครไนซ์กับโลกภายนอกช่วยให้คุณรับเวลาสำหรับไคลเอนต์จากเครือข่ายท้องถิ่น 192.168.0.1 ด้วยมาสก์ 255.255.255.0 และยังสามารถซิงโครไนซ์กับเซิร์ฟเวอร์ท้องถิ่นได้ (หากคุณไม่ใส่เครื่องหมายข้อคิดเห็นหลายบรรทัด) สิ่งที่เราต้องทำคือตั้งค่าไคลเอนต์และเรียนรู้วิธีตรวจสอบเซิร์ฟเวอร์ของเรา

การตรวจสอบเซิร์ฟเวอร์ ntpd และการซิงโครไนซ์

เมื่อคุณตั้งค่าทุกอย่างเรียบร้อยแล้ว NTP จะรักษาเวลาให้ตรงกัน กระบวนการนี้สามารถสังเกตได้โดยใช้คำสั่ง NTP Query (ntpq):

เซิร์ฟเวอร์ Ntp:~# ntpq -p รีโมต refid st t เมื่อการสำรวจความคิดเห็นถึงความล่าช้าชดเชยความกระวนกระวายใจ ============================== ================================================== =========== -n3.time1.d6.hsd.PPS 1 คุณ 34 64 177 70.162 2.375 8.618 +ntp1.vniiftri.r .PPS 1 คุณ 33 64 177 43.479 -0.020 10.198 *ntp2.vniiftri.r .PPS. 1 คุณ 6 64 177 43.616 -0.192 0.688 +ntp4.vniiftri.r .PPS 1 คุณ 4 64 177 43.623 0.440 0.546 -n1.time1.d6.hsd .PPS 1 คุณ 53 64 77 92.865 -11.358 38.346 -ns1.hsdn.org .GPS. 1 คุณ 40 64 177 78.057 -3.292 35.083 -ntp3.vniiftri.r .PPS. 1 คุณ 44 64 77 47.667 2.292 2.611 -scylla-l0.msk.c 192.43.244.18 2 คุณ 62 64 77 41.565 -1.564 28.914

คำสั่งนี้พร้อมสวิตช์ -p จะพิมพ์รายการแหล่งเวลาพร้อมคุณลักษณะไปยังเอาต์พุตมาตรฐาน (พารามิเตอร์คำสั่งที่เหลืออยู่ในรูปแบบ man ntpq) ความหมายของแต่ละคอลัมน์มีดังนี้:

ชื่อของเซิร์ฟเวอร์ NTP ระยะไกล หากคุณระบุสวิตช์ -n คุณจะได้รับที่อยู่ IP ของเซิร์ฟเวอร์แทนชื่อ

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

Stratum (ระดับ) คือตัวเลขตั้งแต่ 1 ถึง 16 ที่ระบุถึงความถูกต้องของเซิร์ฟเวอร์ หนึ่งหมายถึงความแม่นยำสูงสุด 16 หมายถึงเซิร์ฟเวอร์ไม่พร้อมใช้งาน ระดับของคุณจะเท่ากับระดับของเซิร์ฟเวอร์ระยะไกลที่แม่นยำน้อยที่สุดบวก 1

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

การแสดงเลขฐานแปดของอาร์เรย์ 8 บิตซึ่งสะท้อนผลลัพธ์ของความพยายามแปดครั้งล่าสุดในการเชื่อมต่อกับเซิร์ฟเวอร์ บิตจะถูกตั้งค่าหากเซิร์ฟเวอร์ระยะไกลตอบสนอง

ระยะเวลา (เป็นวินาที) ที่ต้องใช้ในการรับคำตอบของคำถาม “กี่โมงแล้ว”

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

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

ความหมายของอักขระก่อนชื่อเซิร์ฟเวอร์

x - แหล่งที่มาปลอมตามอัลกอริธึมทางแยก
- - ถูกตัดออกจากรายชื่อผู้สมัครเนื่องจากอยู่ไกล
- - ลบออกจากรายชื่อผู้สมัครโดยอัลกอริธึมการจัดกลุ่ม
+ - รวมอยู่ในรายชื่อผู้สมัครรอบสุดท้าย
# - เลือกสำหรับการซิงโครไนซ์ แต่มีผู้สมัครที่ดีที่สุด 6 คน
* - เลือกสำหรับการซิงโครไนซ์;
o - เลือกสำหรับการซิงโครไนซ์ แต่ใช้ PPS
พื้นที่ - ระดับใหญ่เกินไป, วนซ้ำหรือข้อผิดพลาดที่ชัดเจน;

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

คุณสามารถตรวจสอบความเป็นไปได้ของการซิงโครไนซ์ภายในเครื่องบนเซิร์ฟเวอร์ด้วยคำสั่ง:

เซิร์ฟเวอร์ Ntp:~# ntpdate -q localhost server 127.0.0.1, stratum 2, offset -0.000053, ดีเลย์ 0.02573 server::1, stratum 2, offset -0.000048, ดีเลย์ 0.02571 14 ม.ค. 14:49:57 ntpdate: ปรับเซิร์ฟเวอร์เวลา ::1 ออฟเซ็ต -0.000048 วินาที

จากเอาต์พุตคำสั่ง เห็นได้ชัดว่าเซิร์ฟเวอร์ของเราถึงระดับชั้น 2 แล้ว จะใช้เวลาสักระยะหนึ่งจึงจะถึงระดับนี้ บางทีในช่วง 10-15 นาทีแรก ระดับเซิร์ฟเวอร์จะสูงขึ้น

การดำเนินการที่ถูกต้องของเซิร์ฟเวอร์ ntp ยังสามารถตัดสินได้จากบันทึกของ ntpd daemon:

Ntp-server:~# cat /var/log/ntpstats/ntp 13 ม.ค. 20:13:16 ntpd: การฟังบนอินเทอร์เฟซ #5 eth0, fe80::a00:27ff:fec1:8059#123 เปิดใช้งานแล้ว 13 ม.ค. 20:13: 16 ntpd: การฟังบนอินเทอร์เฟซ #6 eth0, 192.168.0.8#123 เปิดใช้งาน 14 มกราคม 14:31:00 ntpd: ซิงโครไนซ์กับ 62.117.76.142, stratum 1 14 มกราคม 14:31:10 ntpd: รีเซ็ตเวลา +10.291312 วินาที 14 มกราคม 14 :31:10 ntpd: สถานะการซิงค์เวลาเคอร์เนลเปลี่ยน 0001 14 ม.ค. 14:34:31 ntpd: ซิงโครไนซ์กับ 88.147.255.85, stratum 1 14 ม.ค. 14:36:04 ntpd: ซิงโครไนซ์กับ 62.117.76.141, stratum 1 14 ม.ค. 58: 04:36 ntpd: ซิงโครไนซ์กับ 62.117.76.142, stratum 1 14 ม.ค. 15:10:58 ntpd: ซิงโครไนซ์กับ 62.117.76.140, stratum 1 14 ม.ค. 15:17:54 ntpd: ไม่มีเซิร์ฟเวอร์ใด ๆ ที่สามารถเข้าถึงได้ 14 ม.ค. 15:31:49 ntpd : ซิงโครไนซ์กับ 62.117.76.140, ชั้น 1 14 มกราคม 15:32:14 ntpd: รีเซ็ตเวลา +13.139105 วินาที

การตั้งค่า netfilter (iptables) สำหรับเซิร์ฟเวอร์ NTP

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

Ntp ~ # iptables-save # กฎ iptables ทั่วไปสำหรับ DNS *ตัวกรอง: INPUT DROP : FORWARD DROP : OUTPUT DROP -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate ที่เกี่ยวข้อง, ESTABLISHED -j ACCEPT -A INPUT -m conntrack --ctstate ไม่ถูกต้อง -j DROP # อนุญาตให้เครือข่ายท้องถิ่นเข้าถึงเซิร์ฟเวอร์ NTP: -A INPUT -s 192.168.1.1/24 -d 192.168.1.1/32 -p udp -m udp --dport 123 -m conntrack - -ctstate ใหม่ -j ยอมรับ -A เอาต์พุต -o lo -j ยอมรับ -A เอาต์พุต -p icmp -j ยอมรับ -A เอาต์พุต -p udp -m udp --sport 32768:61000 -j ยอมรับ -A เอาต์พุต -p tcp - m tcp --sport 32768:61000 -j ACCEPT -A OUTPUT -m conntrack --ctstate ที่เกี่ยวข้อง, สร้างขึ้น -j ACCEPT # อนุญาตให้เข้าถึงเซิร์ฟเวอร์ NTP เพื่อส่งคำขอขาออก -A OUTPUT -p udp -m udp --sport 123 -- dport 123 -m conntrack --ctstate ใหม่ -j ยอมรับการกระทำ

นี่เป็นตัวอย่างทั่วไป! หากต้องการตั้งค่ากฎ iptables ให้เหมาะกับงานและการกำหนดค่าเครือข่ายของคุณ คุณต้องเข้าใจวิธีการทำงานของ netfilter ใน Linux โดยการอ่านบทความข้างต้น

การตั้งค่าเครื่องไคลเอนต์

เพื่อซิงโครไนซ์เวลาบนเครื่อง UNIXเครือข่ายท้องถิ่น ขอแนะนำให้ใช้ยูทิลิตี้ ntpdate โดยรันหลายครั้งต่อวัน เช่น ทุกชั่วโมง เมื่อต้องการทำเช่นนี้ คุณต้องเพิ่มบรรทัดต่อไปนี้:

0 * * * * /usr/sbin/ntpdate -s

สวิตช์ -s กำหนดทิศทางเอาต์พุตของคำสั่ง หากเครื่องไคลเอ็นต์มี RAM เพิ่มขึ้นสองสามเมกะไบต์ คุณสามารถเรียกใช้ ntpd daemon ได้เหมือนกับบนเซิร์ฟเวอร์ที่มีการกำหนดค่าต่อไปนี้:

เซิร์ฟเวอร์ จำกัดค่าเริ่มต้น ละเว้นการจำกัด noquery nottrap จำกัด 127.0.0.1 nomodify notrap

ฉันคิดว่าทุกอย่างชัดเจนในการกำหนดค่านี้: แหล่งเวลา (เซิร์ฟเวอร์) เป็นเซิร์ฟเวอร์ ntpd ในเครื่อง ปฏิเสธการเข้าถึงของทุกคน อนุญาตเฉพาะเซิร์ฟเวอร์ ntpd ในเครื่องเท่านั้น

นอกจากนี้บนไคลเอนต์จำเป็นต้องระบุรูปแบบที่จะจัดเก็บเวลาอย่างถูกต้องและเลือกเขตเวลาที่ถูกต้อง

เพื่อกำหนดค่าไคลเอนต์ Windows NTPคุณต้องรันคำสั่งต่อไปนี้ในคอนโซล:

C:\>เวลาสุทธิ /setsntp: คำสั่งเสร็จสมบูรณ์เรียบร้อยแล้ว C:\>net stop w32time บริการ Windows Time กำลังหยุดทำงาน หยุดบริการ Windows Time เรียบร้อยแล้ว C:\>net start w32time บริการ Windows Time กำลังเริ่มทำงาน บริการ Windows Time เริ่มต้นได้สำเร็จ C:\>เวลาสุทธิ /querysntp ค่า SNTP ปัจจุบันคือ: คำสั่งเสร็จสมบูรณ์เรียบร้อยแล้ว

บทสรุป

แค่นั้นแหละ! ปริมาณของบทความกลายเป็นเรื่องใหญ่โตมาก... ฉันไม่ได้คาดหวังด้วยซ้ำ ผมขอสรุปข้างต้น ในบทความนี้ ฉันหวังว่าจะชัดเจนสำหรับเราว่าเซิร์ฟเวอร์ NTP คืออะไรและทำงานอย่างไร เรียนรู้วิธีการกำหนดค่าเซิร์ฟเวอร์และไคลเอนต์บน UNIX และ เครื่องวินโดว์- โครงสร้างการซิงโครไนซ์เวลาในเครือข่ายท้องถิ่นมีดังนี้: มีเซิร์ฟเวอร์เวลา 1,2 หรือมากกว่าในเครือข่ายท้องถิ่น โดยจะซิงโครไนซ์เวลากับแหล่งภายนอกในเครือข่ายทั่วโลก การตั้งค่าเซิร์ฟเวอร์และไคลเอนต์จะขึ้นอยู่กับไฟล์ /etc/ntp.conf (ไฟล์การกำหนดค่าหลักของ ntpd daemon), /etc/localtime (ไฟล์โซนเวลาปัจจุบัน) เช่นเดียวกับ /etc/sysconfig/ntp (สำหรับ RH ) และ /etc/default /ntp (สำหรับ Deb) - ไฟล์พารามิเตอร์การเรียกใช้ daemon สำหรับเซิร์ฟเวอร์ ntp ภายใน ไฟล์การกำหนดค่าจะระบุเซิร์ฟเวอร์ภายนอกสำหรับการรับเวลา และอนุญาตให้เข้าถึงเซิร์ฟเวอร์เหล่านี้โดยใช้พารามิเตอร์จำกัด เช่นเดียวกับคอมพิวเตอร์เครือข่ายท้องถิ่น สำหรับไคลเอ็นต์ แหล่งเวลาจะถูกระบุ - เซิร์ฟเวอร์ท้องถิ่นบนเครือข่ายท้องถิ่น และยังห้ามไม่ให้ทุกคนเข้าถึงได้ ยกเว้นแหล่งเวลาในเครือข่ายท้องถิ่น ทั้งหมด. ขอขอบคุณทุกท่านที่ให้ความสนใจ! ฉันยินดีที่จะแสดงความคิดเห็น!

  • (บทความที่เก็บถาวร) อธิบายวิธีเชื่อมต่อ GPS กับเซิร์ฟเวอร์เพื่อจัดระเบียบเซิร์ฟเวอร์เวลาที่แน่นอนระดับ Stratum1 ของคุณเอง
  • อธิบายวิธีกำหนดค่าการอนุญาตบนเซิร์ฟเวอร์ ntp

มีบริการมากมายในระบบปฏิบัติการที่การทำงานปกติขึ้นอยู่กับความแม่นยำของนาฬิการะบบ หากเซิร์ฟเวอร์ไม่ได้ตั้งค่าเป็นเวลาที่ถูกต้อง อาจทำให้เกิดปัญหาต่างๆ ได้

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

หากเซิร์ฟเวอร์ไม่ได้ตั้งค่าเป็นเวลาที่แน่นอน จะเกิดปัญหากับงาน Cron ซึ่งไม่ชัดเจนว่างานเหล่านั้นจะทำงานเมื่อใด การวิเคราะห์บันทึกเหตุการณ์ของระบบเพื่อวินิจฉัยสาเหตุของความล้มเหลวและการทำงานผิดพลาดจะเป็นเรื่องยากมาก...

ฉันสามารถดำเนินต่อไปได้เป็นเวลานาน ...

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

วิธีการทำงานของ NTP

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

เซิร์ฟเวอร์ NTP ระดับ 1 ซึ่งเป็นต้นทางสำหรับเซิร์ฟเวอร์ระดับ 2 ได้รับการซิงโครไนซ์กับนาฬิกาอ้างอิง เซิร์ฟเวอร์ระดับ 2 จะซิงโครไนซ์กับเซิร์ฟเวอร์ระดับ 1 แต่ยังสามารถซิงโครไนซ์ซึ่งกันและกันได้ เซิร์ฟเวอร์ระดับ 3 และต่ำกว่าทำงานในลักษณะเดียวกัน โดยรวมแล้วรองรับได้ถึง 256 ระดับ

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

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

ซอฟต์แวร์การซิงโครไนซ์เวลาที่มีชื่อเสียงและแพร่หลายที่สุดคือ ntpd daemon ขึ้นอยู่กับการตั้งค่าที่ระบุในไฟล์การกำหนดค่า (ซึ่งจะกล่าวถึงด้านล่าง) มันสามารถทำหน้าที่เป็นทั้งเซิร์ฟเวอร์และไคลเอนต์ (นั่นคือสามารถรับเวลาจากโฮสต์ระยะไกลและแจกจ่ายไปยังโฮสต์อื่น) . ด้านล่างนี้เราจะอธิบายรายละเอียดวิธีการติดตั้งและกำหนดค่าดีมอนนี้บน OC Ubuntu

การติดตั้ง

โปรแกรม NTP รวมอยู่ในชุดการแจกจ่ายของระบบ Linux ที่ทันสมัยที่สุด และติดตั้งโดยใช้ตัวจัดการแพ็คเกจมาตรฐาน:

$ sudo apt-get ติดตั้ง ntp

การตั้งค่า

เมื่อติดตั้งเสร็จแล้วให้เปิดเข้าไป โปรแกรมแก้ไขข้อความไฟล์ /etc/ntp.conf มันเก็บการตั้งค่าโปรแกรมทั้งหมด ลองดูรายละเอียดเพิ่มเติม

ตัวเลือกการบันทึก

บรรทัดแรกของไฟล์การกำหนดค่ามีลักษณะดังนี้:

Driftfile /var/lib/ntp/ntp.drift

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

ไฟล์บันทึก /var/log/ntp.log

รายชื่อเซิร์ฟเวอร์สำหรับการซิงโครไนซ์

ไฟล์การกำหนดค่าระบุรายการเซิร์ฟเวอร์ NTP ที่จะทำการซิงโครไนซ์ โดยค่าเริ่มต้นจะมีลักษณะดังนี้:

เซิร์ฟเวอร์ 0.ubuntu.pool.ntp.org เซิร์ฟเวอร์ 1.ubuntu.pool.ntp.org เซิร์ฟเวอร์ 2.ubuntu.pool.ntp.org เซิร์ฟเวอร์ 3.ubuntu.pool.ntp.org

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

เซิร์ฟเวอร์ 0.ubuntu.pool.ntp.org เซิร์ฟเวอร์ iburst 1.ubuntu.pool.ntp.org เซิร์ฟเวอร์ iburst 2.ubuntu.pool.ntp.org เซิร์ฟเวอร์ iburst 3.ubuntu.pool.ntp.org iburst

คุณยังสามารถระบุเซิร์ฟเวอร์ที่คุณต้องการได้โดยใช้ตัวเลือกที่ต้องการ:

เซิร์ฟเวอร์ 0.ubuntu.pool.ntp.org ต้องการ iburst

เซิร์ฟเวอร์ NTP กระจายอยู่ทั่วโลก (ตัวอย่างเช่น นี่คือรายการเซิร์ฟเวอร์ NTP สาธารณะที่พร้อมใช้งาน) เพื่อให้แน่ใจว่าการตั้งค่านาฬิการะบบแม่นยำยิ่งขึ้น ขอแนะนำให้ซิงโครไนซ์กับเซิร์ฟเวอร์ ntp ของภูมิภาคที่เซิร์ฟเวอร์ของเราตั้งอยู่ทางภูมิศาสตร์เท่านั้น ในการดำเนินการนี้ ในไฟล์การกำหนดค่า /etc/ntp.conf คุณต้องระบุโดเมนย่อยระดับภูมิภาคสำหรับ pool.ntp.org ในที่อยู่เซิร์ฟเวอร์:

  • เอเชีย - asia.pool.ntp.org;
  • ยุโรป - Europe.pool.ntp org;
  • แอฟริกา - Africa.pool.ntp.org;
  • อเมริกาเหนือ - north-america.pool.ntp.org;
  • อเมริกาใต้ - south-america.pool.ntp.org;
  • โอเชียเนีย - oceania.pool.ntp.org

คุณยังสามารถระบุโดเมนย่อยสำหรับแต่ละประเทศได้ (โปรดดูรายละเอียดเพิ่มเติม) นอกจากนี้ยังมีโดเมนย่อยสำหรับรัสเซีย - ru.pool.ntp.org

สำรองเซิร์ฟเวอร์เวลาที่แน่นอน

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

เซิร์ฟเวอร์ 127.127.1.0

ข้อ จำกัด

เมื่อเร็ว ๆ นี้ กรณีของการใช้เซิร์ฟเวอร์ NTP เพื่อขยายการรับส่งข้อมูลในการโจมตี DDoS มีบ่อยมากขึ้น (สำหรับรายละเอียดเพิ่มเติม โปรดดูตัวอย่าง) เพื่อป้องกันไม่ให้เซิร์ฟเวอร์ของเราตกเป็นเหยื่อของการละเมิด การกำหนดข้อจำกัดการเข้าถึงสำหรับไคลเอนต์ภายนอกจะมีประโยชน์ ตามค่าเริ่มต้น ข้อจำกัดต่อไปนี้จะถูกตั้งค่าไว้ในไฟล์ /etc/ntp.conf:

จำกัด −4 ค่าเริ่มต้น kod notrap nomodify nopeer noquery จำกัด −6 ค่าเริ่มต้น kod notrap nomodify nopeer noquery

ตัวเลือก nomodify, notrap, nopeer และ noquery ป้องกันไม่ให้ไคลเอ็นต์บุคคลที่สามเปลี่ยนแปลงสิ่งใด ๆ บนเซิร์ฟเวอร์ พารามิเตอร์ kod (คำย่อสำหรับ kiss of death) ให้การป้องกันเพิ่มเติม: ไคลเอ็นต์ที่ส่งคำขอมากเกินไปจะได้รับสิ่งที่เรียกว่าแพ็กเก็ต kod ก่อน (คำเตือนการปฏิเสธบริการ) จากนั้นจะตัดการเชื่อมต่อจากเซิร์ฟเวอร์

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

จำกัด 192.168.1.0 มาสก์ 255.255.255.0 nomodify nottrap

สำหรับโฮสต์ภายใน คุณสามารถตั้งค่าการเข้าถึงเซิร์ฟเวอร์ NTP ได้โดยไม่มีข้อจำกัด:

จำกัด 127.127.1.0

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

หลังจากทำการเปลี่ยนแปลงที่จำเป็นทั้งหมดกับไฟล์การกำหนดค่าและบันทึกแล้ว ให้รีสตาร์ทเซิร์ฟเวอร์ NTP:

$service รีสตาร์ท ntp

จากนั้นรันคำสั่งต่อไปนี้:

$ntpq -pn

ผลลัพธ์จะถูกนำเสนอในรูปแบบของตาราง:

รีโมตรีโมต st เมื่อการสำรวจความคิดเห็นถึงความล่าช้า ออฟเซ็ต jitter =============================== ========== ============================ *62.76.96.4 130.173.91.58 2 207 256 37 10.985 -215.79 256.992 +85.21.78.91 89.175. 22.41 2 คุณ 193 256 37 32.623 -207.70 259.121 +31.131.249.27 89.175.22.41 2 คุณ 198 256 3 7 0.621 -216.90 257.037 +85.21.78.8 193. 11.166.20 2 คุณ 193 256 37 32.028 - 207.41 259.863 +91.189.94.4 193.79.237.14 2 คุณ 192 256 37 50.573 -206.62 259.542

ตารางระบุพารามิเตอร์ต่อไปนี้:

  • ระยะไกล — ที่อยู่ของเซิร์ฟเวอร์เวลาที่แน่นอน (คอลัมน์นี้แสดงเซิร์ฟเวอร์จากรายการในไฟล์กำหนดค่า)
  • refid - เซิร์ฟเวอร์ระดับสูงกว่า (เซิร์ฟเวอร์ที่เซิร์ฟเวอร์จากคอลัมน์ก่อนหน้าได้รับการซิงโครไนซ์)
  • st — ระดับเซิร์ฟเวอร์ (ชั้น);
  • t - ประเภทเพียร์ (u-unicast, m-multicast);
  • เมื่อ — เวลาการซิงโครไนซ์ครั้งล่าสุด;
  • แบบสำรวจ - เวลาเป็นวินาทีที่ NTP daemon ซิงโครไนซ์กับเพียร์
  • การเข้าถึง — สถานะความพร้อมใช้งานของเซิร์ฟเวอร์ หลังจากการพยายามซิงโครไนซ์สำเร็จแปดครั้ง ค่าของพารามิเตอร์นี้จะกลายเป็น 377
  • ล่าช้า — เวลาหน่วงเวลาสำหรับการตอบกลับจากเซิร์ฟเวอร์
  • ชดเชย — เวลาที่แตกต่างระหว่างเซิร์ฟเวอร์ของเราและเซิร์ฟเวอร์การซิงโครไนซ์ ค่าบวกของพารามิเตอร์นี้หมายความว่านาฬิกาของเราเร็ว ค่าลบหมายความว่านาฬิกาช้า
  • กระวนกระวายใจ — การชดเชยเวลาบนเซิร์ฟเวอร์ระยะไกล

สัญลักษณ์ต่อไปนี้สามารถระบุได้ทางด้านซ้ายของที่อยู่เซิร์ฟเวอร์:

  • * เซิร์ฟเวอร์ที่เลือกสำหรับการซิงโครไนซ์;
  • + เซิร์ฟเวอร์ที่เหมาะสมสำหรับการอัปเดต (ซึ่งคุณสามารถซิงโครไนซ์ได้)
  • — ไม่แนะนำให้ซิงโครไนซ์กับเซิร์ฟเวอร์
  • เซิร์ฟเวอร์ x ไม่พร้อมใช้งาน

คุณสามารถตรวจสอบว่าเซิร์ฟเวอร์จากรายการเหมาะสำหรับการซิงโครไนซ์หรือไม่โดยใช้คำสั่ง:

Ntpdate -q เซิร์ฟเวอร์ хх.ххх.ххх.ххх, ชั้น 2, ออฟเซ็ต −0.127936, ดีเลย์ 0.02600 7 ก.ค. 14:30:23 ntpdate: ปรับเวลาเซิร์ฟเวอร์ хх.ххх.ххх.ххх ออฟเซ็ต −0.127936 วินาที

จากผลลัพธ์ข้างต้นเป็นที่ชัดเจนว่าเซิร์ฟเวอร์เหมาะสำหรับการซิงโครไนซ์ ระดับของมันคือ 2 ออฟเซ็ตคือ 0.127936 ms เวลาแฝงคือ 0.026 ms

คุณยังสามารถค้นหาว่าการซิงโครไนซ์เกิดขึ้นได้อย่างไร (สำเร็จหรือมีข้อผิดพลาด) จากบันทึก:

7 ก.ค. 15:17:17 ntpd: ซิงโครไนซ์กับ 91.198.10.4, stratum=2 7 ก.ค. 15:17:17 ntpd: การซิงค์เวลาเคอร์เนลถูกปิดใช้งาน 0041 7 ก.ค. 15:17:21 ntpd: เปิดใช้งานการซิงค์เวลาเคอร์เนลแล้ว 0001

การตั้งค่าวันที่และเวลาท้องถิ่น

การใช้คำสั่ง ntpdate คุณสามารถตั้งค่าวันที่และเวลาท้องถิ่นบนเซิร์ฟเวอร์โดยส่งคำร้องขอที่เกี่ยวข้องไปยังเซิร์ฟเวอร์ NTP

Network Time Protocol เป็นโปรโตคอลเครือข่ายสำหรับการซิงโครไนซ์นาฬิกาภายในของคอมพิวเตอร์โดยใช้เครือข่ายเวลาแฝงที่แปรผันตามการสลับแพ็กเก็ต

แม้ว่า NTP เดิมจะใช้ UDP เพื่อดำเนินการ แต่ก็สามารถทำงานผ่าน TCP ได้เช่นกัน ระบบ NTP มีความทนทานต่อการเปลี่ยนแปลงเวลาในการตอบสนองของสื่อการส่งข้อมูลอย่างมาก

เวลาจะแสดงในระบบ NTP เป็นตัวเลข 64 บิต ซึ่งประกอบด้วยตัวนับวินาที 32 บิต และตัวนับเศษส่วน 32 บิต ทำให้สามารถส่งเวลาได้ในช่วง 2-32 วินาที โดยมีความแม่นยำทางทฤษฎีเป็น 2-32 วินาที เนื่องจากมาตราส่วนเวลาใน NTP ซ้ำทุกๆ 2 32 วินาที (136 ปี) ผู้รับจึงต้องทราบเวลาปัจจุบันโดยประมาณเป็นอย่างน้อย (โดยมีความแม่นยำ 68 ปี) โปรดทราบว่าเวลาวัดจากเที่ยงคืนของวันที่ 1 มกราคม 1900 ไม่ใช่ปี 1970 ดังนั้นจึงต้องลบเวลาเกือบ 70 ปี (รวมปีอธิกสุรทิน) ออกจากเวลา NTP เพื่อให้ตรงกับเวลากับระบบ Windows หรือ Unix อย่างถูกต้อง

มันทำงานอย่างไร

เซิร์ฟเวอร์ NTP ทำงานในเครือข่ายแบบลำดับชั้น แต่ละระดับของลำดับชั้นเรียกว่าชั้น ระดับ 0 จะแสดงด้วยนาฬิกาอ้างอิง มาตรฐานนี้นำมาจากสัญญาณ GPS (Global Positioning System) หรือบริการ ACTS (Automated Computer Time Service) ในระดับศูนย์ เซิร์ฟเวอร์ NTP ไม่ทำงาน

เซิร์ฟเวอร์ NTP ระดับ 1 รับข้อมูลเวลาจากนาฬิกาอ้างอิง เซิร์ฟเวอร์ NTP ระดับ 2 ได้รับการซิงโครไนซ์กับเซิร์ฟเวอร์ระดับ 1 ทั้งหมดมีได้สูงสุด 15 ระดับ

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

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

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

เป็นที่น่าสังเกตว่าโปรโตคอล NTP ไม่ได้ตั้งเวลาในรูปแบบที่บริสุทธิ์ จะปรับนาฬิกาท้องถิ่นโดยใช้การชดเชยเวลา ความแตกต่างระหว่างเวลาบนเซิร์ฟเวอร์ NTP และนาฬิกาท้องถิ่น เซิร์ฟเวอร์และไคลเอนต์ NTP จะปรับนาฬิกา โดยค่อยๆ ซิงโครไนซ์กับเวลาปัจจุบันหรือทั้งหมดในคราวเดียว

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

การซิงโครไนซ์เวลาใน Active Directory

รูปแบบการซิงโครไนซ์เวลาต่อไปนี้ทำงานระหว่างคอมพิวเตอร์ที่เข้าร่วมใน Active Directory

  • ตัวควบคุมโดเมนรากในฟอเรสต์ AD ซึ่งเป็นเจ้าของบทบาท FSMO ของโปรแกรมจำลอง PDC (หรือเรียกว่า PDC ราก) เป็นแหล่งเวลาสำหรับตัวควบคุมอื่นๆ ทั้งหมดในโดเมนนี้
  • ตัวควบคุมโดเมนลูกซิงโครไนซ์เวลากับตัวควบคุมโดเมนที่สูงกว่าในโทโพโลยีโฆษณา
  • สมาชิกโดเมนทั่วไป (เซิร์ฟเวอร์และเวิร์กสเตชัน) ซิงโครไนซ์เวลากับตัวควบคุมโดเมนที่ใกล้ที่สุดที่มีอยู่ โดยคำนึงถึงโทโพโลยี AD

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

การซิงโครไนซ์ไคลเอ็นต์ของ root PDC สามารถทำได้ทั้งจากนาฬิกาภายในและจากแหล่งภายนอก ในกรณีแรก เซิร์ฟเวอร์เวลา root PDC จะประกาศตัวเองว่า "เชื่อถือได้"

ต่อไป ฉันจะให้การกำหนดค่าที่เหมาะสมที่สุดจากมุมมองของฉันสำหรับเซิร์ฟเวอร์เวลารูท PDC ซึ่ง PDC รูทจะซิงโครไนซ์เวลาจากแหล่งที่เชื่อถือได้บนอินเทอร์เน็ตเป็นระยะ ๆ และเวลาของลูกค้าที่เข้าถึงจะซิงโครไนซ์กับนาฬิกาภายใน .

เข้า แบบสอบถาม netdom fsmoในตัวอย่างของฉัน บทบาทของเซิร์ฟเวอร์ PDC และ NTP เป็นของคอนโทรลเลอร์ dc7

การกำหนดค่าเซิร์ฟเวอร์ NTP บน root PDC

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

w32tm / แบบสอบถาม / การกำหนดค่า

EventLogFlags: 2 (ท้องถิ่น)
ประกาศธง: 10 (ท้องถิ่น)
TimeJumpAuditOffset: 28800 (ท้องถิ่น)
MinPollInterval: 6 (ท้องถิ่น)
MaxPollInterval: 10 (ท้องถิ่น)
MaxNegPhaseCorrection: 172800 (ท้องถิ่น)
MaxPosPhaseCorrection: 172800 (ท้องถิ่น)
MaxAllowedPhaseOffset: 300 (ท้องถิ่น)

FrequencyCorrectRate: 4 (ท้องถิ่น)
PollAdjustFactor: 5 (ท้องถิ่น)
LargePhaseOffset: 50000000 (ท้องถิ่น)
SpikeWatchPeriod: 900 (ท้องถิ่น)
LocalClockDispersion: 10 (ท้องถิ่น)
ระยะเวลาการถือครอง: 5 (ท้องถิ่น)
PhaseCorrectRate: 7 (ท้องถิ่น)
UpdateInterval: 100 (ท้องถิ่น)

NtpClient (ท้องถิ่น)
เปิดใช้งาน: 1 (ท้องถิ่น)
InputProvider: 1 (ท้องถิ่น)
CrossSiteSyncFlags: 2 (ท้องถิ่น)
ResolvePeerBackoffMinutes: 15 (ท้องถิ่น)
ResolvePeerBackoffMaxTimes: 7 (ท้องถิ่น)
ความเข้ากันได้ธง: 2147483648 (ท้องถิ่น)
EventLogFlags: 1 (ท้องถิ่น)
LargeSampleSkew: 3 (ท้องถิ่น)
SpecialPollInterval: 3600 (ท้องถิ่น)
ประเภท: NT5DS (ท้องถิ่น)

NtpServer (ท้องถิ่น)
ชื่อ Dll: C:\Windows\system32\w32time.dll (ในเครื่อง)
เปิดใช้งาน: 1 (ท้องถิ่น)
InputProvider: 0 (ท้องถิ่น)
AllowNonstandardModeCombinations: 1 (ในเครื่อง)

VMICTimeProvider (ท้องถิ่น)
ชื่อ Dll: C:\Windows\System32\vmictimeprovider.dll (ในเครื่อง)
เปิดใช้งาน: 1 (ท้องถิ่น)
InputProvider: 1 (ท้องถิ่น)

เปิดใช้งานการซิงโครไนซ์นาฬิกาภายในกับแหล่งภายนอก


การเปิดใช้งานเซิร์ฟเวอร์ NTP

เซิร์ฟเวอร์ NTP ถูกเปิดใช้งานตามค่าเริ่มต้นบนตัวควบคุมโดเมนทั้งหมด แต่สามารถเปิดใช้งานบนเซิร์ฟเวอร์สมาชิกได้เช่นกัน


การระบุรายการแหล่งที่มาภายนอกสำหรับการซิงโครไนซ์


ค่าสถานะ 0x8 ที่ส่วนท้ายหมายความว่าการซิงโครไนซ์ควรเกิดขึ้นในโหมดไคลเอ็นต์ NTP ในช่วงเวลาที่แนะนำโดยเซิร์ฟเวอร์นี้ ในการตั้งค่าช่วงเวลาการซิงโครไนซ์ของคุณเอง คุณต้องใช้แฟล็ก 0x1

การตั้งค่าช่วงเวลาการซิงโครไนซ์กับแหล่งภายนอก

เวลาเป็นวินาทีระหว่างการโพลแหล่งการซิงโครไนซ์ ค่าเริ่มต้น 900 วินาที = 15 นาที ใช้งานได้กับแหล่งที่มาที่มีเครื่องหมาย 0x1 เท่านั้น


  • "SpecialPollInterval"=dword:00000384

การตั้งค่าการแก้ไขเชิงบวกและเชิงลบขั้นต่ำ

การแก้ไขเวลาบวกและลบสูงสุด (ความแตกต่างระหว่างนาฬิกาภายในและแหล่งการซิงโครไนซ์) ในหน่วยวินาที ซึ่งเกินกว่านั้นจะไม่เกิดการซิงโครไนซ์ ฉันแนะนำค่า 0xFFFFFFFF ซึ่งสามารถแก้ไขได้ตลอดเวลา


"MaxPosPhaseCorrection"=dword:FFFFFFFF
"MaxNegPhaseCorrection"=dword:FFFFFFFF

ทุกสิ่งที่คุณต้องการในบรรทัดเดียว

w32tm.exe /config /manualpeerlist:"time.nist.gov,0x8 ntp1.imvp.ru,0x8 ntp2.imvp.ru,0x8 time.windows.com,0x8 pool.ntp.org,0x8" /syncfromflags:manual / เชื่อถือได้:ใช่ /อัปเดต

คำสั่งที่เป็นประโยชน์

  • การใช้การเปลี่ยนแปลงที่ทำกับการกำหนดค่าบริการเวลา
    w32tm /config /อัพเดต
  • บังคับให้ซิงค์จากแหล่งที่มา
    w32tm /resync /ค้นพบอีกครั้ง
  • การแสดงสถานะการซิงโครไนซ์ของตัวควบคุมโดเมนในโดเมน
    w32tm/จอภาพ
  • แสดงแหล่งที่มาของการซิงค์ปัจจุบันและสถานะ
    w32tm / แบบสอบถาม / เพียร์

การกำหนดค่าเซิร์ฟเวอร์ NTP และไคลเอนต์โดยใช้นโยบายกลุ่ม

เนื่องจากเรามีโดเมน Active Directory จึงเป็นเรื่องโง่ที่จะไม่ใช้นโยบายกลุ่มสำหรับการกำหนดค่าเซิร์ฟเวอร์และเวิร์กสเตชันจำนวนมาก ฉันจะแสดงวิธีกำหนดค่าเซิร์ฟเวอร์ NTP ของคุณใน Windows และไคลเอนต์ เปิดสแน็ปอิน "ตัวแก้ไขนโยบายกลุ่ม" ก่อนที่จะตั้งค่าเซิร์ฟเวอร์ NTP ของเราใน Windows เราจำเป็นต้องสร้างตัวกรอง WMI ที่จะใช้นโยบายกับเซิร์ฟเวอร์หลัก PDC เท่านั้น

ป้อนชื่อคำขอ เนมสเปซ ค่าจะเป็น "root\CIMv2" และคำขอ "Select * from Win32_ComputerSystem โดยที่ DomainRole = 5" มาบันทึกไว้กันเถอะ

จากนั้นคุณสร้างนโยบายบนคอนเทนเนอร์ตัวควบคุมโดเมน

ที่ด้านล่างสุดของนโยบาย ให้ใช้ตัวกรอง WMI ที่คุณสร้างขึ้น

ไปที่สาขา: การกำหนดค่าคอมพิวเตอร์ > นโยบาย > เทมเพลตการดูแลระบบ > ระบบ > บริการ Windows Time > ผู้ให้บริการเวลา

ที่นี่เราเปิดนโยบาย "กำหนดค่าไคลเอนต์ Windows NTP" ตั้งค่าพารามิเตอร์

  • เซิร์ฟเวอร์ Ntp: 0.ru.pool.ntp.org.0x1, 1.ru.pool.ntp.org.0x1, 2.ru.pool.ntp.org.0x1, 3.ru.pool.ntp.org.0x1
  • ประเภท: NTP
  • CrossSiteSyncFlags: 2. สองหมายถึงถ้าพารามิเตอร์นี้เป็น 2 (ทั้งหมด) สามารถใช้ผู้เข้าร่วมการซิงโครไนซ์ได้ ค่านี้จะถูกละเว้นเว้นแต่จะระบุ NT5DS ค่าเริ่มต้น: 2 (ทศนิยม) (0x02 (ฐานสิบหก))
  • ResolvePeerBackoffMinutes: 15 ค่านี้ซึ่งแสดงเป็นนาที กำหนดระยะเวลาที่บริการ W32time รอก่อนที่จะพยายามแก้ไขชื่อ DNS หากล้มเหลว ค่าเริ่มต้น: 15 นาที
  • แก้ไข Peer BackoffMaxTimes: 7 ค่านี้กำหนดจำนวนความพยายามในการแก้ไขชื่อ DNS ที่บริการ W32time ทำก่อนที่จะเริ่มกระบวนการค้นหาใหม่ แต่ละครั้งที่แก้ไขชื่อ DNS ล้มเหลว เวลารอก่อนที่จะพยายามครั้งถัดไปจะเพิ่มเป็นสองเท่า ค่าเริ่มต้น: เจ็ดครั้ง
  • SpecilalPoolInterval: 3600 ค่าพารามิเตอร์ไคลเอ็นต์ NTP นี้ ซึ่งแสดงเป็นวินาที จะกำหนดความถี่ในการโพลแหล่งเวลาที่กำหนดค่าด้วยตนเองซึ่งใช้ช่วงเวลาการโพลเฉพาะ หากพารามิเตอร์ NTPServer ถูกตั้งค่าเป็นค่าสถานะ SpecialInterval ไคลเอนต์จะใช้ค่าที่ระบุเป็น SpecialPollInterval แทนค่า MinPollInterval และ MaxPollInterval เพื่อกำหนดความถี่ในการสำรวจแหล่งเวลา ค่าเริ่มต้น: 3600 วินาที (1 ชั่วโมง)
  • EventLogFlags: 0

มาทำแยกกัน นโยบายกลุ่มสำหรับเครื่องทำงานไคลเอนต์ด้วยพารามิเตอร์เหล่านี้

  • NtpServer: ที่อยู่ของตัวควบคุมโดเมนของคุณที่มีบทบาท PDC
  • ประเภท: NT5DS
  • CrossSiteSyncFlags: 2
  • แก้ไข PeerBackoffMinutes: 15
  • แก้ไขเพียร์ BackoffMaxTimes: 7
  • ช่วงเวลาพิเศษ: 3600
  • EventLogFlags: 0

MSK-IX NTP Server เป็นเซิร์ฟเวอร์เวลาสาธารณะที่ MSK-IX รองรับ เซิร์ฟเวอร์เวลาที่แน่นอนได้รับการออกแบบให้ซิงโครไนซ์นาฬิกาภายในของคอมพิวเตอร์และอุปกรณ์เครือข่าย (เซิร์ฟเวอร์ เราเตอร์ สมาร์ทโฟน ฯลฯ) กับแหล่งอ้างอิงโดยใช้โปรโตคอล NTP

เซิร์ฟเวอร์ MSK-IX NTP อยู่ในระดับความแม่นยำสูงสุด (เซิร์ฟเวอร์ Stratum One Time) ในระบบลำดับชั้นของระดับเวลา สัญญาณจากระบบนำทางด้วยดาวเทียมทั่วโลก GLONASS (ลำดับความสำคัญ) และ GPS ใช้เป็นสัญญาณเวลาอ้างอิง

MSK-IX NTP Server ได้รับการปรับใช้เป็นกลุ่มเซิร์ฟเวอร์ที่ตั้งอยู่ในมอสโก เซนต์ปีเตอร์สเบิร์ก เยคาเตรินเบิร์ก และโนโวซีบีร์สค์ แอปพลิเคชัน เทคโนโลยีเครือข่าย Anycast รับประกันความน่าเชื่อถือสูงและการตอบสนองของระบบที่รวดเร็วทั่วประเทศ

เซิร์ฟเวอร์ MSK-IX ยังรวมอยู่ในกลุ่มระหว่างประเทศของเซิร์ฟเวอร์ NTP POOL.NTP.ORG ซึ่งใช้กันอย่างแพร่หลายในการตั้งค่าระบบปฏิบัติการ

จะเริ่มใช้บริการ NTP Server ได้อย่างไร?

ใช้พารามิเตอร์ต่อไปนี้เมื่อกำหนดค่าฮาร์ดแวร์ของคุณ:

ชื่อเซิร์ฟเวอร์ ntp.msk-ix.ru
ที่อยู่ IPv4 194.190.168.1
ที่อยู่ IPv6 2001:6d0:ffd4::1

จะสร้างการเพียร์กับเครือข่ายเซิร์ฟเวอร์ MSK-IX NTP ได้อย่างไร

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