Debian настройка ntp клиента

Обновлено: 07.07.2024

Мы уже неоднократно поднимали вопрос важности синхронизации времени, особенно сейчас, когда даже в небольших сетях появляется все больше и больше служб критичных к точному времени. Это криптография, системы контроля доступа и видеонаблюдения, кассовые узлы. В этих условиях точности обычных аппаратных часов начинает не хватать и хотя во многих случаях допускается разбег времени не более пяти минут, лучше не ждать пока это случится (как всегда в самый неподходящий момент), а обеспечить свою инфраструктуру собственным сервером времени. В данной статье мы рассмотрим, как это сделать в системах основанных на Debian.

Перед установкой сервера времени убедитесь. что в вашей системе правильно настроен часовой пояс, проверить и изменить его можно командой:

Данную и все последующие команды следует выполнять с правами суперпользователя.

После установки часового пояса обновите список пакетов и установите пакет NTP-сервера:

Пакет работоспособен сразу после установки и конфигурация из коробки достаточно актуальна, но лучше внести в нее некоторые дополнительные штрихи. Для изменения настроек откроем файл /etc/ntp.conf.

NTP-server-debian-ubuntu-001.jpg

И заменим значения на следующие:

В нашем примере приведены настройки для использования российских серверов времени. Ниже зададим настройку для синхронизации с аппаратными часами на случай отсутствия синхронизации с серверами в интернет:

Затем перейдем к списку контроля доступа, который состоит из сетевых адресов отсортированных по возрастанию адресов и масок. Запись по умолчанию - default соответствует адресу 0.0.0.0 с маской 0.0.0.0, если в записи не указана маска, то автоматически подставляется значение 255.255.255.255, что соответствует конечному хосту.

Кроме адресов строки списка содержат флаги, флаги указывают на те или иные ограничения, если строка не содержит флагов - это означает полный доступ к серверу. По умолчанию список контроля доступа, следующий:

NTP-server-debian-ubuntu-002.jpg

Разберем его подробнее. Первые две строки задают значения по умолчанию, т.е. для любых клиентов, в сетях IPv4 и IPv6:

Перечисленные флаги имеют значения:

Под ними расположены строки, дающие полный доступ к серверу локальной системе:

Отсутствие маски указывает на то, что это конечный узел, а отсутствие флагов предоставляет полный доступ.

При необходимости мы можем добавить свои записи, скажем для клиентов собственной сети с меньшим числом ограничений:

Если нужно запретить доступ к серверу времени, то следует использовать флаг ignore. Допустим, мы хотим запретить доступ для всех клиентов доменной сети, кроме эмулятора PDC:

Расположение строк не имеет значения, так как при запуске сервера все адреса будут отсортированы по возрастанию адреса/маски.

После внесения изменений следует перезапустить службу:

Проверить ее статус можно командой:

Состояние синхронизации с вышестоящими серверами можно узнать командой:

Которая выдаст нам следующий вывод:

NTP-server-debian-ubuntu-003.jpg

На что следует обратить внимание? Прежде всего на символы слева от адреса сервера:

  • * - сервер выбран для синхронизации
  • + - сервер пригодный для синхронизации
  • - - синхронизация с этим сервером не рекомендуется
  • x - сервер недоступен

Затем на колонку refid - показывающее вышестоящий сервер синхронизации и колонку offset, которое показывает расхождение ваших часов с эталоном, при положительном значении наши часы спешат, при отрицательном отстают.

В колонке st указывается stratum - приоритет сервера, а delay содержит задержку ответа от сервера. Как видим, в нашем случае служба времени выбрала для синхронизации сервер с приоритетом 1, который синхронизируется от GPS-часов, несмотря на более высокий уровень задержки при работе с ним.

Ну и не забудьте разрешить доступ к вашему NTP-серверу в брандмауэре, добавив в правила iptables строку:

При необходимости можно ограничить доступ сетевым интерфейсом:

Как видим, настроить собственный сервер времени очень и очень просто, можно просто установить пакет и работать. Но гораздо лучше разобраться с настройками, хотя бы на базовом уровне, после чего для вас конфигурация NTP перестанет быть "китайской грамотой" и вы будете понимать, как именно работает ваш сервер.

Системное время - важный параметр в работе сервера, так как на него завязаны почти все службы. Сегодня я расскажу, как настроить время в сервере Debian - установить его, указать или сменить часовой пояс, а так же настроить автоматическое обновление. Отдельно затрону тему своего сервера времени в локальной сети.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на . Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Данная статья является частью единого цикла статьей про сервер Debian.

Цели статьи

  1. Показать, как смотреть и настраивать системное время в Debian.
  2. Рассказать, как управлять часовыми поясами.
  3. Настроить автоматическую синхронизацию времени через интернет.
  4. Показать настройку своего ntp сервера в информационной системе.

Введение

Во время установки Debian, сервер автоматически настраивает системное время на основе информации из bios. Инсталлятор предлагает вам выбрать только часовой пояс. При этом, если вы не правильно указали часовой пояс (timezone), его без проблем можно изменить после установки.

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

Зачем, собственно, следить за точным временем на сервере, кроме непосредственно удобства восприятия этого времени? Причин может быть много. Перечислю основные, которые пришли в голову.

  • Точное время на сервере необходимо для корректного логирования всех событий и последующего расследования инцидентов. Более того, одинаковое время должно быть на всех серверах, которые участвуют в работе информационной системы. Если это не так, то расследование инцидентов становится затруднительным.
  • В доменной середе Windows для корректной работы протокола аутентификации Kerberos требуется примерно одинаковое время на всех участниках домена. Если ваш сервер Debian является членом домена, важно, чтобы его время не сильно отличалось от времени контроллера домена. Его нужно обязательно синхронизировать с ним.
  • На сервере может располагаться какой-то сервис, который взаимодействует с пользователями. Например, новостной сайт, где в статьях указано точное время публикации. Если неправильно настроить часы или timezone, может возникнуть ситуация, когда для некоторых пользователей опубликованные материалы будут отображаться со временем из будущего.
  • Планировщик cron в своей работе использует системные часы. Если вы хотите предсказуемое поведение запланированных задач, время и часовой пояс должны быть настроены правильно.

Для избежания этих и других проблем, предлагаю приступить к настройке времени, даты и часового пояса на сервере под управлением системы Debian.

Как посмотреть и узнать системное время

Начнем с самого простого - подключимся к серверу по ssh и посмотрим в консоли на текущее время. Сделать это можно с помощью простой команды date.

Посмотреть время на сервере Debian

Wed день недели, в данном случае среда
21 Aug число и месяц, 21-е августа
2019 год
03:38:12 время в формате часы:минуты:секунды
PM обозначение времени суток, am или pm, до или после полудня
MSK часовой пояс, он же timezone

Как вы видите, у нас установлен часовой пояс MSK, текущая дата и время в 12-ти часовом формате. Это не очень удобно. Если вам нужно посмотреть время в 24-х часовом формате, добавьте отображение +%R к date.

Подобные параметры удобно использовать в скриптах. Вот наиболее популярные комбинации просмотра текущего времени, которые использую я.

Различные форматы вывода текущего времени

Также есть еще один способ получить полную информацию о времени сервера Debian - воспользоваться командой timedatectl.

Посмотреть время с помощью timedatectl

Установка и настройка времени в Debian

Для того, чтобы вручную установить дату, используем упомянутую выше команду date, только уже с дополнительными параметрами.

Здесь 08 — месяц, 21 — число, 15 — час, 55 — минуты. Таким образом, формат команды получился вот такой - date MMDDhhmm .

Настройка времени в Debian

То же самое, только через timedatectl.

Если вы получили ошибку - Failed to set time: Automatic time synchronization is enabled, значит у вас уже настроено автоматическое обновление времени. Об этом подробнее мы поговорим ниже. В таком случае timedatectl, в отличие от date, время менять не будет.

С помощью команды date так же можно посмотреть текущее время системы без учета часового пояса, то есть время по UTC.

В выводе видно время относительно нулевого меридиана, без поправок на часовой пояс. После установки корректного времени переходим к настройке часового пояса.

Установка, настройка и изменение часового пояса

Выше я рассказал, как узнать, в каком часовом поясе находятся системные часы сервера debian. В моем случае timezone установлена как MSK, то есть московский часовой пояс. Если у вас указан другой часовой пояс, а вы, к примеру, хотите установить московский, то делается это просто. Смена часового пояса выполняется через timedatectl:

Посмотреть список всех timezоne, доступных для установки на сервере, можно командой:

Часовые пояса в Debian

Перед настройкой или изменением часового пояса, рекомендуется обновить список timezone на сервере. Они периодически меняются.

После того как обновили и настроили часовой пояс, можно приступать к синхронизации времени.

Timedatectl для настройки времени в Debian

В большинстве современных дистрибутивов с systemd служба синхронизации времени уже присутствует в дефолтной установке и реализуется через systemd-timesyncd. Эта служба призвана заменить ntpd. Со слов разработчиков, она легче и быстрее, чем ntpd, плюс интегрирована в systemd, поэтому для автоматической синхронизации времени рекомендуется использовать именно ее.

Тут важно понимать, что systemd-timesyncd не может работать в качестве сервера времени, который мы настроим ниже. Так что, если у вас одиночный сервер, вам вполне подойдет timesyncd. Если же вы хотите использовать свой сервер времени, то надо настраивать ntp.

Для начала, давайте проверим, что у нас настроено в качестве службы обновления времени.

Проверка обновления времени

Синхронизация времени уже включена и работает через timesyncd. Посмотрим ее статус.

Список серверов для синхронизации времени в timedatectl настраивается в конфигурационном файле /etc/systemd/timesyncd.conf.

Синхронизация времени с помощью ntp и ntpdate

Если вам по какой-то причине не подходит описанная выше синхронизация, либо вам нужен свой сервер времени в сети, то timesyncd можно выключить.

Отключение systemd-timesyncd

Покажу теперь простую утилиту ntpdate, с помощью которой можно разово синхронизировать время, не автоматически. Для начала ее нужно установить в систему.

Дальше запускаем для разовой синхронизации.

Если у вас ntpdate выдает ошибку — the NTP socket is in use, exiting, значит у вас уже установлена и запущена служба ntp, которая заняла udp порт 123, необходимый для работы ntpdate. Установкой и настройкой этой службы мы и займемся далее. Также, если ntpdate не работает, посмотрите материал, может это ваш случай.

Для обновления времени сервера можно воспользоваться службой ntp. Ее так же надо установить отдельно.

Это старая проверенная служба времени, которую использовали еще задолго до появления systemd и его юнитов. Запустим ее и добавим в автозагрузку.

После запуска она сразу же автоматически синхронизирует время. Проверим статус службы ntp в Debian.

Настройка ntp

Синхронизация времени через ntp заработала сразу же. Дополнительная настройка не нужна, если вас не интересует свой сервер времени, который мы настроим ниже.

При этом, для проверки статуса службы времени ntp можно использовать утилиту ntpq. Посмотрим статус синхронизации.

Статус синхронизации времени ntp

Поясню значения каждого столбца.

remote Адрес удаленного эталона времени, с которого была синхронизация
refid Указывает, откуда каждый эталон получает точное время. Это могут быть другие сервера времени, система GPS и другое
st Stratum (уровень) это число от 1 до 16, которое указывает на точность эталона. 1- максимальная точность, 16 - сервер недоступен. Уровень вашего сервера будет равен уровню наименее точного удаленного эталона плюс 1.
poll Интервал в секундах между опросами
reach Восьмеричное представление массива из 8 бит, отражающего результаты последних восьми попыток соединения с эталоном. Бит выставлен, если удаленный сервер ответил.
delay Время задержки ответа на запрос о точном времени
offset Разница между вашим и удаленным сервером
jitter Дисперсия (Jitter) - это мера статистических отклонений от значения смещения (поле offset) по нескольким успешным парам запрос-ответ. Чем меньше значение дисперсии, тем лучше, поскольку позволяет точнее синхронизировать время.

Настройка сервера ntp в Debian

Теперь настроим свой сервер времени, с которого другие наши сервера смогут синхронизировать свои часы. Сервер времени ntp использует отдельный одноименный протокол — Network Time Protocol, который для работы использует UDP порт 123. Перед установкой и настройкой службы времени убедитесь, что на фаерволе открыт этот порт.

Файл конфигурации ntp - /etc/ntp.conf. Привожу минимальную достаточную конфигурацию для своего сервера времени.

Так же я обычно отключаю ipv6 протокол, если он не используется. Для этого в файле /etc/default/ntp заменяем параметр на

После изменения конфигурации, перезапустим ntp и проверим статус службы.

Статус ntp

Теперь убедимся, что она запущена.

Все в порядке, служба ntp запущена и готова принимать подключения. Для примера синхронизирую время одной из windows машин с нашим сервером времени.

Синхронизация времени с ntp сервера Debian

Теперь другие компьютеры и серверы могут синхронизировать свои часы с нашего сервера Debian, где мы настроили ntp службу в качестве источника времени для остальных.

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Кратко подведу итог опубликованного материала. Мы рассмотрели практически все, что связано со временем на сервере Debian. Причем захватили нюансы systemd, который все больше забирает на себя функционала.

Я показал как устанавливать время, изменять часовой пояс, разово синхронизировать время с помощью ntpdate и настраивать сервер времени ntpd в локальной сети.

Напоминаю, что данная статья является частью единого цикла статьей про сервер Debian.

Сетевой протокол времени (NTP) предоставляет компаниям уникальную возможность синхронизировать часы всех систем внутри компании. Синхронизация времени важна по многим причинам, начиная от отметок времени приложений и заканчивая безопасностью и правильными записями в журнале.

Когда все системы организации поддерживают разное время, с точки зрения устранения неполадок становится очень сложно определить, когда и при каких условиях может произойти то или иное событие.

NTP предоставляет простой способ гарантировать, что все системы будут поддерживать правильное время, что, в свою очередь, может значительно облегчить нагрузку на администраторов/техподдержку.

NTP работает на основе синхронизации с эталонными часами, также известными как серверы «stratum 0». Все остальные NTP-серверы затем становятся стратовыми серверами более низкого уровня в зависимости от того, насколько они удалены от эталонного сервера.

Начало цепочки NTP - это сервер уровня 1, который всегда напрямую подключен к опорным часам уровня 0. Отсюда серверы нижнего уровня подключаются через сетевое соединение к серверу верхнего уровня.

Обратитесь к диаграмме ниже для более ясного понимания.


Хотя настройка сервера уровня 0 или уровня 1 может быть выполнена, это дорого стоит, и поэтому в этом руководстве основное внимание будет уделено настройке серверов нижнего уровня.

Tecmint имеет базовую конфигурацию хоста NTP по следующей ссылке:

Если это руководство будет отличаться, то вместо того, чтобы все хосты в сети запрашивали общедоступные серверы NTP, один (или, что лучше всего, несколько) сервер (ы) свяжется с общедоступной системой NTP, а затем предоставит время для всех хостов в пределах локальная сеть.

Внутренний сервер NTP часто идеален для экономии пропускной способности сети, а также для обеспечения некоторой повышенной безопасности за счет ограничений NTP и криптографии. Чтобы увидеть, чем это отличается от первой диаграммы, см. Вторую диаграмму ниже.


Шаг 1: Установка NTP-сервера

1. Первым шагом к настройке внутренней структуры NTP является установка программного обеспечения сервера NTP. Программный пакет в Debian под названием «NTP» в настоящее время содержит все серверные утилиты, необходимые для настройки иерархии NTP. Как и во всех руководствах по настройке системы, предполагается доступ с правами root или sudo.

Шаг 1: Настройка NTP-сервера

2. После установки NTP пора настроить серверы более высокого уровня для запроса времени. Файл конфигурации для NTP хранится в « /etc/ntp.conf » и может быть изменен с помощью любого текстового редактора. Этот файл будет содержать полные доменные имена серверов более высокого уровня, ограничения, установленные для этого сервера NTP, и любые другие специальные параметры для хостов, запрашивающих этот сервер NTP.

Чтобы начать процесс настройки, необходимо настроить серверы более высокого уровня. Debian по умолчанию помещает пул Debian NTP в файл конфигурации. Они подходят для большинства целей, но администратор может посетить NIST, чтобы указать определенные серверы или использовать все серверы NIST в циклическом режиме (метод, предложенный NIST).

Для этого руководства будут настроены определенные серверы. Файл конфигурации разбит на несколько основных разделов и по умолчанию настроен для IPv4 и IPv6 (если вы хотите отключить IPv6, об этом будет сказано позже). Чтобы начать процесс настройки, файл конфигурации необходимо открыть в текстовом редакторе.

Первые несколько разделов (файл дрейфа, каталог статистики и статистика) имеют значения по умолчанию. Следующий раздел содержит серверы более высокого уровня, через которые этот сервер должен запрашивать время. Синтаксис каждой записи сервера очень прост:


Шаг 3: Настройка ограничений NTP

3. Следующим шагом является настройка ограничений NTP. Они используются, чтобы разрешить или запретить хостам взаимодействовать с сервером NTP. По умолчанию для NTP установлено время обслуживания для всех, но не разрешена конфигурация для соединений IPv4 и IPv6.

Этот сервер в настоящее время используется только в сети IPv4, поэтому IPv6 был отключен двумя способами. Первое, что было сделано для отключения IPv6 на сервере NTP, - это изменить настройки по умолчанию, которые запускает демон. Это было достигнуто путем изменения строки в « /etc/default/ntp ».

Вернувшись в основной файл конфигурации ( /etc/ntp.conf ), демон NTP будет автоматически настроен на совместное использование времени со всеми хостами IPv4/6, но не разрешит настройку. Это можно увидеть в следующих двух строках:



Теперь серверу необходимо знать, кому разрешено запрашивать у сервера время и что еще им разрешено делать с сервером NTP. Для этого сервера будет использоваться частная сеть 172.27.0.0/16 для построения раздела ограничения.

Эта строка сообщает серверу разрешить любому хосту из сети 172.27.0.0/16 доступ к серверу на время. Параметры после маски помогают контролировать, что любой из хостов в этой сети может делать при запросе к серверу. Давайте посмотрим на каждый из этих вариантов ограничения:


Возможно, вы слышали это слово много раз, а также, возможно, работали с ним.

Тем не менее, я расскажу вам ясно в этой статье о настройке NTP-сервера и NTP-клиента

О настройке Chrony NTP Client мы узнаем позже.

Что такое NTP-сервер?

NTP означает сетевой протокол времени.

Это сетевой протокол, который синхронизирует часы между компьютерными системами по сети.

Он будет сохранять одинаковое время (точное время) для всех систем, которые подключены к NTP-серверу через NTP или клиент Chrony.

NTP обычно может поддерживать время с точностью до десятков миллисекунд по общедоступному Интернету и может достигать точности, превышающей одну миллисекунду, в локальных сетях при идеальных условиях.

Он использует протокол пользовательских дейтаграмм (UDP) на порту номер 123 для отметок времени отправки и получения.

Это клиент / серверное приложение.

Он отправляет и получает временные метки с использованием протокола пользовательских дейтаграмм (UDP) на порту 123.

Что такое NTP-клиент?

NTP-клиент синхронизирует свои часы с сетевым сервером времени.

Что такое Chrony ?

Он может синхронизировать системные часы с большей точностью и может быть особенно полезен для систем, которые не подключены к сети все время.

Зачем нам нужен NTP сервер?

Чтобы все серверы в вашей организации были синхронизированы с точным временем выполнения заданий, основанных на времени.

Чтобы прояснить это, я расскажу вам сценарий.

Скажем, например, у нас есть два сервера (Server1 и Server2).

Server1 обычно выполняет пакетные задания в 10:55, а затем Server2 необходимо выполнить другое задание в 11:00 на основании отчета о завершении задания Server1.

Если обе системы используют в разное время (если одна система опережает другие, другие отстают от этой конкретной), мы не сможем это сделать.

Для этого нам нужно настроить NTP.

Надеюсь, это убрало ваши сомнения по поводу необходимости NTP.

В этой статье мы будем использовать следующую настройку, чтобы проверить работу NTP

СТОРОНА NTP-СЕРВЕРА: Как установить NTP-сервер на Linux?

Не существует разных пакетов для NTP-сервера и NTP-клиента, так как это модель клиент / сервер.

Пакет NTP доступен в официальном репозитории дистрибутива, поэтому используйте его для установки.

Для системы Fedora используйте DNF для установки ntp.

Для систем Debian / Ubuntu используйте команду APT-GET или APT для установки ntp.

Для систем на основе Arch Linux используйте Pacman для установки ntp.

Для систем RHEL / CentOS используйте команду YUM для установки ntp.

Для системы openSUSE Leap используйте Zypper для установки ntp.

Как настроить NTP-сервер на Linux?

После установки пакета NTP убедитесь, что вы раскомментировали следующую конфигурацию в файле /etc/ntp.conf на стороне сервера.

Мы разрешили только клиентам подсети 192.168.1.0/24 получать доступ к NTP-серверу.

Поскольку брандмауэр по умолчанию включен в дистрибутивах на основе RHEL 7, разрешите использование сервера / службы ntp.

Для системы на основе Debian нам нужно запустить ntp вместо ntpd.

Для systemctl систем

СТОРОНА КЛИЕНТА NTP: Как установить клиент NTP в Linux?

Как я уже упоминал ранее в этой статье.

Не существует специального пакета для NTP-сервера и клиента. Итак, установите этот же пакет на клиенте.

Для системы Fedora используйте DNF для установки ntp.

Для систем Debian / Ubuntu используйте команду APT-GET или APT для установки ntp.

Для систем на основе Arch Linux используйте Pacman для установки ntp.

Для систем RHEL / CentOS используйте команду YUM для установки ntp.

Для системы openSUSE Leap используйте Zypper для установки ntp.

Для системы на основе Debian нам нужно запустить ntp вместо ntpd.

Для systemctl систем.

Для системы на основе Debian нам нужно запустить ntp вместо ntpd.

Подождите несколько минут после перезапуска службы NTP, чтобы получить время синхронизации с NTP-сервером.

Выполните следующие команды, чтобы проверить состояние синхронизации сервера NTP в Linux.

Выполните следующую команду, чтобы получить текущий статус ntpd.

Наконец, запустите команду date

Если вы наблюдаете значительное смещение по времени на выводе NTP, выполните следующую команду, чтобы синхронизировать часы вручную с NTP-сервера.

Для начала смотрим какая у нас установлена временная зона. Для этого используем команду date.

Если временная зона установлена неправильно, то устанавливаем правильную временную зону. Для этого создаем симлинк на файл /etc/localtime с соответствующей временной зоны из каталога /usr/share/zoneinfo/. Например для Москвы.

Настройка синхронизации NTP-клиента с NTP-сервером

Устанавливаем пакет ntp

iburst: данный параметр повышает точность синхронизации, вместо одного пакета отправляется восемь. Когда сервер не отвечает, пакеты отправляются каждые 16 секунд, когда отвечает – каждые 2 секунды.

Далее нужно указать в файле конфигурации ваш NTP-сервер, который мы настроили в предыдущей статье. Если у вас в сети нет своего ntp сервера, то этот параметр указывать не нужно.

Запуск службы NTP

После изменения ntp.conf и задания необходимых параметров запустите службу (демон) NTP. В зависимости от настроек, она может работать и как сервер, и как клиент.

и добавьте его в автозагрузку

для проверки времени наберите команду

Проверка состояния NTP

Проверить состояние NTP можно при помощи команды ntpq. Если вы получите ошибку отказа в соединении, значит, сервер времени не отвечает, не запущена служба NTP на клиенте или закрыт порт.

Значение jitter должно быть низким, если это не так, проверьте смещение относительно часов в файле погрешности (driftfile). Если оно слишком велико, может потребоваться смена NTP-сервера. Следующая команда вручную синхронизирует время с NTP-сервером:

Ручная синхронизация времени

Для опроса NTP-сервера и установки даты и времени в ручную используется команда ntpdate. Обычно это требуется только один раз.

Для начала отключите ntp службу

Запустите синхронизацию указав сервер с которого нужно синхронизировать время

Запустите службу ntp

После такой первоначальной синхронизации NTP-клиент будет регулярно опрашивать NTP-сервер для обеспечения соответствия локального времени точному времени.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Читайте также: