Инсталиране и настройка на NTP сървър под CentOS 7 и Scientific Linux 7Съдържание:
1. Предварителна информацияВ добре проектираната и поддържана HPC инфраструктура, всички изчислителни сървъри използват специално изграден за техните нужди локален NTP сървър. Това позволява всички изчислителни сървъри да сверят часовниците си спрямо един и същ източник на време, използвайки NTP клиент. Подобно йерархично подчинение на сверяването помага лесно да бъде проследено едно и също събитие, протичащо едновремено върху два или повече изчислителни сървъри, записи за което могат да бъдат намерени в журналните ("log") файлове на сървърите (в тези записи има и времето, с точност до секунда или милисекунда). Също така, някои изчислителни процеси, които се изпълняват паралелно на няколко изчислителни сървъра, се нуждаят от прецизно сверени локални часовници на сървърите и ако такова сверяване липсва, може да се стигне до забавяне на изчислитенията или техния провал. По подразбиране, дистрибуциите CentOS 7 и Scientific Linux 7 предлагат пакета chrony, който може (в зависимост от конфигурацията) да се използва за изграждането и на NTP сървър, и на NTP клиент. Този документ показва как на базата на пакета chrony да бъде изграден NTP сървър, за сверяване на часовниците в системите в HPC инфраструктура.
2. Инсталиране на NTP софтуераВ зависимост от инсталираната дистрибуция, вие може да имате или не инсталиран пакета chrony. Винаги е добре да проверите дали той е инсталиран, изпълнявайки следния команден ред (не е нужно да сте супер потребител): $ rpm -q chrony Ако пакетът е инсталиран, ще бъде изведена информация за името и версята на пакета: chrony-3.2-2.el7.x86_64 В случай, че не бъде изведена информация за пакета, трябва да инсталирате chrony чрез # yum install chrony
3. Настройка, стартиране и проверка на работата на NTP сървъраУверете се, че достъп до файла # chown root:chrony /etc/chrony.keys # chmod 640 /etc/chrony.keys След това, създайте копие на файла # cp /etc/chrony.conf /etc/chrony.conf.orig Отворете файла server ntp0.nl.net iburst server ntp1.nl.net iburst server ntp2.nl.net iburst server ntp0.ipv6.fau.de iburst server ntp1.ipv6.fau.de iburst server ntp2.ipv6.fau.de iburst server ntp3.ipv6.fau.de iburst server ntps1-0.uni-erlangen.de iburst server ntps1-1.uni-erlangen.de iburst server ntps1-2.uni-erlangen.de iburst driftfile /var/lib/chrony/drift makestep 1.0 3 rtcsync allow 192.168.122.0/24 allow 2001:67c:20d0:ffff::/64 keyfile /etc/chrony.keys logdir /var/log/chrony log measurements statistics tracking Отбележете списъка с референтни сървъри (всички декларации, които започват със След като запазите така направените промени в # systemctl restart chronyd и се убедете, че той ще се стартира при зареждане на системата: # systemctl enable chronyd Добре е след тези промени да проверите статуса на # systemctl status chronyd Ако няма проблеми с новите деклрации, направени във файла ● chronyd.service - NTP client/server Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2019-04-03 23:58:22 EEST; 12min ago Docs: man:chronyd(8) man:chrony.conf(5) Process: 21592 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=0/SUCCESS) Process: 21599 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS) Main PID: 21591 (chronyd) CGroup: /system.slice/chronyd.service └─21591 /usr/sbin/chronyd Изчакайте поне 10-15 секунди след рестартирането/стартирането на демона # chronyc tracking При успешно сверяване, ще видите информация подобна на следната: Reference ID : 83BC03DE (ntp2.rrze.uni-erlangen.de) Stratum : 2 Ref time (UTC) : Thu Apr 04 01:06:24 2019 System time : 0.000385237 seconds fast of NTP time Last offset : +0.000451235 seconds RMS offset : 0.000451235 seconds Frequency : 3.504 ppm slow Residual freq : +96.069 ppm Skew : 0.089 ppm Root delay : 0.164173633 seconds Root dispersion : 0.001770183 seconds Update interval : 2.2 seconds Leap status : Normal При липсата на комуникация с референтните сървъри, ще виждате следното (забележете "Not synchronised" в края): Reference ID : 00000000 () Stratum : 0 Ref time (UTC) : Thu Jan 01 00:00:00 1970 System time : 0.000000000 seconds slow of NTP time Last offset : +0.000000000 seconds RMS offset : 0.000000000 seconds Frequency : 3.397 ppm slow Residual freq : +0.000 ppm Skew : 0.000 ppm Root delay : 1.000000000 seconds Root dispersion : 1.000000000 seconds Update interval : 0.0 seconds Leap status : Not synchronised Допълнителна информация относно сверяването, която може да помогне при анализ и отстраняване на проблеми, може да намерите в следните журнални ("log") файлове: След като бъде сверен локалния часовник, NTP сървъра ще започне да обслужва заявките на клиентите (не преди това).
4. Генериране на споделени ключове за удостоверяване на сървъра от страна на NTP клиентитеЗа да може клиент на така изградения NTP сървър, да бъде сигурен, че наистина комуникира с този сървър (а не с някой друг, който злонамерено се представя като оригиналния, чрез IP или DNS измама), е нужно комуникацията с този сървъра да се подписва цифрово с използване на криптографски ключове. Генерирането и обмяната на ключа между двата участника в NTP комуникацията (NTP сървър и NTP клиент), следва протокола описан в част 5 на този документ. Тук е описан процеса по генерирането. За всеки клиент трябва да се генерира по един уникален ключ и този ключ да се инсталира и при сървъра и при клиента (такъв ключ се нарича "споделен"). Не използвайте един ключ за повече от един клиент - това ограничение се налага поради високите изисквания относно сигурността на комуникацията в HPC инфраструктурата, свързана с дистанционното сверяване на локалните часовници на сървърите. Генерирането на ключа може да се извърши на произволна сигурна Linux-базирана система (може да използвате работна станция, а не системата, в която работи NTP сървъра). За целта трябва да укажете парола (до 4096 бита) и хеш-функция, на база на която ключа да бъде изчислен от паролата. Това може да направите поне по два начина, при това без да е нужно да имате права на super user или root:
5. Описание на идеята (протокола), за генериране и обмен на ключ за целите на цифровото подписване на NTP комуникациятаПротоколът съдържа следните етапи:
|
Последна актуализация: 31 май 2019
2019 УНИТе, Веселин Колев