Кіріспе

Желілік уақыт протоколын іске асыру

OpenNTPD (сонымен қатар OpenBSD NTP Daemon деп те аталады) – компьютер жүйесінің жергілікті сағатын қашықтағы NTP серверлерімен синхрондау үшін Желілік уақыт протоколын іске асыратын Unix демоны. Ол сондай-ақ NTP үйлесімді клиенттерге NTP сервері ретінде де қызмет ете алады. OpenBSD NTP Daemon бастапқыда Александр Гай және Хеннинг Брауер OpenBSD жобасының бөлігі ретінде, көптеген авторлардың көмегімен әзірленді. Оның жобалау мақсаттары қауіпсіздік (әсер етуге келмейтін), оңай конфигурациялау және көптеген мақсаттар үшін жеткілікті дәлдік болуын қамтиды. OpenSSH сияқты, оның портативті нұсқасы OpenBSD нұсқасына портативтілік кодын қосып, оны жеке шығаратын қосалқы жоба ретінде әзірленген. Портативті нұсқаны Брент Кук әзірледі. Жобаны дамытушылар OpenBSD Foundation-нан қаржыландыру алады.

Тарих

OpenNTPD-ді әзірлеуге қазіргі NTP-демондардағы бірнеше мәселе себеп болды: қиын конфигурация, күрделі және тексеруге қолайсыз код, сондай-ақ тиімсіз лицензия. OpenNTPD осы мәселелерді шешу және уақытты синхрондауды барынша көп пайдаланушыларға қолжетімді ету мақсатымен жасалды. Біршама дамытудан кейін OpenNTPD алғаш рет OpenBSD 3.6 нұсқасында пайда болды. Оның тұңғыш нұсқасы 2004 жылдың 2 қарашасында жарияланды.

Мақсаттар

OpenNTPD – OpenBSD командасының қауіпсіз, аудиттеуге оңай, орнату мен басқаруға қарапайым, лайықты дәлдікте және жүйе ресурстарын аз қолданатын NTP демонды іске асыруға жасаған әрекеті. Осы ретте, OpenNTPD-нің жобалау мақсаттары: қауіпсіздік, қолданудың қарапайымдығы және өнімділік. OpenNTPD-дегі қауіпсіздік, желілік кіріс жолындағы сенімді жарамдылықты тексеру, strlcpy арқылы шектелген буферлік операцияларды қолдану, және мүмкін қауіпсіздік қателіктерін пайдаланып, демон арқылы құқықтарды көтерудің әсерін азайту үшін құқықтарды бөлу арқылы қамтамасыз етіледі. NTP-ны қолдануды жеңілдету үшін OpenNTPD, Network Time Protocol Project-те ұсылғандай, басқа NTP демондарына қарағанда функционалдықтардың кішірек жиынтығын іске асырады. Мақсаты – эзотерикалық немесе арнайы талаптарға сәйкес келмеу қаупі бар, типтік қолдануды қанағаттандыру үшін жеткілікті мүмкіндіктер ұсыну. OpenNTPD конфигурациялық файл, ntpd.conf арқылы конфигурацияланады. Ұсынылатын мүмкіндіктердің саны ең аз: OpenNTPD-нің тыңдауы керек IP-мекенжайы немесе хост атауы, қолданылатын уақыт дельтасы сенсорлық құрылғысы және уақытты синхрондау үшін қолданылатын серверлер жиынтығы. OpenNTPD-нің дәлдігі – барынша күш салу; демон мүмкіндігінше дәл болуға тырысады, бірақ нақты дәлдікке кепілдік берілмейді.

Сын

OpenNTPD NTP жобасы (ntp.org) шығарған NTP демонынан кем дәлдігі үшін сынға ұшырады. Ішкі жағынан OpenNTPD миллисекундтық дәлдікті сақтамайды және «нақты» уақыттан 50–200 мс-қа дейін ауытқуы мүмкін, себебі ол кодты қарапайымдылыққа бағыттап, дәлдікті арттыратын әртүрлі алгоритмдерден бас тартады. OpenNTPD жобасы сынды мойындады, бірақ микросекундтық дәлдіктің болмауы қарапайымдық пен қауіпсіздікке пайда әкелетін дизайндық шарттылық болды деп мәлімдеді. 2004 жылдың қыркүйегінде OpenNTPD 3.6 нұсқасы шыққаннан кейін көп ұзамай ntp.org қатысушысы Брэд Ноулз «OpenNTPd Considered Harmful» деген мақала жариялады, онда OpenNTPD-нің NTP протоколын іске асыруының әртүрлі аспектілерін, сондай-ақ жоба қолданатын бөлінген даму моделін сынға алды, бұл модель OpenSSH және OpenBGPD әзірлеуінде де қолданылады. 2004 жылдың желтоқсанында OpenNTPD портативті тармағының бас әзірлеушісі Даррен Таккер Ноулзге егжей-тегжейлі жауап жазып, кейбір мәселелерді жарамды деп мойындады, бірнешеуін негізсіз деп қабылдамады, ал тағы басқаларын шатастырушы деп санады. Ноулз көтерген маңызды мәселелердің бірі – OpenNTPD серверлері 1-ші деңгейдегі серверлер деп мәлімдегені. Алайда, Таккердің жауабы кезінде бұл мәселе шешілген болатын. 2005 жылдың наурыз айында Ноулз Таккердің жауабын мойындады және ол «қалған мәселелерді шешу үшін [Таккермен] жұмыс істеу үшін бар күшін салатынын» айтты. Сонымен қатар, OpenBSD желілік жиі қойылатын сұрақтарға (FAQ) Ноулздің бастапқы сын-пікіріне жауап қосылды. OpenNTPD-нің қазіргі дәлдігі туралы 2004 жылғы 21C3 презентациясында «әдетте 50 мс» деп көрсетілген.

Жылжымалы секундтар

OpenNTPD (және OpenBSD ядросы) серпіліс секундтарын қабылдамайды. OpenNTPD-ді басқа ntpd серверлері үшін жоғары деңгейдегі дереккөз ретінде пайдаланғанда немесе Координацияланған әмбебап уақытқа сілтеме жасайтын жоғары дәлдіктегі уақыт талаптарында сақ болу керек. Серпіліс секундтары Координацияланған әмбебап уақытта қолданылады, бірақ Халықаралық атомдық уақыт немесе Глобалдық позициялау жүйесінің уақыт сигналдарында қолданылмайды. 50 мс дәлдік жоғары деңгейдегі дереккөз үшін әдеттегіден ауытқушы. АҚШ Әскери-теңіз обсерваториясы және Халықаралық салмақтар мен өлшемдер бюросы серпіліс секундтарын қолдамайтын жүйелерді Халықаралық атомдық уақытқа немесе тікелей GPS уақыт сигналдарына сілтемелеуді ұсынады. Дегенмен, NTP-нің қазіргі нұсқалары (2023 жылға дейін) UTC емес уақыт шкалаларын қолдамайды.