Router by Centos. Этап первый DHCP-сервер

в 19:42, , рубрики: системное администрирование

Введение

Хочу создать ряд постов на тему настройки роутера на базе серверной CentOS при наличии пяти сетевых карт, трех провайдеров и двух подсетей, а также PXE boot загрузчика и фаервола. В этой статье будет рассмотрено установка и базовая настройка DHCP сервера. В статье не будет чего то особенного кроме настройки вывода логов в отдельный файл.

Установка DHCP — сервера CentOS

Для того что бы установить DHCP-сервер на CentOS достаточно под root or sudo выполнить следующие команды:

yum upgrade -y
yum install dhcp -y

Настройка dhcpd

После установки следует шаг настройки параметров демона для запуска DHCD сервера. Его настройка осуществляется вводом параметров в файл /etc/dhcpd/dhcpd.conf. Если этого файла нет значит первый пункт не был выполнен и dhcp-сервер не был установлен. Так как у нас будет две подсети и сетевой карты для них тоже две, мы будем использовать настройки для двух подсетей. Наш файл будет выглядеть следующим образом:

default-lease-time 32400;
max-lease-time 36000;
log-facility local5;


subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.20 192.168.1.250;
  option routers 192.168.1.1;
  option subnet-mask 255.255.255.0;
  option broadcast-address 192.168.1.254;
  option domain-name "exemple.com";
  option domain-name-servers 192.168.1.1;
  option time-offset -10800;
}
subnet 192.168.2.0 netmask 255.255.255.0 {
  range 192.168.2.20 192.168.2.250;
  option routers 192.168.2.1;
  option subnet-mask 255.255.255.0;
  option broadcast-address 192.168.2.254;
  option domain-name "exemple.com";
  option domain-name-servers 192.168.2.1;
  option time-offset -10800;
}

В этом конфиге мы создаем две подсети (192.168.1.0 и 192.168.2.0), думаю объяснять что делают параметры этих подсетей ненужно, остаются всего три строки:

  • default-lease-time 32400; — минимальное время выдачи ip адреса
  • max-lease-time 36000; — максимальное время выдачи ip адреса
  • log-facility local5; — параметр необходимый для создания log-файла

Настройка параметров сетевых карт

Когда пары DHCP-сервера заданы, под него необходимо настроить наши сетевые карты, которые будут раздавать адресе. В CentOS настройки интерфейсов сетевых карт хранятся в папке /etc/sysconfig/network-scripts/ в трех файлах:

  • ifcfg-interface — основной фаил настроек
  • route-interface — вспомагательный файл натройки путей для rt_tables
  • rule-interface — вспомагательный файл натройки правил для rt_tables

Последние два файла для настройки интерфейсов DHCP-сервера нам не нужны, по умолчанию они не создаются в папке /etc/sysconfig/network-scripts/ и их нужно будет создать самостоятельно. Файл ifcfg-interface в случаи установки карт после OS также могут отсутствовать и их нужно будет создать самостоятельно. Пусть наши два файла называются ifcfg-eth1 первая подсеть и ifcfg-eth2 вторая подсеть соответственно.

Файл ifcfg-eth1

TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.1.1
NETMASK=255.255.255.0
DEFROUTE=no
IPV4_FAILURE_FATAL=no
NAME=eth1
DEVICE=eth1
HWADDR=[MAC ADDRES OF DEVICE]
ONBOOT=yes

Файл ifcfg-eth2

TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.2.1
NETMASK=255.255.255.0
DEFROUTE=no
IPV4_FAILURE_FATAL=no
NAME=eth2
DEVICE=eth2
HWADDR=[MAC ADDRES OF DEVICE]
ONBOOT=yes

Пункт с мак адресом устройства нужен для того что бы в случаи добавления новой сетевой карты ваша карточка не сменила имя, так как в новых правилах RedHat имя сетевых карт задается согласно номеру активного слота, по типу enpNs0, где N- это номер карты +3 если она не встроенная, точных правил я не знаю и так как не захотел вдаваться в их подробности, но практика показывает именно тот сдвиг названия что я описал.

Настройка log файла

По умолчанию dhcpd пишет два основных log файла, /var/lib/dhcpd/dhcpd.leases — список выданных адресов и /var/log/messages — ошибки и все остальное, проблема в том что в /var/log/messages хранятся логи не только dhcpd но и все остальные, что делает поиск проблем очень сложной задачей. Для того что бы нам перенаправить поток логов в нужный файл и не зацепить лишнего мы используем параметр log-facility который указывали в настройках DHCP-сервера.

Итак, нам необходимо:

Создать папку в которой будут храниться наши лог-файлы:

mkdir /var/log/dhcp

Создать файл logrotate дабы все не хранилось в одном файле и периодически очищалось, для этого в папке /etc/logrotate.d/ создаем файл dhcpd в котором следующее содержимое

Файл /etc/logrotate.d/dhcpd

/var/log/dhcp/dhcpd.log {
    rotate 4
    missingok
    daily
    sharedscripts
    create 0644 root root
    postrotate
	/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

Ну и последнее наше действие в файле /etc/rsyslog.conf добавляем параметр с комментарием, который и будет перенаправлять все наши логи в нужный нам файл.

Файл /etc/rsyslog.conf

# DHCPD Log file
local5.*                                                /var/log/dhcp/dhcpd.log

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

После того как все параметры заданы и все файлы заполнены нужной информацией, можно запустить DHCP-сервер, поставить его на автозапуск при включении и проверить все ли у нас работает правильно

systemctl start dhcpd
systemctl enable dhcpd 

Автор: Наташа

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js