Задача: типовая настройка операционной системы "Linux Ubuntu 18", следующая сразу после инсталляции таковой - подручный набор последовательных команд, упрощающий процедуру подготовки сервера к эксплуатации.
Обновляем программное обеспечение и устанавливаем набор полезных утилит:
# apt update && apt full-upgrade
# apt-get install --no-install-recommends apt-transport-https aptitude coreutils sudo acl psmisc net-tools dnsutils host htop iotop bmon tree findutils pigz rsync mc vim pwgen ntpdate dirmngr gnupg
# apt-get install --no-install-recommends apt-transport-https aptitude coreutils sudo acl psmisc net-tools dnsutils host htop iotop bmon tree findutils pigz rsync mc vim pwgen ntpdate dirmngr gnupg
Удаляем ненужные классическому "standalone" подсистемы:
# aptitude purge snapd lxd lxd-client lxcfs open-iscsi mdadm
# aptitude remove unattended-upgrades networkd-dispatcher
# aptitude remove unattended-upgrades networkd-dispatcher
Начиная с 17-й версии в "Linux Ubuntu" для хранения и применения сетевых настроек используется новый инструментарий "Netplan", представляющий собой прослойку абстракции над современными сетевыми подсистемами, управляемыми "network-manager" или "systemd-networkd", и заменяющий старый-добрый "ifupdown".
Следующий конфигурационный YAML-файл "Netplan" с говорящими именами параметров позволит зафиксировать желаемый IP-адрес и сопутствующие сетевые параметры:
# vi /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
addresses: [10.20.30.40/24]
gateway4: 10.20.30.1
nameservers:
search: [example.net]
addresses: [10.20.1.1, 8.8.8.8]
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
addresses: [10.20.30.40/24]
gateway4: 10.20.30.1
nameservers:
search: [example.net]
addresses: [10.20.1.1, 8.8.8.8]
Проверяем синтаксическую корректность и применяем сетевую конфигурацию (первая команда не сохраняет конфигурацию и позволяет вернуться к предыдущей простой перезагрузкой системы):
# netplan try
# netplan apply
# ip address
# route -n
# netplan apply
# ip address
# route -n
Обеспечим точность показаний системных даты и времени. Прежде всего установим желаемый часовой пояс:
# echo "Asia/Novosibirsk" > /etc/timezone
# rm /etc/localtime && ln -sf /usr/share/zoneinfo/Asia/Novosibirsk /etc/localtime
# rm /etc/localtime && ln -sf /usr/share/zoneinfo/Asia/Novosibirsk /etc/localtime
Разово синхронизируемся с каким-нибудь источником точного времени:
# ntpdate 0.asia.pool.ntp.org && hwclock --systohc --utc
Для корректировки отклонений внутренних часов заведём регулярную (через три часа) сверку с общемировым временем:
# vi /etc/crontab
....
0 */3 * * * root ntpdate asia.pool.ntp.org &
0 */3 * * * root ntpdate asia.pool.ntp.org &
Ненужную нам подсистему синхронизации времени "Systemd" отключаем:
# systemctl disable systemd-timesyncd && systemctl stop systemd-timesyncd
На Linux-серверах встроенных и запущенных по умолчанию сервисов DNS-кеширования ранее не наблюдалось, но в угаре внедрения "Systemd" сборщики дистрибутива "Linux Ubuntu" от 17-ой версии докатились таки до этого. Деактивируем и останавливаем ненужную нам службу DNS-кеширования:
# systemctl disable systemd-resolved && systemctl stop systemd-resolved
Подставляем вместо ссылки на конфигурационный файл "Systemd-Resolved" с единственным локальным кеширующим DNS-сервером свой файл, описывая там полноценную DNS-конфигурацию:
# rm /etc/resolv.conf && vi /etc/resolv.conf
nameserver 10.20.1.2
nameserver 8.8.8.8
search example.net
nameserver 8.8.8.8
search example.net
Проверить работу DNS-резольвинга можно элементарно, запросив разрешение в IP-адрес какого-нибудь действительно существующего FQDN посредством следующей команды (в ответе утилиты "dig" имеется параметр "SERVER", в котором указано, какой именно DNS-сервер использовался для "резольвинга"):
# dig ya.ru
Для работы с русскоязычными данными с учётом специфичных для них правил сортировок и форматирования потребуется явно проконтролировать наличие поддержки несущей операционной системой соответствующих "локалей":
# dpkg-reconfigure locales
....
C.UTF-8
....
en_US.UTF-8
....
ru_RU.UTF-8
....
C.UTF-8
....
en_US.UTF-8
....
ru_RU.UTF-8
....
В приводимой краткой инструкции более чем очевидно прослеживается желание по возможности остаться с привычным багажом знаний, путём отказа от освоения от новых технологий вроде "Systemd". Да, так и есть - нельзя объять необъятное - мне на данный момент интереснее заниматься задачами, не связанными с сопровождением несущих операционных систем.