Синхронизировать время в сети ntp debian. Базовая настройка сервера Debian после установки. Установка утилит mc, htop, iftop
Точное время на компьютере служит не только для сверки человеком даты и времени, но так же выполняет много других важных задач. Например, попробуйте перевести своё время на несколько часов назад или вернуться в прошлое указав в настройках 19хх год. Теперь зайдите с такой датой на google.com. Скорее всего вы потерпите полное фиаско.
В корпоративной среде неправильно настроенное время может вызывать массу других ошибок: от невозможности аутентификации пользователя в системе до… не будем о грустном.
Есть несколько способов настройки даты и времени. Помните, что данный процесс затрагивает системные настройки и поэтому требует привилегий root пользователя.
Способ №1
Представляет из себя самый простой способ. Наиболее предпочтителен для новичков. Настройка осуществляется через мастер в псевдографическом режиме.
Dpkg-reconfigure tzdata
Способ №2
Практически идентичен способу №1. Прост и удобен, но на сей раз только в текстовом режиме. Всё что от вас требуется следовать подсказкам мастера
Способ №3
Одна из утилит systemd
Timedatectl set-timezone <название зоны>
Просмотр доступных зон
Timedatectl list-timezones
Способ №4
С помощью утилиты ntpdate . По умолчанию данная утилита не установлена.
Apt install ntp ntpdate
Добавьте ntp-сервер в конфигурационный файл /etc/ntp.conf ищите строки начинающиеся с pool. Более подробно о синтаксисе этого файла man ntp.conf
Остановим службу сетевого времени для обновления
Service ntp stop
Получаем данные с ntp-сервера
Ntpdate -s <адрес ntp-сервера>
Запускаем службу обратно
Service ntp start
Способ №5
Ручная настройка. Пишем в файл /etc/timezone нужную временную зону, например Europe/Moscow
Echo Europe/Moscow > /etc/timezone
Перезаписываем данные о временной зоне.
Ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
Получаем данные с ntp-сервера
NTP сервер достаточно полезная штука которая позволит раздать «время» компьютерам в локальной сети. Это очень полезно, особенно в случае использования программ семейства 1С, которые не очень любят если время на клиентах или на сервере различается. Самым простым и наиболее популярным сервером времени в nix системах я считаю NTP сервер. NTP сервер по идее уже идет при базовой установке системы, на всякий случай произведем установку перед настройкой сервера NTP на базе Debian 8.
Произведем установку сервера NTP:
Apt-get install ntp ntpdate
Теперь настроем конфигурационный файл:
Nano /etc/ntp.conf
Очень важно! 13 января 2014 года стало известно о возможности совершения массовых DDoS-атак через незащищенный демон ntpd. Поэтому вам следует без необходимости не разрешать доступ к вашему NTP серверу извне. В Debian 8 по умолчанию доступ из вне включен, но если у вас другой дистрибутив, то следует добавить в файл /etc/ntp.conf следующие строки:
Disable monitor restrict -4 default kod nomodify notrap nopeer noquery restrict -6 default kod nomodify notrap nopeer noquery restrict -4 127.0.0.1 restrict -6::1
Примерный листинг файла конфигурации, с русскими комментариями:
#Список серверов для синхронизации времени server 0.ru.pool.ntp.org iburst prefer #Этот сервер будет основным для синхронизации server 1.ru.pool.ntp.org iburst server 2.ru.pool.ntp.org iburst server 3.ru.pool.ntp.org iburst #Отключим мониторинг disable monitor #Файл смещения driftfile /var/db/ntpd.drift #Файл логов NTP сервера logfile /var/log/ntpd.log #Разрешим изменять время нашего сервера через локальный интерфейс restrict 127.0.0.1 #Разрешим изменение времени с выбранных нами серверов restrict 0.ru.pool.ntp.org noquery notrap restrict 1.ru.pool.ntp.org noquery notrap restrict 2.ru.pool.ntp.org noquery notrap restrict 3.ru.pool.ntp.org noquery notrap #Наконец разрешим доступ к серверу времени только из нашей локальной сети restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap nopeer #Если необходимо, то откроем доступ отовсюду. (Это так же даст доступ к вашему NTP серверу из сети интернет, если сервер к нему подключен и к нему открыт доступ) #restrict 0.0.0.0 mask 0.0.0.0 nomodify notrap nopeer
Выбираем пул серверов из временной зоны .
Теперь сохраняем файл конфигурации и перезапускаем наш демон:
Service ntp restart
Проверьте файл логов на наличие ошибок, если все хорошо, то вам достаточно подождать минут 10-15, до того как сервер автоматически синхронизируется с выбранными серверами. Для того что бы это проверить, введите:
Ntpq -c peers
Знак + перед адресом указывает на сервер с которым была последняя синхронизация. Так же можно синхронизироватся с самим собой:
Ntpdate -q localhost
или синхронизироватся с выбранным сервером:
Ntpdate адрес_сервера #Наприммер 0.ru.pool.ntp.org
Если вам нужно сменить временную зону
, то необходимо заменить файл /etc/localtime, для этого достаточно удалить старый файл, и выбрать необходимую зону из каталога /usr/share/zoneinfo/. Напирмер у меня зона Екатеринбург, и я меняю ее на Москву:
Rm /etc/localtime ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
Синхронизация Windows с NTP сервером на Linux
Если ваш NTP сервер имеет стратум ниже 2 или 3, то Windows машины не будут синхронизироаться с вашим NTP сервером на Linux. Но и это достаточно просто решить. Для синхронизации Windows систем через NTP сервер установленный на Linux (Debian, Ubuntu и пр.) можно использовать командную строку:
Net time \\IP_АДРЕС_СЕРВЕРА_NTP /set /yes
И рабочая станция под Windows синхронизируется с вашим NTP сервером на Linux системе. Как вариант, создать bat файл, и добавить его в автозагрузку Windows. После чего, синхронизация времени будет происходить после каждой загрузке ОС.
После установки нового сервера приходится выполнять один и тот же набор стандартных настроек. Сегодня мы займемся базовой настройкой сервера под управлением операционной системы Debian . Я приведу практические советы по небольшому увеличению безопасности и удобству администрирования, основанные на моем личном опыте.
Данная статья является частью единого цикла статьей про сервер .
Введение
Любая работа с сервером после чаще всего начинается со стандартных обязательных действий, без которых либо не получится продвинуться дальше, либо будет неудобно работать. Например, вам в любом случае необходимо выполнить сетевые настройки, желательно обновить систему и установить часовой пояс. Рекомендуется сразу настроить автообновление времени, подрихтовать параметры sshd, установить midnight commander и выполнить другие настройки.
Об этом я хочу рассказать в статье. Я буду делиться своим реальным опытом работы. Это не значит, что нужно делать так, как я. Я могу в чем-то ошибаться, что-то делать не так удобно, как можно было бы сделать. Это просто советы, которые кому-то помогут узнать что-то новое, а кто-то возможно поделится со мной чем-то новым для меня, либо укажет на мои ошибки. Мне бы хотелось, чтобы это было так. Своими материалами я не только делюсь с вами знаниями, но и сам узнаю что-то новое в том числе и из комментариев и писем на почту.
Указываем сетевые параметры
Итак, у нас в наличии только что установленная система. Узнать или проверить ее версию можно командами:
# uname -a Linux debian10 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5 (2019-06-19) x86_64 GNU/Linux # lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 10 (buster) Release: 10 Codename: buster
Посмотреть список пакетов, готовых к обновлению, можно с помощью команды:
# apt list --upgradable
Теперь выполним простое обновление всех пакетов системы:
Ключ upgrade выполняет только обновление одной версии пакета на другую, более свежую. Он не будет устанавливать или удалять пакеты, даже если это необходимо для обновления других. Это наиболее безопасный и надежный вариант обновления, но он может обновить не все. Например, с ее помощью не обновить ядро до более свежей версии.
Ключ dist-upgrade или full-upgrade (это одно и то же) в дополнение к upgrade обрабатывает все изменения зависимостей для новых пакетов и во время работы может удалять ненужные и ставить необходимые пакеты для обновления. Вот выдержка из документации по поводу этих двух ключей.
Так что после обычного обновления, делаем еще full-upgrade.
# apt full-upgrade Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... Done The following packages were automatically installed and are no longer required: dh-python guile-2.0-libs libbind9-140 libdns162 libicu57 libisc160 libisccc140 libisccfg140 liblvm2app2.2 liblvm2cmd2.02 liblwres141 libperl5.24 libpython3.5-minimal libpython3.5-stdlib linux-image-4.9.0-3-amd64 python3-distutils python3-lib2to3 python3.5 python3.5-minimal rename sgml-base tcpd xml-core Use "apt autoremove" to remove them. 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Мне предлагается удалить старые пакеты, которые больше уже не нужны. Это зависимости от старых версий софта, который уже обновился и получил новые пакеты из зависимостей, а эти ему больше не нужны. Очистим их командой:
На этом обновление системы закончено. Если вы хотите обновить версию релиза, например , то читайте отдельный материал.
Настройка ssh
Теперь внесем некоторые изменения в настройки сервера ssh . Я рекомендую его запускать на нестандартном порту для исключения лишних общений с ботами, которые регулярно сканируют интернет и подбирают пароли пользователей по словарям.
Существует расхожее мнение, что менять порт ssh это наивность, а не защита. Надо просто настроить сертификаты, fail2ban или еще каким-то образом защитить ssh порт, к примеру, с помощью ограничений iptables, и т.д. Тем не менее, я все же рекомендую порт сменить на нестандартный. Даже если у вас все защищено от подбора паролей, так как вы используете сертификаты, лишние запросы к ssh порту тратят ресурсы сервера, хоть и не очень большие. Идет установка соединения, обмен рукопожатиями и т.д. Зачем вам это нужно?
По-умолчанию в Debian, впрочем как и в любом другом дистрибутиве Linux, ssh сервер работает на 22 порту. Изменим этот порт, к примеру, на 23331. Так же я еще изменяю конфигурацию для разрешения подключения по ssh пользователя root с использованием пароля. В Debian из коробки пользователь root по ssh паролем авторизовываться не может. Изменим и это. Открываем файл настроек:
# nano /etc/ssh/sshd_config
И изменяем там следующие строки. Приводим их к виду:
Port 23331 PermitRootLogin yes
Сохраняем изменения и перезапускаем сервер ssh следующей командой:
# service sshd restart
Проверяем изменения:
# netstat -tulnp | grep ssh tcp 0 0 0.0.0.0:23331 0.0.0.0:* LISTEN 925/sshd tcp6 0 0:::23331:::* LISTEN 925/sshd
Все в порядке, сервер слушает 23331 порт. Теперь новое подключение будет осуществлено только по порту 23331. При этом, после перезапуска ssh, старое подключение не будет разорвано.
Я знаю, что многие возражают против подключения рутом к серверу. Якобы это небезопасно и т.д. и т.п. Мне эти доводы кажутся не убедительными. Не понимаю, в чем может быть проблема, если у меня нормальный сложный пароль на root, который не получится подобрать или сбрутить. Ни разу за всю мою работу системным администратором у меня не возникло проблем с этим моментом. А вот работать так значительно удобнее, особенно, когда необходимо оперативно куда-то подключиться по форс мажорным обстоятельствам.
Отдельно тему подключения к серверу под root я рассмотрел в статье про . Кому интересно, переходите в нее и делитесь своим мнением на этот счет.
Установка утилит mc, htop, iftop
Следующим шагом я настраиваю некоторые полезные утилиты, которыми регулярно пользуюсь в повседневной работе. Первая из них это всем известный двухпанельный файловый менеджер Midnight Commander. Установим mc на наш сервер:
# apt install mc
И сразу же для него включаю подсветку синтаксиса всех файлов, которые не обозначены явно в файле /usr/share/mc/syntax/Syntax синтаксисом для sh и bash скриптов. Этот универсальный синтаксис нормально подходит для конфигурационных файлов, с которыми чаще всего приходится работать на сервере. Перезаписываем файл unknown.syntax . Именно этот шаблон будет применяться к.conf и.cf файлам, так как к ним явно не привязано никакого синтаксиса.
# cp /usr/share/mc/syntax/sh.syntax /usr/share/mc/syntax/unknown.syntax
Я сразу же ставлю редактором по-умолчанию mcedit . Для этого просто выбираю его из меню при первом редактировании какого-нибудь файла. Если у вас такое меню не появляется, можете вызвать его сами и выбрать необходимый редактор по-умолчанию:
# select-editor Select an editor. To change later, run "select-editor". 1. /bin/nano <---- easiest 2. /usr/bin/mcedit 3. /usr/bin/vim.tiny Choose 1-3 : 2
# apt install htop
Полезной утилитой, позволяющей смотреть сетевую загрузку в режиме реального времени, является iftop . Очень рекомендую. Более простого и удобного инструмента мне не попадалось, хотя я много перепробовал подобных вещей. Устанавливаем iftop на сервер:
# apt install iftop
Настройка и обновление времени в Debian
Теперь проверим установленный часовой пояс, время и включим автоматическую синхронизацию времени с удаленного сервера. Очень подробно этот вопрос я рассмотрел в отдельной статье — .
Узнать дату, время, часовой пояс можно командой date :
Если все указано верно, то менять ничего не нужно. Если же у вас неправильное время или указан часовой пояс не соответствующий вашему, то настроить это можно следующим образом. Сначала обновим часовые пояса:
# apt install tzdata
Теперь выберем правильный часовой пояс с помощью команды:
# dpkg-reconfigure tzdata
Выбирая соответствующие пункты визарда, указываете свой часовой пояс.
# apt install ntpdate
И синхронизируем время:
# ntpdate-debian 12 Aug 14:30:21 ntpdate: adjust time server 89.109.251.21 offset 0.004529 sec
Если получаете ошибку:
Значит у вас уже работает служба ntp. Ее нужно остановить и обновить время вручную. Хотя если она работает, то у вас и так должно быть все в порядке.
Для того, чтобы время автоматически синхронизировалось без вашего участия с определенной периодичностью, используется инструмент ntp . Установим его:
# apt install ntp
После установки он сам запустится и будет автоматически синхронизировать часы сервера. Проверим, запустился ли сервис ntpd:
# netstat -tulnp | grep ntp udp 0 0 10.20.1.16:123 0.0.0.0:* 8855/ntpd udp 0 0 127.0.0.1:123 0.0.0.0:* 8855/ntpd udp 0 0 0.0.0.0:123 0.0.0.0:* 8855/ntpd udp6 0 0 fe80::cce1:23ff:fe4:123:::* 8855/ntpd udp6 0 0::1:123:::* 8855/ntpd udp6 0 0:::123:::* 8855/ntpd
Настройка firewall (iptables) в Debian
В качестве firewall в Debian по-умолчанию используется iptables , его и будем настраивать. Изначально фаервол полностью открыт и пропускает весь трафик. Проверить список правил iptables можно следующей командой:
# iptables -L -v -n Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
Обращаю пристальное внимание на то, что настраивать firewall без прямого доступа к консоли сервера не следует. Особенно, если вы не очень разбираетесь в этом и копируете команды с сайта. Шанс ошибиться очень высок. Вы просто потеряете удаленный доступ к серверу.
Создадим файл с правилами iptables:
# mcedit /etc/iptables.sh
Проверяем, что правила записались в файл /etc/iptables_rules . Если их там нет, то записываем их вручную.
# /sbin/iptables-save > /etc/iptables_rules
Правила применились и произошла их запись в файл /etc/iptables_rules . Теперь нужно сделать так, чтобы они применялись при загрузке сервера. Для этого делаем следующее. Открываем файл /etc/network/interfaces и добавляем в него строку pre-up iptables-restore < /etc/iptables_rules Должно получиться вот так:
# cat /etc/network/interfaces allow-hotplug eth0 iface eth0 inet dhcp pre-up iptables-restore < /etc/iptables_rules
Для проверки перезагрузите сервер и посмотрите правила iptables. Должен загрузиться настроенный набор правил из файла /etc/iptables_rules .
Настройка логов cron
По-умолчанию, в Debian нет отдельного лог файла для событий cron, они все сыпятся в общий лог /var/log/syslog . Лично мне это не очень нравится, я предпочитаю выводить эти события в отдельный файл. Об этом я написал отдельно — . Рекомендую пройти по ссылке и настроить, если вам это необходимо. Там очень кратко и только по делу, не буду сюда копировать эту информацию.
Установка и настройка screen
Я привык в своей работе пользоваться консольной утилитой screen. Изначально она задумывалась как инструмент, который позволяет запустить что-то удаленно в консоли, отключиться от сервера и при этом все, что выполняется в консоли продолжит свою работу. Вы сможете спокойно вернуться в ту же сессию и продолжить работу.
Первое время я именно так и использовал эту утилиту. Редко ее запускал, если не забывал, когда выполнялся какой-то длительный процесс, который жалко было прервать из-за случайного обрыва связи или необходимости отключить ноутбук от сети и куда-то переместиться.
Позже я решил подробнее ознакомиться с этим инструментом и обнаружил, что там есть несколько удобных моментов, которые можно использовать в ежедневной работе. Вот как использую утилиту screen я. При подключении к серверу у меня запускается screen с тремя окнами 1, 2, 3. Первое окно автоматически переходит в каталог /, второе в /etc, третье в /var/log. Я осмысленно назвал эти окна: Main, etc, logs соответственно. Внизу находится строка состояния, в которой отображен список всех открытых окон и подсвечено активное окно.
С помощью горячих клавиш я очень быстро переключаюсь между окнами в случае необходимости. Вот как выглядит мое рабочее окно ssh подключения:
Переключаюсь между окнами с помощью стандартных горячих клавиш screen: ctrl+a 1, ctrl+a 2, ctrl+a 3. Я специально изменил нумерацию, чтобы она начиналась не с 0 по-дефолту, а с 1. Так удобнее на клавиатуре переключать окна. Кнопка 0 находится слишком далеко от 1 и 2.
Чтобы настроить такую же работу screen, как у меня, достаточно выполнить несколько простых действий. Сначала устанавливаем screen:
# apt install screen
Создаем в каталоге /root конфигурационный файл .screenrc следующего содержания:
# mcedit /root/.screenrc #Выводим строку состояния hardstatus alwayslastline "%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<" # Добавляем некоторые настройки startup_message off defscrollback 1000 defutf8 on shell -$SHELL # Создаем несколько окон chdir screen -t Main 1 chdir /etc screen -t etc 2 chdir /var/log screen -t logs 3 # Активное первое окно после запуска select 1
Для знакомства с настройками, горячими клавишами и вариантами применения утилиты screen можно по адресу http://itman.in/ssh-screen/ Мне помог этот материал. Написано кратко, по делу и доходчиво.
Заключение
Теперь можно перезагрузить сервер и проверить, все ли в порядке. У меня все в порядке, проверил:) На этом базовая настройка сервера debian окончена. Можно приступать к конфигурации различных сервисов, под которые он настраивался. Об этом я рассказываю в отдельных статьях.
Напоминаю, что данная статья является частью единого цикла статьей про сервер .
Онлайн курс "Сетевой инженер"
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные сети, рекомендую познакомиться с онлайн-курсом «Сетевой инженер» в OTUS. Это авторская программа в сочетании с удалённой практикой на реальном оборудовании и академическим сертификатом Cisco! Студенты получают практические навыки работы на оборудовании при помощи удалённой онлайн-лаборатории, работающей на базе партнёра по обучению - РТУ МИРЭА: маршрутизаторы Cisco 1921, Cisco 2801, Cisco 2811; коммутаторы Cisco 2950, Cisco 2960. Особенности курса:- Курс содержит две проектные работы.;
- Студенты зачисляются в официальную академию Cisco (OTUS, Cisco Academy, ID 400051208) и получают доступ ко всем частям курса «CCNA Routing and Switching»;
- Студенты могут сдать экзамен и получить вместе с сертификатом OTUS ещё сертификат курса «CCNA Routing and Switching: Scaling Networks»;
26 октября 2014 года был принят закон о смене часовых поясов в России. С данным законопроектам повсеместно возникали проблемы с синхронизацией местного времени по протоколу NTP.
Сегодня мы рассмотрим один из способов решения проблемы синхронизации системного времени на серверах и десктопных машинах Ubuntu\Debian. Решение о котором сегодня будет идти речь, самое логичное, верное и эффективное.
Все просто!
За часовые пояса в системе Ubuntu и Debian отвечает пакет tzdata. Для корректной работы NTP синхронизации и системного времени нужно обновить базу часовых поясов tzdata. Так же, мы рассмотрим установку и настройку NTP клиента для синхронизации системного времени с NTP серверами или кластерами на примере Ubuntu,Debian.
Обновление tzdata - исправляем системного время на Ubuntu или Debian
На сегодняшний день обновления для tzdata появились с стандартных репозиториях системы Ubuntu или Debian. Обновление базы часовых поясов tzdata не составляет, абсолютно, никаких сложностей.
Для обновления tzdata из репозиториев необходимо проделать следующую последовательность операций:
1. Обновляем дерево пакетов подключенных репозиториев.
Sudo apt-get update
2. Производим установку более новой версии tzdata.
Sudo apt-get install tzdata
3. Делаем конфигурацию tzdata и выбираем наш часовой пояс
Sudo dpkg-reconfigure tzdata
4. Перезагружаем систему для обновления системного времени стороннего программного обеспечения
Sudo reboot
Установка и настройка NTP клиента на Ubuntu или Debian
Периодическая синхронизация и корректировка системного времени необходима для серверов и желательна для десктопных систем, т.к. аппаратные часы BIOS имеют значимую погрешность и с закономерной периодичностью "убегают" в большую или меньшую сторону.
Установка и настройка NTP клиента в Ubuntu или Debian можно считать тривиальной задачей, не вызывающая никаких сложностей и вопросов. Установка и настройка Клиента проходит в 3 этапа:
1. Установка NTP клиента:
Sudo apt-get install ntp
2. Настройка NTP клиента при помощи текстового редактора и файла конфигураций
# Проверьте и, при необходимости, замените в файле конфигураций список NTP # серверов для синхронизации. По умолчанию они такие: server 0.ubuntu.pool.ntp.org server 1.ubuntu.pool.ntp.org server 2.ubuntu.pool.ntp.org server 3.ubuntu.pool.ntp.org # Если вы не знаете какие сервера лучше использовать для синхронизации - # рекомендуем воспользоваться данным кластером серверов: http://www.pool.ntp.org/
3. Проверяем пул адресов для синхронизации, который выдает кластер или сервера синхронизации, указанные в файле конфигураций /etc/ntp.conf:
Если у вас будет вывод аналогичный этому - все впорядке, ntp синхронизация системного времени корректно работает:
Remote refid st t when poll reach delay offset jitter =========================================================== *webhost2.mitht. 193.67.79.202 2 u 52 64 17 16.412 -35.137 0.886 mail.sonur.ru .PPS. 1 u 48 64 17 79.297 -58.992 1.493 guard.qword.ru .INIT. 16 u - 64 0 0.000 0.000 0.000 ns.davydkovo.ne 130.173.91.58 2 u 45 64 17 23.343 -40.480 1.351 golem.canonical 192.93.2.20 2 u 45 64 17 66.089 -34.140 1.669
4. Перезапускаем систему для корректно работы ntp клиента и синхронизации времени при загрузке. В принципе, все корректно работает и после установки, но при использовании стороннего или специфического программного обеспечения, необходима перезагрузка, проще перезагрузить систему:
Sudo reboot
На данном этапе установка и настройка NTP клиента синхронизации системного времени завершена. Теперь ваше система прозрачно и незаметно корректирует системное время при помощи более точных серверов синхронизации времени по протоколу NTP.
Вот мы и решили 2 основных вопроса, связанных с точным временем на вашем сервере или десктопной системе Ubuntu, Debian:
- Первый вопрос корректировки связан со сменой часовых поясов на территории Россий, связанный с законодательством, вступившим в силу 26 октября 2014 года, и базой данных часовых поясов tzdata.
- Второй вопрос корректировки точного системного времени связан с установкой и настройкой NTP клиента и NTP синхронизацией системного времени с более точными серверами или кластерами.
По итогам прочтения статьи, у вас должно возникнуть точное понимание принципов корректировки системного времени и NTP синхронизации вашего сервера, декстопной системы Ubuntu или Debian с NTP серверами или кластерами.
|Точное хронометрирование – очень важный аспект корректной работы многих современных программ. Из-за неправильного времени на сервере могут возникнуть ошибки, и данные могут быть повреждены (например, при обновлении БД или логировании).
В Debian 9 синхронизация времени встроена и включена по умолчанию; за неё отвечает стандартный сервер ntpd, предоставляемый пакетом ntp. Данный мануал ознакомит вас с базовыми командами для управления временем, научит проверять состояние ntpd и устанавливать другие сервисы сетевого времени.
Требования
Для работы вам понадобится сервер Debian 9 и пользователь с доступом к sudo (мануал нужно выполнить в сессии этого пользователя). Все необходимые инструкции по настройке вы найдете .
Основные команды для управления временем
date – основная команда для определения времени на сервере. Любой пользователь может использовать её, чтобы узнать дату и время:
date
Tue Sep 4 17:51:49 UTC 2018
Обычно по умолчанию серверы используют часовой пояс UTC (Coordinated Universal Time) – это всемирное координированное время. UTC последовательно устанавливает время на серверах и минимизирует ошибки в случае если сервера инфраструктуры находятся в разных часовых поясах.
Чтобы изменить часовой пояс, используйте команду timedatectl.
Запросите список доступных поясов:
timedatectl list-timezones
Перемещаться вниз по списку можно с помощью клавиши пробела, а вверх – с помощью b. Выберите часовой пояс, запишите его и нажмите q, чтобы закрыть список.
Теперь установите часовой пояс с помощью timedatectl set-timezone. Используйте следующую команду, указав в ней требуемый часовой пояс:
sudo timedatectl set-timezone America/New_York
Примечание: Вместо America/New_York укажите необходимый часовой пояс.
Убедитесь, что пояс изменился:
date
Tue Sep 4 13:52:57 EDT 2018
Аббревиатура часового пояса будет отражать новое значение.
Состояние ntpd
По умолчанию для синхронизации времени с пулом внешних серверов Debian 9 использует стандартный сервер ntpd. Проверить его состояние можно с помощью systemctl:
sudo systemctl status ntp
ntp.service - LSB: Start NTP daemon
Loaded: loaded (/etc/init.d/ntp; generated; vendor preset: enabled)
Active: active (running) since Tue 2018-09-04 15:07:03 EDT; 30min ago
Docs: man:systemd-sysv-generator(8)
Process: 876 ExecStart=/etc/init.d/ntp start (code=exited, status=0/SUCCESS)
Tasks: 2 (limit: 4915)
CGroup: /system.slice/ntp.service
└─904 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 105:109
. . .
Строка active (running)указывает, что сервер работает правильно. Получить больше информации можно с помощью команды ntpq:
ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
0.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
1.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
2.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
3.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
-eterna.binary.n 204.9.54.119 2 u 240 256 377 35.392 0.142 0.211
-static-96-244-9 192.168.10.254 2 u 60 256 377 10.242 1.297 2.412
+minime.fdf.net 83.157.230.212 3 u 99 256 377 24.042 0.128 0.250
*t1.time.bf1.yah 98.139.133.62 2 u 31 256 377 11.112 0.621 0.186
+x.ns.gin.ntt.ne 249.224.99.213 2 u 108 256 377 1.290 -0.073 0.132
-ord1.m-d.net 142.66.101.13 2 u 473 512 377 19.930 -1.764 0.293
ntpq – это инструмент запросов ntpd. Флаг –p собирает информацию о серверах NTP, к которым подключен ntpd. Ваш вывод будет немного другим, но в нем будут стандартные серверы пула Debian и несколько других серверов. У ntpd может уйти несколько минут на установку соединения.
Переход с ntpd на systemd-timesyncd
Для замены ntpd можно использовать встроенный демон timesyncd systemd. timesyncd – простая альтернатива ntpd, интегрированная с systemd. Однако при переходе следует учитывать, что timesyncd не работает в качестве сервера времени и использует менее сложные методы синхронизации системного времени. Если вы используете сложные распределенные системы реального времени, лучше оставаться с ntpd.
Чтобы перейти на timesyncd, сначала удалите ntpd.
sudo apt purge ntp
Затем запустите timesyncd:
sudo systemctl start systemd-timesyncd
Проверьте его состояние:
sudo systemctl status systemd-timesyncd
systemd-timesyncd.service - Network Time Synchronization
Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/systemd-timesyncd.service.d
└─disable-with-time-daemon.conf
Active: active (running) since Tue 2018-09-04 16:14:23 EDT; 1s ago
Docs: man:systemd-timesyncd.service(8)
Main PID: 3399 (systemd-timesyn)
Status: "Synchronized to time server 198.60.22.240:123 (0.debian.pool.ntp.org)."
Tasks: 2 (limit: 4915)
CGroup: /system.slice/systemd-timesyncd.service
└─3399 /lib/systemd/systemd-timesyncd
Чтобы получить сведения о текущем восприятии времени systemd, введите:
timedatectl
Local time: Tue 2018-09-04 16:15:34 EDT
Universal time: Tue 2018-09-04 20:15:34 UTC
RTC time: Tue 2018-09-04 20:15:33
Time zone: America/New_York (EDT, -0400)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no
Команда выведет местное время, универсальное время (которое может совпадать с местным, если вы не переключались с часового пояса UTC) и информацию о состоянии времени в сети. Network time on: yes означает, что сервис timesyncd включен, а NTP synchronized: yes указывает, что время было успешно синхронизировано.
Заключение
Теперь вы умеете управлять системным временем сервера Debian 9.