Научете Linux

NTP сървър и най-добри практики

NTP сървър и най-добри практики

NTP означава „Протокол за мрежово време.”Това е протокол, използван от устройства, свързани към интернет, за синхронизиране на времето на техните системи с референтен час. Има различни важни моменти защо е важно да се поддържа точно време, а принципите на работа на NTP са елементарни, но невероятни.

Наскоро представихме статия за настройване на NTP сървъра и клиента в дистрибуции, базирани на Ubuntu. Това изисква подробно описание на това как точно работи NTP и защо е важно.

Какво е изискването за точно време?

Първо, нека видим защо на първо място е разработена толкова дълбока инфраструктура, че нашите машини да могат да използват точно време.

Възниква дрейф

Винаги, когато използвате компютърна система, е добре забелязан факт, че хардуерният часовник започва да изостава с течение на времето. Този ефект може дори да доведе до голяма неточност в някои случаи. Това очевидно не е желан ефект, така че е разумно да се използва синхронизация на времето.

Управление на дневници

Ако има мрежа от множество устройства и се каже, че възниква някакъв проблем, който засяга множество системи в мрежата. Най-добрият начин да проследите проблема и да разберете какво се е случило, като проверите системните дневници (повече за проверка на регистрационните файлове тук). Ако една от тези системи изостава на няколко секунди, изглежда, че е била извършена преди другата система, която всъщност е била засегната първа. Това затруднява отстраняването на неизправности и като цяло управлението на множество системи в мрежа. Това беше само един пример, но има много повече и сериозни възможности.

Преглед на NTP сървъра (с любезното съдействие: Siemens)

Транзакции

В интернет се извършват няколко вида транзакции. Понякога, ако системният ви часовник изпревари действителното време, той може да покаже в системните дневници на плащането, че плащането е пристигнало, преди да сте платили действително сумата. Това ще направи плащането като не ваше и ще доведе до повече проблеми.

Или в по-подобен случай, поради неточност във времето, често може да се получи, че получателят ви ще изпрати отговор на вашия имейл, преди изобщо да сте изпратили имейла. Както можете да си представите, точността на времето за две различни системи в Интернет може да бъде в основата на няколко потенциално вредни последици.

Изпълнение на команди

В мрежата често има скриптове, написани за изпълнение на задачи, организирани в множество системи. Ако такъв скрипт има параметри на времето, той може да се обърка, ако системата има неточно време. Някои команди ще бъдат изпълнени преди да е необходимо или след саботиране на целия процес. Това очевидно не е добре да се случва.

Отново, по-подобна бележка, вашият GPS наистина няма да работи правилно, ако времето не е синхронизирано правилно между вашата система и GPS сателита.

Как работи?

По този начин видяхме няколко причини, поради които поддържането на точно време в мрежата е доста важно, за да се включат сценариите и ежедневието ни. За наш късмет това не е много трудно да се постигне. Използвайки NTP, можем да направим това възможно. Но тогава как NTP прави това да се случи? Нека видим.

Източници на време

Крайните източници на време трябва да бъдат изключително точни, разбира се. Тези източници на време са едни от най-добрите научно възможни в момента, първо от които са Атомни часовници, които използват 9192631770 цикъла на излъчване, съответстващи на прехода между две енергийни нива на основното състояние атом цезий-133 като една секунда. Освен това, приемниците за времеви сигнали, излъчвани от някои национални стандартни агенции, могат да се доверят като точното време.

NTP100-GPS

Твърди се, че тези източници на време са в Stratum 0 ниво. Концепцията на слоя работи, както е описано:

Концепция на слоя

Stratum буквално означава „един от поредица от слоеве, нива или градации в подредена система“ и по този начин се използва и в контекста на NTP. Нивото на слоя 0 е възможно най-точното време. Ако сървърът синхронизира времето с 0-времеви източник на слой, това е 1-кратен източник. И ако предоставя време на друг сървър, този сървър е двустратен източник на страта. Тъй като слоевете продължават да се покачват, номерът на слоя, присвоен на сървъра, също обикновено продължава да се покачва. Така че колкото по-нисък е стратумният номер, присвоен на сървър, толкова по-точно ще бъде времето.

Нивата на слоя се считат до слой 16, след което разликата във времето е твърде голяма. В много сценарии се препоръчва само използването на сървъри до слой 4.

Stratum 1 сървър

Сървър от ниво 0 на слоя няма право да се използва от обикновени потребители като нас. Атомните часовници и източниците на време на националните агенции се управляват директно от правителството.

Отивайки по-нагоре по линията, сървърът от слой 1 е сървър, който е директно свързан с хардуерен часовник, който е на нивата на слоя 0. Това е най-добрият възможен сървър за източник на време, защото слоят 0 всъщност не е сървър, а часовник. Сървърът, към който действително може да се свърже, е сървърът от страта 1, който директно получава времето от хардуерния часовник.

Сървърът от слой 1 трябва да има точна и добре поддържана. Той също така трябва да бъде широко достъпен, тъй като други системи могат да разчитат на неговата услуга за времето.

Процес на синхронизиране на времето

На първо място, за да настроите NTP във вашата система, трябва да изберете сървърите, които ще използвате, за да синхронизирате времето с. За това можете да изберете сървъра, който искате да използвате, и да конфигурирате настройките на системния софтуер.

Как се синхронизира времето

Процесът на синхронизация започва, когато системата и NTP сървърът обменят множество пакети данни за доста дълго време. Това, което всъщност се случва, е, че се изчислява времето, необходимо на пакета за завършване на еднопосочно пътуване до NTP сървъра и обратно. Времето се изпраща в тези пакети с данни от NTP сървъра и изчисленото време за пътуване се приспада съответно. Например:

Системата разполага с времето 17:00:05, когато изпраща пакета. Сега системата получава отговор от NTP сървъра в 17:00:11. NTP сървърът е изпратил информация за времето, че всъщност е 17:05:23 в момента. Но когато погледнете времето за пътуване, взето от пакета, което е 6 секунди, това означава, че са били необходими 3 секунди, за да отидете до сървъра и още 3, за да се върнете. Това означава, че часът е бил 17:05:23 преди 3 секунди, а не в момента. Така че съответно времето се коригира на 17:05:26.

(Разбира се, разширих скалата до много висока степен, но това е само за обяснение. Тези разлики са в милисекунди в действителност, но логиката е същата).

Целият този процес на обмен на пакети продължава около 5 минути, за да се гарантира точното време и да се гарантира, че изместването е фиксирано. Очевидно е, че колкото по-кратки, по-последователни и по-симетрични са обменните пакети, толкова по-точно ще бъде времето. Протоколът NTP използва UDP и IP пакети за този процес поради тяхната скорост и надеждност. Използваният порт е 123. Казва се, че точността на времето обикновено е между 5-100 ms.

Ако разликата във времето между NTP сървъра и системата е достатъчно малка, тя бързо ще я промени. Ако разликата във времето е голяма, времето се променя постоянно с малки разлики, докато се коригира.

Най-добри практики

Имате няколко сървъра

Това е най-препоръчителната практика: да имате множество излишни NTP сървъри, ако този използва неизправности или стане неточен по някаква причина. Няма да има много загуби, ако мрежата може да бъде свързана веднага с друг NTP сървър. Освен това ще бъде още по-добре, ако можете да настроите скриптове, които могат автоматично да активират и свържат мрежата към един от излишните сървъри, когато са дадени определени очевидни сигнали (като да не получавате пакети от NTP сървъра и т.н.).

Помислете за оформлението на мрежата

Мрежата трябва да бъде структурирана така, че системите, изискващи по-точно време, да са физически по-близки и директно свързани с NTP сървъра. Ако има подмрежи, те трябва да се използват за задачи, които относително не изискват точно време.

Сигурни NTP комуникации

Тъй като NTP се основава на UDP, това е протокол, фокусиран върху доста, така че в зависимост от вашата система може да има потенциални уязвимости. Винаги е добра идея да защитите NTP връзката с удостоверяване.

Ограничете достъпа

Защитата на мрежата от външни нападатели е важна със сигурност, но също така и предотвратяването на неправилно боравене. Чрез ограничаване на достъпа до NTP сървърите за минималния брой хора, можете да се уверите, че имате възможно най-малко човешка грешка и освен това можете да бъдете сигурни, че няма да бъде обработен от някой, който няма техническото разбиране всъщност за работа с мрежата.

Избягвайте времевите цикли

Настрана от научно-фантастичните перспективи, винаги трябва да се уверите, че избягвате цикли в мрежовата структура. Кажете, че A действа като сървър за B и B за C. Сега, ако C отново бъде назначен като сървър за A, нещата могат да станат объркани. Очевидно никой в ​​здравия си ум не би направил това, но понякога това може да се случи случайно, така че проверката на NTP оформлението на мрежата от време на време е добра идея.

Заключение

NTP е отличен и ефективен протокол, за да сте сигурни, че вашата система винаги разполага с точното време. Може да стане малко сложно в голяма мрежа или офис среда, но да бъдете малко внимателни и да имате добри оформления може да допринесе много. Надяваме се, че тази статия ви е била полезна.

Най-добрите дистрибуции на Linux за игри през 2021 г
Операционната система Linux е изминала дълъг път от първоначалния си, прост, базиран на сървъра външен вид. Тази операционна система се подобри неимов...
Как да заснемете и поточно предадете игралната си сесия на Linux
В миналото играта на игри се смяташе само за хоби, но с течение на времето игралната индустрия отбеляза огромен ръст по отношение на технологиите и бр...
Най-добрите игри за игра с ръчно проследяване
Oculus Quest наскоро представи страхотната идея за ръчно проследяване без контролери. С непрекъснато нарастващия брой игри и дейности, които изпълнява...