Pull to refresh

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

Введение


Хочу создать ряд постов на тему настройки роутера на базе серверной 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 
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.