ESC

Start typing to search across invoices, services, domains, tickets, and more...

Search... Ctrl+K
Linux-сервер

Linux: часовой пояс, синхронизация времени NTP, имя хоста и DNS (timedatectl, chrony, hostnamectl)

6 шагов 14 мин чтения 2 просмотров 0
Содержание

Новые серверы часто работают в UTC, и время в логах не совпадает с местным, а уплывшие часы ломают проверку HTTPS-сертификатов, задания cron и коды двухфакторной аутентификации. В этой статье разберём, как сменить часовой пояс в Linux через timedatectl, включить синхронизацию времени по NTP с chrony, изменить имя хоста и /etc/hosts и правильно указать DNS-серверы при systemd-resolved, NetworkManager или обычном resolv.conf. Подходит для Debian/Ubuntu и Rocky Linux/AlmaLinux.

Шаг 1: Проверка и смена часового пояса через timedatectl

Посмотрите текущее состояние и выберите пояс из списка: Europe/Moscow для Москвы, Asia/Hong_Kong для Гонконга, Asia/Tokyo для Японии. Если сервер обслуживает пользователей из разных регионов, вполне разумно оставить UTC. Смена пояса не меняет реальное время, только его отображение; долго работающие службы (PHP-FPM, MySQL) лучше перезапустить.

timedatectl                                   # current time, time zone, NTP status
timedatectl list-timezones | grep -E 'Asia|UTC'
timedatectl set-timezone Asia/Hong_Kong       # e.g. Asia/Tokyo, Asia/Shanghai, Europe/Moscow, UTC
timedatectl set-local-rtc 0                   # keep the hardware clock in UTC
date

Шаг 2: Синхронизация времени NTP с помощью chrony

chrony точно держит время даже при нестабильной сети. На Rocky/AlmaLinux он стоит по умолчанию, а на Debian/Ubuntu при установке заменяет systemd-timesyncd. Строка с пометкой ^* — используемый источник, а chronyc tracking показывает текущее смещение.

# Debian / Ubuntu (replaces systemd-timesyncd)
apt install -y chrony
systemctl enable --now chrony

# Rocky Linux / AlmaLinux
dnf install -y chrony
systemctl enable --now chronyd

timedatectl set-ntp true
chronyc sources -v        # "^*" marks the server currently in use
chronyc tracking          # "System time" shows the current offset

Шаг 3: Свои NTP-серверы

Обычно пула дистрибутива достаточно. Чтобы задать конкретные серверы, отредактируйте строки pool/server в конфигурации chrony. Директива makestep разрешает скачкообразно поправить часы, если сразу после загрузки расхождение велико. Файрвол должен разрешать исходящий UDP 123.

# Config file: /etc/chrony/chrony.conf (Debian/Ubuntu) or /etc/chrony.conf (Rocky/AlmaLinux)
# Replace or add the server lines, for example:
pool pool.ntp.org iburst
server time.cloudflare.com iburst
makestep 1.0 3

# Apply and step the clock immediately if it is far off
systemctl restart chrony        # chronyd on Rocky/AlmaLinux
chronyc makestep
Время в KVM-виртуалках обычно стабильно, но может прыгнуть после восстановления из снимка или миграции хоста. chrony исправит это сам, поэтому ntpdate по cron не нужен.

Шаг 4: Смена hostname и /etc/hosts в Linux

hostnamectl применяет новое имя сразу и сохраняет его после перезагрузки. Затем добавьте имя в /etc/hosts, иначе sudo может писать «unable to resolve host», а почтовые и СУБД-службы — медленно стартовать. В образах с cloud-init включите preserve_hostname, чтобы имя не сбрасывалось при перезагрузке. В приглашении оболочки новое имя появится после переподключения по SSH.

hostnamectl set-hostname web01.example.com
hostnamectl

# /etc/hosts - make the new name resolve locally
127.0.0.1     localhost
127.0.1.1     web01.example.com web01      # Debian/Ubuntu convention
# or map it to the server's public IP:
# 203.0.113.10  web01.example.com web01

# Images with cloud-init: stop it from resetting the hostname on reboot
grep -n preserve_hostname /etc/cloud/cloud.cfg
sed -i 's/^preserve_hostname:.*/preserve_hostname: true/' /etc/cloud/cloud.cfg

Шаг 5: Определите, кто управляет DNS

Дистрибутивы управляют DNS по-разному, и ручная правка /etc/resolv.conf может пропасть после перезагрузки. Сначала проверьте, ссылка это или обычный файл и есть ли в начале комментарий «Generated by».

ls -l /etc/resolv.conf
# -> ../run/systemd/resolve/stub-resolv.conf  : managed by systemd-resolved (Ubuntu)
# -> regular file "Generated by NetworkManager": managed by NetworkManager (Rocky/AlmaLinux)
# -> regular file without such comment         : edited by hand (common on Debian)
resolvectl status 2>/dev/null | head -n 20

Шаг 6: Настройка DNS-серверов

Выберите один способ по итогам предыдущего шага: drop-in файл для systemd-resolved на Ubuntu, nmcli на Rocky/AlmaLinux (имя подключения берите из nmcli con show) или прямая правка resolv.conf на классическом Debian. В конце проверьте разрешение имён через getent.

# A) systemd-resolved (Ubuntu and some Debian setups)
mkdir -p /etc/systemd/resolved.conf.d
cat > /etc/systemd/resolved.conf.d/dns.conf <<'EOF'
[Resolve]
DNS=1.1.1.1 8.8.8.8 2606:4700:4700::1111
FallbackDNS=9.9.9.9
EOF
systemctl restart systemd-resolved
resolvectl status

# B) NetworkManager (Rocky Linux / AlmaLinux)
nmcli -t -f NAME,DEVICE con show --active
nmcli con mod "System eth0" ipv4.dns "1.1.1.1 8.8.8.8" ipv4.ignore-auto-dns yes
nmcli con up "System eth0"

# C) Plain /etc/resolv.conf (Debian with ifupdown)
cat > /etc/resolv.conf <<'EOF'
nameserver 1.1.1.1
nameserver 8.8.8.8
options timeout:2 attempts:2
EOF

# Test
getent hosts www.imidc.com
nmcli con up кратковременно перезапускает сетевой интерфейс, и ошибка в настройках может оборвать SSH-сессию. Проверьте имя подключения и по возможности работайте через консоль в личном кабинете (если она доступна).

Частые вопросы

chronyc sources показывает «?» и время не синхронизируется?

Чаще всего UDP 123 закрыт файрволом или DNS не разрешает имена NTP-серверов. Сначала проверьте DNS, затем разрешите исходящий UDP 123 или выберите доступные NTP-серверы.

В resolv.conf на Ubuntu только 127.0.0.53?

Это локальная заглушка systemd-resolved, так и должно быть. Реальные вышестоящие серверы смотрите через resolvectl status, а меняйте способом A из шага 6.

Не сломает ли смена hostname сайт или панель?

Обычно нет, но обновите старое имя в настройках почтового сервера, aaPanel или прав доступа к базе данных. Имя почтового сервера также должно совпадать с записью rDNS (PTR) — см. статью про rDNS/PTR.

Если проблема не решена, создайте тикет — техническая поддержка IMIDC работает 24/7. Укажите IP сервера, версию ОС, выполненные команды и полный текст ошибки, чтобы мы быстрее нашли причину.

Помог ли вам данный ответ?

Похожие руководства