Centos 7 dhcp сервер локальной сети. Установить шлюз по-умолчанию в CentOS

29.06.2020

  • Установить сервер DNS в chroot окружении. Так же он должен автоматически добавлять A и TXT записи от новых компьютеров
  • Установить DHCP сервер для динамической раздачи IP адреса всем компьютерам в нашей сети с привязкой к DNS
  • Настроить не просто кеширующий DNS, а как primary DNS

В качестве DNS сервера был выбран bind9, как наиболее распространенный. Вся установка будет происходить в консоле, т.к. это сервер и всякие DE и GUI нам не понадобятся.

Начнем с настройки сетевого интерфейса нашей карточки. Открываем конфигурационный файл с помощью вашего любимого редактора.

vim /etc/sysconfig/network-settings/ifcfg-eth0

Правим все значения как вам нужно.

DEVICE=eth0
IPADDR=192.168.1.150
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
GATEWAY=192.168.1.1
ONBOOT=yes
DHCP_HOSTNAME=master

В данном примере видно что сеть у нас 192.168.1.0/24. Сервер у нас со статическим IP адресом 192.168.1.150 и именем хоста MASTER. Так же видно что GATEWAY(шлюз) 192.168.1.1 — это тот компьютер с которого идет раздача интернета.

Прошу заметить, без параметра DHCP_HOSTNAME могут быть проблемы, так что прошу его не пропускать.

Устанавливаем сам bind, если он еще не установлен.

yum -y install bind bind-chroot caching-nameserver

# rpm -q bind bind-chroot
bind-9.7.2-1.P3.el5
bind-chroot-9.7.2-1.P3.el5

Ну и собственно переходим к правке главного конфигурационного файла named.conf.

vim /var/named/chroot/etc/named.conf

options {
listen-on {localhost; 192.168.1.150; };
directory «/var/named/»;
dump-file «data/cache_dump.db»;
statistics-file «data/named_stats.txt»;
memstatistics-file «data/named_mem_stats.txt»;
allow-transfer {192.168.1.150; };
allow-query {trusted-networks; };
allow-recursion {trusted-networks; };
forwarders {192.168.1.1; };
};
logging {
channel default_ch {
file «data/named-base.log»;
severity info;
print-time yes;
print-category yes;
};

channel security_ch {
file «data/named-security.log»;
severity info;
print-time yes;
print-category yes;
};
category default { default_ch; };
category security { security_ch; };

acl «trusted-networks» {localhost; 192.168.1.0/24; };

zone «saikov.ru» IN {
type master;
file «saikov.ru»;

};

zone «168.192.in-addr.arpa» {
type master;
file «168.192.rev»;
allow-update { key rndckey; };
};

include «/etc/named.rfc1912.zones»;
include «/etc/rndc.key»;

Давайте разберем его более подробно.
Во первых, первая проблема возникла из-за прав на этот файл. Когда Вы его создадите, проследите что бы владельцем был пользователь named

# ls -l named.conf
-rw-r—— 1 named named 1053 Фев 7 19:06 named.conf

options — секция, где описываются глобальные настройки. Состоит она из нескольких параметров. Давайте их разберем.

listen-on — указываем IP и порты на котором named будет работать
directory — путь к каталогу, где размещены все необходимые файлы для работы named
dump-file — здесь указываем путь к кешу
statistics-file — опция указывающая расположение файла статистики
memstatistics-file — опция указывающая расположение файла статистик использования памяти
allow-transfer — указываем IP, которым разрешено передавать зону
allow-query — указываем IP с которыми DNS будет работать
allow-recursion — указываем IP, рекурсивные запросы которых будем обслуживать
forwarders — если наш сервер не сможет ответить на запрос, то он перенаправит их на указанные DNS в этом параметре.

Опять же. Не забывайте проверять права на файлы. Как указано выше, они лежат у нас в /var/named/chroot/var/named/data

# ll /var/named/chroot/var/named/data/
итого 96
-rw-r—r— 1 named named 81286 Фев 10 14:54 named-base.log
-rw-r—r— 1 named named 5934 Фев 7 21:04 named_mem_stats.txt
-rw-r—r— 1 named named 685 Фев 7 18:22 named-security.log

logging — секция отвечающая за логирование нашего DNS сервера. Она у меня разбита, как видно из конфигурационного файла, на две части.

Первая отвечает за стандартные (default) логи и пишет все в /var/named/chroot/var/named/data/named-base.log
Вторая отвечает за логи безопасности и пишет все в /var/named/chroot/var/named/data/named-security.log

Так же имеются еще три одинаковых параметра

severity info; — работать в информационном уровне важности
print-time yes; — указывать в логах время
print-category yes ; — разрешить регистрировать категории

Делаем привязку к нашим двум каналам, указывая что default будет идти в канал default_ch, а security в канал security_сh

category default { default_ch; };
category security { security_ch; };

Создаем Access control list и водим переменную в которой пишем список наших сетей. Эта переменная используется в allow-query и allow-recursion . Это нужно для упрощения настройки. Если поменяются IP адреса, то можно будет поменять только тут, а не во всем конфигурационном файле.

acl «trusted-networks» {localhost; 192.168.1.0/24; };

zone «saikov.ru» IN {
type master;
file «saikov.ru»;
allow-update { key rndckey; };
};

zone «168.192.in-addr.arpa» {
type master;
file «168.192.rev»;
allow-update { key rndckey; };
};

Ну тут все понятно я думаю

type master; — говорим что он является основным DNS (master)
file «saikov.ru»; — файл где описана прямая зона домена saikov.ru
allow-update { key rndckey; }; — работа с ключом

Точно так же и для обратной зоны. Только файл описывающий обратную зону называется 168.192.rev

Файлы зоны лежат в /var/named/chroot/var/named/ , права на них named.named

В данной заметке я хочу рассмотреть простой и быстрый вариант настройки шлюза для организации доступа в интернет из локальной сети на базе CentOS 7. Не будет никакого дополнительного функционала, только самое необходимое для доступа к интернету компьютеров за шлюзом.

Данная статья является частью единого цикла статьей про сервер .

Введение

В нашем распоряжении будет следующий сервер для настройки шлюза:

# cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core)

Предварительная настройка сервера

# yum -y update

После этого я устанавливаю mc, так как привык к нему и постоянно пользуюсь:

# mcedit /etc/sysconfig/selinux

Приводим строку с соответствующим параметром к следующему виду:

SELINUX=disabled

Чтобы применить изменения, перезагружаем сервер:

# reboot # yum -y install epel-release

Устанавливаем iftop на CentOS 7:

# yum -y install iftop

Теперь мы можем смотреть загрузку сети на шлюзе в режиме реального времени. Чтобы увидеть сетевую активность, достаточно запустить iftop:

По-умолчанию она слушает интерфейс eth0. Это внешний интерфейс шлюза, на нем все подключения будут отображены от имени самого шлюза и определить, кто же в сети занимает канал мы не сможем. Чтобы это увидеть, необходимо запустить просмотр сетевой активности на локальном интерфейсе. Сделать это не сложно, достаточно запустить iftop с параметром:

# iftop -i eth1 -P

В моем случае это пользователь с ip 192.168.10.98, на котором я запустил проверку скорости интернета с серверов Яндекса.

Если у вас не большая сеть и не много пользователей, то с помощью этой простой и эффективной утилиты вы сможете легко определить, кто, к примеру, качает торренты или чем-то еще загружает канал.

Заключение

С помощью бесплатного дистрибутива Linux мы смогли за считанные минуты настроить шлюз для организации доступа в интернет компьютеров из локальной сети. У меня ушло минут 10 на настройку шлюза по этой инструкции. Если вы делаете это первый раз, то конечно у вас уйдет гораздо больше времени. Нужно будет разобраться в нюансах, к тому же я дал много ссылок на дополнительный материал.

Давайте разберемся в том, что мы сделали:

  1. Выполнили предварительную настройку сервера, подготовили его к работе.
  2. Включили маршрутизацию.
  3. Настроили firewall.
  4. Включили NAT.
  5. Установили и настроили dnsmasq для организации служб dns и dhcp.
  6. Проанализировали сетевую активность шлюза, узнали кто загружает канал интернета.

Это минимально необходимый функционал для организации работы шлюза на CentOS 7. Следующим этапом может быть настройка прокси сервера, шейпера траффика, настройка 2-х и более провайдеров и много другое. Что-то из этого я рассмотрю в своих будущих статьях.

Напоминаю, что данная статья является частью единого цикла статьей про сервер .

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

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Администратор Linux» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Что даст вам этот курс:
  • Знание архитектуры Linux.
  • Освоение современных методов и инструментов анализа и обработки данных.
  • Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
  • Владение основными рабочими инструментами системного администратора.
  • Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
  • Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.
Проверьте себя на вступительном тесте и смотрите подробнее программу по.

) is a network protocol used for assigning IP address to network clients dynamically from a predefined IP pool. It is useful for LAN network, but not generally used for production servers. This article will help you for Configuring DHCP Server on CentOS, Red Hat System. Read more about dhcp .

Install DHCP Package

First install DHCP packages using yum package manager on CentOS, Red Hat systems. DHCP rpms are available under base repositories, so we don’t need to add an extra repository.

Yum install dhcp

Update /etc/sysconfig/dhcpd File

Firstly we need to set ethernet interface name as DHCPDARGS in /etc/sysconfig/dhcpd file. Edit this configuration file and update the ethernet name.

DHCPDARGS=eth1

Configure DHCP Server

DHCP creates an empty configuration file /etc/dhcp/dhcpd.conf . Also it provides a sample configuration file at /usr/share/doc/dhcp*/dhcpd.conf.sample , which is very useful for configuring the DHCP server.

So as a first part, copy the content of sample configuration file to the main configuration file. Sample configuration file may be changed as perversion you have installed on your system.

# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf

3.1 – Parameter Configuration

First configure the basic options which is common to all supported networks.

Сайт, ns2.сайт; default-lease-time 600; max-lease-time 7200; authoritative; log-facility local7;

3.2 – IP Subnet Declaration

First, edit DHCP configuration file and update subnet details as per your network. For this example we are configuring DHCP for 192.168.1.0/24 LAN network.

Subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.254; option subnet-mask 255.255.255..168.1.1; option time-offset -18000; # Eastern Standard Time range 192.168.1.10 192.168.1.100; }

3.3 -Assign Static IP Address to Host

In some cases, we need to assign a fixed IP to an interface each time it requested from dhcp. We can also assign a fixed IP on basis of MAC address (hardware ethernet) of that interface. Setup host-name is optional to set up.

Host station1 { option host-name "station1.example.com"; hardware ethernet 00:11:1A:2B:3C:AB; fixed-address 192.168.1.100; }

Start DHCP Service

After making all above changes, let’s start dhcp service using following commands as per your operating system version.

For CentOS/RHEL 7 systemctl start dhcp For CentOS/RHEL 6/5 service dhcp start

Similarly to stop and restart dhcp service use following commands.

For CentOS/RHEL 7 systemctl stop dhcp ystemctl restart dhcp For CentOS/RHEL 6/5 service dhcp stop service dhcp restart

Step 5: Setup Client System

At this stage we have a running dhcp server which is ready for accepting requests and assign them a proper ip. but to verify I have another CentOS machine running on same LAN. Now login to that client machine and edit Ethernet configuration file.

Vim /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 BOOTPROTO=dhcp TYPE=Ethernet ONBOOT=yes

Make sure BOOTPROTO is set to dhcp .

Let’s restart network services on the client machine. You will get that dhcp server assigned an ip address from the defined subnet. If you have connected to client pc from remote login, Your session can be disconnected.

For CentOS/RHEL 7 systemctl restart network For CentOS/RHEL 6/5 service network restart

Настройка сети в CentOS 7

Который описан в соответствующей статье, необходимо выполнить ряд базовых настроек. Одна из которых — настройка сетевых подключений. Рассмотрим по порядку данную операцию.

У начинающих пользователей Linux могут возникнуть затруднения на самом первом этапе — не получится проверить текущее состояние сети командой ifconfig (будет выдаваться сообщение — команда не найдена). Это не проблема, это особенность работы CentOS, поэтому данную команду необходимо запускать от суперпользователя (администратора) командой:

Причина заключается в том, что обычные пользователи системы и root пользователь имеют различные переменные окружения PATH (вы можете посмотреть PATH пользователя при помощи echo $PATH). После ввода команды Linux, оболочка будет искать пользовательский PATH, чтобы попытаться найти команду для запуска. Она начинает поиск в каждой директории указанной в PATH, пока цель не будет найдена. Команды обычных пользователей обычно расположены в /usr/local/bin, /usr/bin и /bin. А команды пользователя root распологаются в основном в /usr/local/sbin, /usr/sbin, /sbin и корневой PATH это отражает. Поэтому, когда вы становитесь суперпользователем при помощи «su -«, то вы также принимаете и новый путь PATH к основным командам. А используя только ‘su’, сохраняется пользовательский путь PATH по умолчанию, следовательно, при попытке выполнить программу расположенную в /usr/local/sbin, /usr/sbin, /sbin выдаст результат: ‘command not found’ error. Для более детального объяснения, смотрите справочную страницу (man bash), особенно раздел login shells. Таким образом, вы или должны указывать полный путь к команде (пример — /sbin/ifconfig) при использовании ‘su’, либо использовать ‘su -‘, когда становитесь root-ом.

Для проверки текущих сетевых настроек стоит использовать команду:

При работе в ОС семейства Linux, необходимо знать и понимать, что все аппаратные и программные устройства, а также различные параметры самой операционной системы и программ хранятся в конфигурационных файлах. Таким образом, конфигурационные файлы интерфейсов управляют программными интерфейсами отдельных сетевых устройств. При загрузке ОС происходит считывание этих файлов и информации в ней, на основе которой и происходит определение необходимых (используемых и настроенных) интерфейсов, а также их запуск.

Такие файлы обычно называются ifcfg-<имя> , где <имя> относится к имени устройства, которое управляется этим конфигурационным файлом. Как было сказано выше — все интерфейсы и параметры ОС хранятся в различных специализированных файлах, что дает администратору удобною и гибкую возможность настройки параметров ОС и оборудования.

Настройка сетевого интерфейса

Настроим сетевой интерфейс путем редактирования конфигурационного файла, который расположен в директории /etc/sysconfig/network-scripts/

В моем случае кабель подключен в первый (и единственный) сетевой адаптер, который называется в системе eth0 . Выполним редактирование соответствующего файла:

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

Напоминаю, чтобы внести изменения в содержание файла в редакторе vi — необходимо:

  • нажать клавишу «i» или «Insert»
  • для выхода из режима редактирования — «esc»
  • для сохранения внесенных изменений — «Shift+:» затем «wq» и нажать «Enter»

Для сети со статическим IP адресом:

DEVICE=»eth0″
BOOTPROTO=»none»
ONBOOT=»yes»
IPADDR=»192.168.1.100″
NETMASK=»255.255.255.0″
GATEWAY=»192.168.1.1″

Для сети с использованием DHCP:

DEVICE=»eth0″
BOOTPROTO=»dhcp»
ONBOOT=»yes»

Комментарии выполненных действий:

Настройке сети

Выполняем редактирование сетевого конфигурационного файла:

# vi /etc/sysconfig/network

Вводим следующие данные:

NETWORKING=»yes»
HOSTNAME=»Имя.Вашего.Сервера» или рабочей станции

Для корректного применения настроек (чтобы они вступили в силу) выполняем перезапуск сети:

# /etc/init.d/network restart

Если изменения в файле /etc/sysconfig/network не требуются, тогда можно рестартануть только интерфейс:

# ifdown eth0 && ifup eth0

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

ifconfig eth0 192.168.Х.Х netmask 255.255.255.0

Для отключения сетевого интерфейса выполните:

Если же вы хотите, чтобы настройки были получены автоматически по DHCP, то выполните следующую команду:

В данном случае, чтобы прекратить работу сетевого интерфейса необходимо будет завершить работу программы dhclient:

НО! При настройке сети подобным образом, после перезагрузки конфигурирование придется производить заново.

Настройка DNS

Открываем файл ‘resolv.conf’ :

Похожие статьи