Настройка ntp client centos

Настраиваем firewall

Сразу хочу предупредить, что не имея доступа к консоли сервера, настраивать firewall плохая идея. Даже если вы очень хорошо понимаете что делаете и проделывали подобное много раз, все равно есть шанс остаться без доступа к серверу. Так что первым делом перед настройкой iptables проверяем доступ к консоли через KVM или физически.

В 7-й версии CentOS для управления iptables разработан новый инструмент под названием firewalld и все управление производится через него. Я не понял зачем это сделали, и не могу сказать, удобнее с ним стало или нет. По мне, так удобнее использовать одни и те же наработки по iptables. Мигрируя от сервера к серверу и от дистрибутива к дистрибутиву, я просто редактирую скрипт настроек фаервола.

Но CentOS зачем-то придумали firewalld, в Ubuntu стоит ufw, но суть одна и та же — это утилиты для конфигурирования iptables, который один и тот же во всех дистрибутивах. Я привык управлять iptables через самописный скрипт, который переношу от сервера к серверу и редактирую под конкретные потребности. Этим скриптом я и поделюсь. Так что для начала остановим и отключим firewalld:

Установим утилиты для iptables:

Включим автозапуск iptables:

Теперь создадим файл /etc/iptables_rules.sh следующего содержания:

Делаем файл c правилами исполняемым и запускаем:

Проверяем, применились ли правила:

При каждом запуске файла с правилами iptables, все изменения записываются в файл /etc/sysconfig/iptables и применяются при загрузке системы.

Как отключить IPv6 в CentOS?

На время написания статьи активного использования ipv6 в России нет, да и зачастую если таковая возможность имеется, администраторы предпочитают протокол ipv4. Поэтому если вы все же не используете данный протокол, его нужно отключить на сервере. Если вы точно уверены, что ни один из сервисов не настроен под работу с ipv6, можете сразу перейти к настройке сетевого интерфейса, если же нет, то начните с проверки. Нам нужно проверить, какие сервисы используют ipv6 и отключить данный протокол в конфигурации сервиса. Запустим команду:

У меня сервер тестовый, поэтому ipv6 используется только для sshd и cronyd. Это можно определить по “:::”.

Чтобы не возникало проблем после отключения ipv6 в конфигурации сети, отключите данный протокол в сервисах, в которых они используются на вашем сервере. Например для sshd, нужно открыть конфигурационный файл:

И раскомментируйте строки:

#AddressFamily any
#ListenAddress 0.0.0.0

После чего перезапустите сервис:

Как видим, для sshd протокол ipv6 теперь недоступен. Проделайте аналогичные настройки со всеми сервисами.

Перейдем к отключению протокола ipv6 в настройках сети. Откройте файл /etc/sysctl.conf:

И добавьте туда следующие строки:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

Сохраните файл и примените через:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

Перейдем к файлу /etc/sysconfig/network. Добавьте в него следующую конфигурацию:

NETWORKING_IPV6=no
IPV6INIT=no

Из файла конфигурации сетевого интерфейса /etc/sysconfig/network-scripts/ifcfg-eth0 удалите строку:

IPV6INIT="yes"

И наконец добавим запрет на работу ipv6 в grub:

В конец строки GRUB_CMDLINE_LINUX, добавляем:

ipv6.disable=1

После всех настроек, сохраните файл и обновите grub:

Выполните перезагрузку сервера и проверьте конфигурацию сети:

eth0: flags=4163 mtu 1500
inet 185.*.*.* netmask 255.255.255.0 broadcast 185.*.*.255
ether 52:54:00:d3:1c:3e txqueuelen 1000 (Ethernet)
RX packets 10068 bytes 613092 (598.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 32 bytes 5399 (5.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Протокол ipv6 на сервере отключен.

Настройка NTP

Открываем файл с настройками:

vi /etc/ntp.conf

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

pool ru.pool.ntp.org iburst
server ntp2.vniiftri.ru iburst prefer
pool 0.ubuntu.pool.ntp.org iburst
pool 1.ubuntu.pool.ntp.org iburst
server 127.127.1.0

* iburst — отправлять несколько пакетов (повышает точность); ru.pool.ntp.org / 0.ubuntu.pool.ntp.org / 1.ubuntu.pool.ntp.org — адреса серверов, с которыми наш сервер будет сверять время; server — указывает на выполнение синхронизации с сервером, а не пулом серверов; prefer — указывает на предпочитаемый сервер. server 127.127.1.0 — позволит в случае отказа сети Интернет брать время из своих системных часов.

Настраиваем безопасность:

restrict default kod notrap nomodify nopeer noquery
restrict
192.168.0.0 mask 255.255.255.0 nomodify notrap
restrict 127.0.0.1
restrict ::1

* где:

  • restrict default — задает значение по умолчанию для всех рестриктов.
  • kod — узлам, которые часто отправляют запросы сначала отправить поцелуй смерти (kiss of death), затем отключить от сервера.
  • notrap — не принимать управляющие команды.
  • nomodify — запрещает команды, которые могут вносить изменения состояния.
  • nopeer — не синхронизироваться с хостом.
  • noquery — не принимать запросы.
  • restrict 192.168.0.0 mask 255.255.255.0 — разрешить синхронизацию для узлов в сети 192.168.0.0/24.
  • IP адреса 127.0.0.1 и ::1 позволяют обмен данные серверу с самим собой.

Настройки по умолчанию могут быть разные для IPv4 и IPv6:

restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery

Перезапускаем сервис:

systemctl restart ntp || service restart ntp

Если используется брандмауэр, добавляем правило:

iptables -I INPUT 1 -p udp —dport 123 -j ACCEPT

или с помощью ufw:

ufw allow in on enp2s0 to any port 123 proto udp

* где enp2s0 — сетевой интерфейс, на котором слушает наш сервер.

Отключаем флуд сообщений в /var/log/messages

В дефолтной установке системы CentOS 7, весь ваш системный лог /var/log/messages через некоторое время работы сервера будет забит следующими записями.

Oct 16 14:01:01 xs-files systemd: Created slice user-0.slice.
Oct 16 14:01:01 xs-files systemd: Starting user-0.slice.
Oct 16 14:01:01 xs-files systemd: Started Session 14440 of user root.
Oct 16 14:01:01 xs-files systemd: Starting Session 14440 of user root.
Oct 16 14:01:01 xs-files systemd: Removed slice user-0.slice.
Oct 16 14:01:01 xs-files systemd: Stopping user-0.slice.
Oct 16 15:01:01 xs-files systemd: Created slice user-0.slice.
Oct 16 15:01:01 xs-files systemd: Starting user-0.slice.
Oct 16 15:01:01 xs-files systemd: Started Session 14441 of user root.
Oct 16 15:01:01 xs-files systemd: Starting Session 14441 of user root.
Oct 16 15:01:01 xs-files systemd: Started Session 14442 of user root.
Oct 16 15:01:01 xs-files systemd: Starting Session 14442 of user root.
Oct 16 15:01:01 xs-files systemd: Removed slice user-0.slice.
Oct 16 15:01:01 xs-files systemd: Stopping user-0.slice.
Oct 16 16:01:01 xs-files systemd: Created slice user-0.slice.
Oct 16 16:01:01 xs-files systemd: Starting user-0.slice.
Oct 16 16:01:01 xs-files systemd: Started Session 14443 of user root.
Oct 16 16:01:01 xs-files systemd: Starting Session 14443 of user root.
Oct 16 16:01:01 xs-files systemd: Removed slice user-0.slice.

Никакой практической пользы они не несут, поэтому отключим их. Для этого создадим отдельное правило для rsyslog, где перечислим все шаблоны сообщений, которые будем вырезать. Разместим это правило в отдельном файле /etc/rsyslog.d/ignore-systemd-session-slice.conf.

# cd /etc/rsyslog.d && mcedit ignore-systemd-session-slice.conf
if $programname == "systemd" and ($msg contains "Starting Session" or $msg contains "Started Session" or $msg contains "Created slice" or $msg contains "Starting user-" or $msg contains "Starting User Slice of" or $msg contains "Removed session" or $msg contains "Removed slice User Slice of" or $msg contains "Stopping User Slice of") then stop

Сохраняем файл и перезапускаем rsyslog для применения настроек.

# systemctl restart rsyslog

Необходимо понимать, что в данном случае мы отключаем флуд в лог файл только на локальном сервере. Если вы храните логи на удаленном syslog сервере, то данное правило нужно будет настраивать именно на нем.

Установка ifconfig

yum provides ifconfig

или

yum whatprovides ifconfig

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.funet.fi
* epel: www.nic.funet.fi
* extras: ftp.funet.fi
* updates: ftp.funet.fi
base/7/x86_64/filelists_db | 7.2 MB 00:00:01
epel/x86_64/filelists_db | 12 MB 00:00:03
extras/7/x86_64/filelists_db | 224 kB 00:00:00
ssh-products/x86_64/filelists_db | 89 kB 00:00:00
updates/7/x86_64/filelists_db | 3.4 MB 00:00:01
net-tools-2.0-0.25.20131004git.el7.x86_64 : Basic networking tools
Repo : base
Matched from:
Filename : /sbin/ifconfig

ifconfig входит, например, в состав net-tools

Установим net-tools

sudo yum install net-tools

Как настроить время вашего сервера

Проверим, что показывают аппаратные часы, для чего будем использовать три варианта команды hwclock:

# hwclock
Sun 09 Mar 2014 08:01:03 PM MSK  -0.926999 seconds
# hwclock --localtime
Sun 09 Mar 2014 04:01:16 PM MSK  -0.130659 seconds
# hwclock --utc
Sun 09 Mar 2014 08:01:25 PM MSK  -0.411394 seconds

Приведенный пример для случая когда аппаратные часы идут по UTC, а сервер настроен на Московский часовой пояс. Особых пояснений требует опция —utc вывод времени производится (формируется) с условием, что аппаратные часы идут по времени UTC. То есть показания должны совпадать с желаемым временем на сервере. Опция же —localtime наоборот показывает время аппаратных часов без всяких поправок.

Несколько полезных команд установки времени аппаратных часов

Устанавливаем время аппаратных часов равное системному:

# hwclock --systohc

Устанавливаем время системных часов на основании ЧРВ:

# hwclock --hctosys

Устанавливаем время равное указанному:

# hwclock --set --date "09 Jan 2012 14:11"

Значение временной зоны

Данные временной зоны для аппаратных часов в Centos хранятся в файле /etc/sysconfig/clock.

Для московской временной зоны в случае когда аппаратные часы идут по UTC он имеет следующее содержимое:

ZONE="Europe/Moscow"
UTC=true
ARC=false

Где ZONE — это наш часовой пояс, UTC говорит о том, что аппаратные часы сервера идут по универсальному времени UTC, ARC в значении false — значит используется нормальное значение века (эпохи) UNIX.

Подробнее по конфигурации файла /etc/sysconfig/clock в CentOS можно почитать в официальной документации.

Используем chronyd для синхронизация времени в CentOS 8

Для CentOS 8 из официальных репозиториев убрали ntp и ntpdate, поэтому для синхронизации времени нужно использовать chrony.

Основные преимущества chrony:

  • высокая скорость и точность синхронизции
  • корректная работа при отсутствии доступа к эталонным часам (ntpd требуются регулярные запросы)
  • по-умолчанию не меняет сразу время при синхронизации, чтобы не нарушить работу программ
  • Меньше использует ресурсов

По умолчанию, утилита chrony уже установлена в системе, но если по какой-то причина у вас ее нет, выполните установку:

# dnf install chrony

Как и любой другой сервис, после установки chrony нужно включить и добавить в автозагрузку:

# systemctl start chronyd# systemctl enable chronyd

Проверим статус сервиса:

Чтобы проверить, что синхронизация работает, выполнитите команду:

Конфигурационный файл chrony — /etc/chrony.conf. В нем нужно указать список NTP серверов, которые нужно использовать для синхронизации. Как и у ntp, у chrony есть интерфейс командной строки chronyc. Чтобы проверить информацию о текущих параметрах синхронизации времени, используйте:

Чтобы проверить информацию о серверах синхронизации, выполните команду:

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

Установка и базовая настройка DHCP

В CentOS/RHEL можно установить DHCP-сервер с помощью менеджера пакетов из базового репозитория:

– установка DHCP сервера для CentOS/RHEL 8

– установка DHCP сервера для CentOS/RHEL 7

Конфигурационный файл DHCP сервиса — /etc/dhcp/dhcpd.conf. Откройте в него и добавьте описание DHCP зоны (IP подсети) с настройками, которые ваш DHCP сервер должен выдавать клиентам.

subnet 15.10.0.0 netmask 255.255.255.0 {
  range 15.10.0.100 15.10.0.200;
  option domain-name-servers 77.88.8.8, 8.8.8.8;
  option domain-name "winitpro.ru";
  option routers 15.10.0.1;
  option broadcast-address 15.10.0.255;
  default-lease-time 3600;
  max-lease-time 7200;
}

Краткое описание настраиваемых параметров DHCP зоны:

  • subnet – адресное пространство (IP сеть), которое обслуживает данный DHCP сервер;
  • option domain-name — параметр задает доменное имя, которое клиенты используют при запросах к DNS;
  • range – диапазон IP адресов, из которого будут назначаться адреса устройствам;
  • option domain-name-servers – адреса DNS серверов, которые будут использоваться клиентом;
  • option routers — IP адрес шлюза, который будет использоваться DHCP клиентом
  • default-lease-time, max-lease-time – время и максимальное время (в сек) на которое выдается IP адрес клиенту. После истечения этого времени IP клиент должен продлить срок аренды.
  • option broadcast-address — широковещательный (бродкаст) адрес IP сети;

Некоторые опции DHCP можно задать на уровне глобальных параметров DCHP сервера (в начале файла dhcpd.conf). Например:

option domain-name "winitpro.ru";
option domain-name-servers 77.88.8.8, 8.8.8.8;
default-lease-time 3600;
max-lease-time 7200;
authoritative;
log-facility local7;

Для проверки корректность настройки конфигурационного файла DHCP сервера используется команда:

На скриншоте с цифрой 1 показан пример проверки при корректной настройке конфигурационного файла DHCP. В сегменте с цифрой 2 показано, что при наличии ошибок в конфигурации утилита dhcpd указывает на них.

Добавьте сервис dhcpd в автозагрузку и запустите:

У меня сразу сервис не запустился. Служба dhcpd вернула ошибку:

Not configured to listen on any interfaces!

На виртуальной машине у меня два интерфейса, на одном прописан белый IP-адрес, а второй пустой. В подобном случае, нужно указать конкретный интерфейс для работы DHCP и прописать на нем адрес из сети, которую мы будем раздавать клиентам.

Откройте файл:

Добавьте в него следующую строку:

DHCPDARGS=ens5

Где ens5 — это имя сетевого интерфейса, котором будет обслуживать DHCP запросы.

Затем создайте файл конфигурации сетевого интерфейса (если он не создан):

TYPE="Ethernet"
DEVICE="ens5"
ONBOOT="yes"
BOOTPROTO="static"
IPADDR="15.10.0.5"
NETMASK="255.255.255.0"
DNS1=77.88.8.8

Выполните рестарт сети:

– для CentOS/RHEL 7 – для CentOS/RHEL 8

Когда настройки сети будут выполнены и применены, можно запустить сам сервис dhcpd:

Сервис успешно настроен и запущен. Чтобы DHCP-клиент мог получить адрес с нашего сервера, нужно добавить сервис в исключения в firewalld:

Если вы используете другой файерволл, откройте 67 UDP порт на нем.

Mikrotik: настройка NTP Server и NTP Client для локальной сети

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

Для этого необходимо:

  • Скачать дополнительный пакет ntp-* для Mikrotik с официального сайта и установить его;
  • Настроить NTP Client;
  • Настроить NTP Server.

Установка Mikrotik NTP Server

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

В данном примере я скачиваю дополнительный пакет для роутера Mikrotik hAP ac lite (архитектура MIPSBE) для версии RouterOS 6.48.

Открываем Winbox, затем переносим пакет ntp-6.48-mipsbe.npk из архива, скаченного в предыдущем шаге. Если все сделали правильно, то увидим окно:

Перезагружаем маршрутизатор Mikrotik.

Настройка NTP Client на Mikrotik

Следующим шагом откроем System => NTP Client и выполним настройку:

Где:

  • Enabled – активируем клиент;
  • Unicast – указываем метод передачи трафика;
  • Primary NTP Server – задаем IP адрес доменного имени 0.ru.pool.ntp.org;
  • Secondary NTP Server – назначаем IP адрес доменного имени 1.ru.pool.ntp.org.

Для решения этой проблемы можно:

  • Воспользоваться скриптом, который будет проверять текущие IP-адреса заданных серверов, устанавливая их значения в конфигурацию. Скачать скрипт.
  • Устанавливать эти значения вручную.

Пример того, как создавать скрипты и запускать их по расписанию можно узнать из статьи: Как сохранить, перенести и восстановить настройки Mikrotik.

Настройка NTP Server на Mikrotik

Следующим шагом активируем NTP Сервер:

System => NTP Server.

Где:

  • Enabled – активируем сервер;
  • Multicast, Manycast – указываем метод передачи трафика.

Чтобы в Mikrotik открыть 123 порт, создадим правило:

IP => Firewall => «+»;

Разместим правило выше запрещающего:

А также рекомендуем изучить статьи:

  • MikroTik настройка firewall;
  • Настройка DHCP MikroTik;
  • MikroTik удаленный доступ извне.

На этом настройка NTP Сервера на роутере Mikrotik закончена. Надеюсь, данная статья была вам полезна.

Настройка NTP

Открываем файл с настройками:

vi /etc/chrony.conf

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

#pool 2.centos.pool.ntp.org iburst
server 192.168.0.100 iburst prefer
server 192.168.0.110 iburst
server 127.127.1.0

* где:

  • pool — указывает на выполнение синхронизации с пулом серверов.
  • server — указывает на выполнение синхронизации с сервером.
  • iburst — отправлять несколько пакетов (повышает точность).
  • prefer — указывает на предпочитаемый сервер.
  • server 127.127.1.0 — позволит в случае отказа сети Интернет брать время из своих системных часов.

* в данном примере мы закомментировали указанный пул по умолчанию и добавили свои серверы 192.168.0.100 и 192.168.0.110.

Настраиваем безопасность:

allow 192.168.0.0/24

* в данном примере мы разрешаем синхронизацию времени с нашим сервером для узлов сети 192.168.0.0/255.255.255.0.

Перезапускаем сервис:

systemctl restart chronyd

Добавляем правило в брандмауэр:

firewall-cmd —permanent —add-service=ntp

firewall-cmd —reload

Подключение репозиториев в CentOS

В стандартной сборке есть не весь софт, который может понадобиться при разработке проекта. Чтобы инсталлировать дополнительное ПО, нужно предварительно подключить репозитории. Самый популярный вариант для CentOS — EPEL. Добавить его можно из стандартного репозитория одной командой

yum install epel-release

На CentOS 7 также полезным будет репозиторий REMI, который позволяет установить более свежие версии PHP по сравнению с теми, что есть в стандартном репозитории. Выполняем команду

rpm -Uhv http://rpms.remirepo.net/enterprise/remi-release-7.rpm

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

Заключение

На этом все. Я рассмотрел наиболее типовую ситуацию, которая может быть полезной при использовании структуры AD совместно с linux серверами. При написании статьи использовал официальные руководства:

  • Deployment, Configuration and Administration of Red Hat Enterprise Linux 6
  • sssd.conf — Linux man page

Почему-то из руководства по RHEL 7 раздел, посвещенный SSSD убрали, хотя в 5 и 6 есть. Может просто я не заметил, так как структура сильно поменялась. Люблю я CentOS в первую очередь за отличную документацию Redhat. Там есть подробное описание практически всего, с чем приходилось сталкиваться. Надо только не лениться в английском языке разбираться.

Онлайн курс по Linux

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Administrator Linux. Professional» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.

Что даст вам этот курс:

  • Знание архитектуры Linux.
  • Освоение современных методов и инструментов анализа и обработки данных.
  • Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
  • Владение основными рабочими инструментами системного администратора.
  • Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
  • Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.

Проверьте себя на вступительном тесте и смотрите подробнее программу по .

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: