Телевизоры. Приставки. Проекторы и аксессуары. Технологии. Цифровое ТВ

Centos 7 dhcp сервер локальной сети. Для сети с использованием DHCP

Настройка сети в 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’ :

В данной заметке я хочу рассмотреть простой и быстрый вариант настройки шлюза для организации доступа в интернет из локальной сети на базе 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 и 8 — ip адрес, dhcp, ipv6, dns, hostname, статические маршруты, сетевые карты и другие network параметры. Двигаться по теме будем шаг за шагом от простого к сложному, разбирая все нюансы по порядку и отвечая на наиболее популярные вопросы.

  1. Рассказать, как выполнить базовые сетевые настройки на сервере centos версий 7 и 8.
  2. Показать дополнительные возможности по настройки сети.
  3. На нескольких примерах рассказать, как решать типовые проблемы с сетью.
  4. Показать некоторые полезные сетевые утилиты.

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

Сетевые настройки на сервере CentOS

Первый раз с сетевыми настройками сервера CentOS 7 или 8 мы сталкиваемся, когда производим установку. На экране первоначальной настройки есть отдельный пункт, касающийся настройки сетевых интерфейсов:

Зайдя в него мы видим список подключенных сетевых карт. Каждую из них можно включить соответствующим ползунком (пункт 1 на картинке). При активировании интерфейса он автоматически получает настройки по dhcp. Результат работы dhcp можно посмотреть тут же. Если вас не устраивают эти настройки, их можно отредактировать, нажав configure (пункт 3 на картинке). Здесь же можно задать hostname (пункт 2 на картинке):


Открыв окно дополнительный настроек Ehernet, вы сможете изменить имя сетевого интерфейса, указать настройки IP (пункт 1 на картинке), выбрать ручные настройки (пункт 2 на картинке), назначить ip адрес (пункт 3 на картинке), установить dns сервер (пункт 4 на картинке) и сохранить сетевые настройки (пункт 5 на картинке):


После выполнения остальных настроек начнется установка. После установки у вас будет сервер с указанными вами сетевыми настройками.

Теперь рассмотрим другую ситуацию. Сервер, а соответственно и конфигурацию сети, производили не вы, а теперь вам надо ее посмотреть либо изменить. В вашем распоряжении консоль сервера, в ней и будем работать. Если у вас установка производилась с дистрибутива minimal , то при попытке посмотреть сетевые настройки с помощью команды ifconfig в консоли вы увидите следующее:

Bash: ifconfig: command not found

или в русской версии:

Bash: ifconfig команда не найдена

Для работы с ifconfig и прочими сетевыми утилитами необходимо установить пакет net-tools . Сделаем это:

# yum install net-tools

Теперь можно увидеть настройки сети:

mtu 1500 inet 192.168.159.129 ether 00:0c:29:7d:59:3f txqueuelen 1000 (Ethernet) RX packets 319 bytes 36709 (35.8 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 256 bytes 148817 (145.3 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 inet6::1 prefixlen 128 scopeid 0x10 loop txqueuelen 0 (Local Loopback) RX packets 6 bytes 624 (624.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 6 bytes 624 (624.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

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

# ip addr 1: lo: mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6::1/128 scope host valid_lft forever preferred_lft forever 2: eno16777728: mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:7d:59:3f brd ff:ff:ff:ff:ff:ff inet 192.168.159.129 /24 brd 192.168.159.255 scope global dynamic eno16777728 valid_lft 1709sec preferred_lft 1709sec inet6 fe80::20c:29ff:fe7d:593f/64 scope link valid_lft forever preferred_lft forever

Мы увидели конфигурацию сети, теперь давайте ее отредактируем. Допустим, нам нужно сменить ip адрес. Для этого идем в директорию и открываем на редактирование файл ifcfg-eth0 или ifcfg-ens18. Название файла будет зависеть от имени сетевого интерфейса. В Centos 8 по-умолчанию убрали поддержку настройки сети через конфигурационные скрипты, поэтому установите отдельно пакет network-scripts.

# yum install network-scripts

Файл ifcfg-eth0 имеет примерно следующее содержание:

По настройкам из этого файла мы получаем ip адрес по dhcp. Чтобы вручную прописать статический ip, приводим файл к следующему содержанию:

Мы изменили параметры:

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

Проверяем, применилась ли новая конфигурация сети:

# ifconfig eth0: flags=4163 mtu 1500 inet 192.168.159.129 netmask 255.255.255.0 broadcast 192.168.159.255 inet6 fe80::20c:29ff:fe7d:593f prefixlen 64 scopeid 0x20 ether 00:0c:29:7d:59:3f txqueuelen 1000 (Ethernet) RX packets 672 bytes 71841 (70.1 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 572 bytes 290861 (284.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

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

Как получить сетевые настройки по DHCP

Теперь рассмотрим обратную ситуацию. Допустим, у вас сетевая карта имеет какие-то настройки, установленные вручную. Но вы хотите, чтобы ваш компьютер получал настройки сети по dhcp в качестве клиента. Для этого вам нужно произвести операцию, обратную той, что мы делали раньше. То есть открываем файл /etc/sysconfig/network-scripts/ifcfg-ens18 и удаляем там строки с параметрами DNS, IPADDR, PREFIX, GATEWAY а в параметре BOOTPROTO указываем значение «dhcp» .

Сохраняем файл и перезапускаем сеть:

# systemctl restart network

Затем проверяем, получил ли наш client по dhcp настройки.

Как настроить DNS в CentOS

Текущие настройки dns сервера в CentOS можно посмотреть в двух местах:

  1. В файле с настройками сетевой карты ifcfg-eth0, которым мы ранее неоднократно редактировали.
  2. В файле /etc/resolv.conf

Зачем они сейчас в двух местах, я не знаю, но раньше настройки dns сервера в каких-то дистрибутивах, не помню уже точно каких, указывались только в resolv.conf, но в какой-то момент это изменилось. И все сетевые настройки стали храниться в одном файле вместе с адресом, шлюзом, маской и прочим. Если сейчас отредактировать файл resolv.conf и внести туда какие-то dns сервера, то после перезагрузки они будут заменены на значения из файла ifcfg-eth0.

Так что для того, чтобы установить параметры dns сервера, нужно отредактировать файл сетевых настроек ifcfg-eth0, добавив туда столько серверов, сколько требуется. Например так:

DNS1="192.168.159.2" DNS2="8.8.8.8" DNS3="8.8.4.4"

Для применения настроек сохраняем файл и перезапускаем сеть, все как обычно. После перезагрузки сервера настройки dns будут записаны в файл resolv.conf

# cat /etc/resolv.conf # Generated by NetworkManager nameserver 192.168.159.2 nameserver 8.8.8.8 nameserver 8.8.4.4

Как отключить ipv6

В настоящее время активного использования протокола ipv6 в России нет и в обычной работе он чаще всего не нужен. Хотя нас уже много лет пугают, что свободных ip адресов уже практически не осталось, но на деле пока еще всем хватает. Так что с точки зрения практических соображений ipv6 в настоящее время на сервере не нужен и его можно отключить.

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

# netstat -tulnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2317/master tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1333/sshd tcp6 0 0::1:25:::* LISTEN 2317/master tcp6 0 0:::22:::* LISTEN 1333/sshd udp 0 0 0.0.0.0:49252 0.0.0.0:* 694/avahi-daemon: r udp 0 0 0.0.0.0:123 0.0.0.0:* 715/chronyd udp 0 0 0.0.0.0:5353 0.0.0.0:* 694/avahi-daemon: r udp 0 0 127.0.0.1:323 0.0.0.0:* 715/chronyd udp6 0 0:::123:::* 715/chronyd udp6 0 0::1:323:::* 715/chronyd

Все строки с::: это ipv6 протокол. В моем случае это sshd, postfix и chronyd. Отключим им ipv6 и оставим только ipv4.

Начнем с sshd. Открываем файл настроек /etc/ssh/sshd_config и находим строки:

#AddressFamily any #ListenAddress 0.0.0.0

Раскомментируем их и изменим. Должно получиться вот так:

AddressFamily inet ListenAddress 0.0.0.0

Теперь открываем файл настроек постфикс /etc/postfix/main.cf . Ищем там строку:

#inet_protocols = all

Меняем на:

Inet_protocols = ipv4

Отключаем ipv6 в chronyd. Для этого создаем файл /etc/sysconfig/chronyd и добавляем строку:

OPTIONS=-4

Теперь отключаем ipv6 в CentOS. Открываем файл /etc/sysctl.conf и добавляем туда строки:

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

Редактируем файл /etc/sysconfig/network , добавляя туда:

NETWORKING_IPV6=no IPV6INIT=no

Добавляем запрет на работу ipv6 в конфигурацию grub. Открываем конфиг /etc/default/grub и добавляем к параметру GRUB_CMDLINE_LINUX еще одно значение ipv6.disable=1 . Должно получиться примерно так:

GRUB_CMDLINE_LINUX="rd.lvm.lv=cl_centos8/root rhgb quiet ipv6.disable=1 "

После этого обновляем конфиг загрузчика.

# grub2-mkconfig -o /boot/grub2/grub.cfg

Перезагружаемся и проверяем результат:

# reboot # ifconfig eno16777728: flags=4163 mtu 1500 inet 192.168.159.129 netmask 255.255.255.0 broadcast 192.168.159.255 ether 00:0c:29:7d:59:3f txqueuelen 1000 (Ethernet) RX packets 2301 bytes 243024 (237.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2138 bytes 1327955 (1.2 MiB) 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 0 (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

Нигде нет упоминания про inet6 и адреса формата ipv6. Значит все в порядке, мы отключили ipv6 в CentOS. Теперь проверим список открытых портов:

# netstat -tulnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2291/master tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1322/sshd udp 0 0 0.0.0.0:123 0.0.0.0:* 2453/chronyd udp 0 0 0.0.0.0:5353 0.0.0.0:* 697/avahi-daemon: r udp 0 0 127.0.0.1:323 0.0.0.0:* 2453/chronyd udp 0 0 0.0.0.0:57259 0.0.0.0:* 697/avahi-daemon: r

Все порты ipv4. Все в порядке, наша задача выполнена.

Как изменить hostname в CentOS

По-умолчанию, во время установки CentOS ставит имя хоста localhost.localdomain . Если вы его не поменяли, то можно это сделать позже. Для начала давайте проверим, какое имя хоста у вас установлено. Делается это с помощью команды в консоли hostname , либо с помощью uname :

# hostname localhost.localdomain # uname -n localhost.localdomain

Для того, чтобы изменить имя хоста в CentOS, необходимо отредактировать файл /etc/hostname . Проверим его содержимое:

# cat /etc/hostname localhost.localdomain

Отредактируем этот файл, чтобы изменить hostname:

# mcedit /etc/hostname centos.localhost

Сохраняем файл и проверяем:

# hostname centos.localhost

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

# hostnamectl set-hostname centos.localhost

Все в порядке, мы изменили имя хоста на centos.localhost

Установить шлюз по-умолчанию в CentOS

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

# netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 149.154.71.254 0.0.0.0 UG 0 0 0 eth0 10.8.0.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0 10.8.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 149.154.70.0 0.0.0.0 255.255.254.0 U 0 0 0 eth0 192.168.1.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0

Строка с Destination 0.0.0.0 определяет адрес шлюза. Если у вас ее нет, либо в поле Gateway установлен неверный шлюз, то можно это изменить. Устанавливаем шлюз по-умолчанию:

# route add default gw 192.168.0.1

Или то же самое с помощью команды ip.

# ip r default via 10.20.1.1 dev ens18 proto dhcp metric 100 10.20.1.0/24 dev ens18 proto kernel scope link src 10.20.1.23 metric 100 # ip route add default 10.20.1.0/24 dev ens18

# ip route add default via 10.20.1.1

Network Manager в CentOS

В CentOS по-умолчанию имеется служба, которая управляет всеми сетевыми подключениями — NetworkManager . Она постоянно контролирует сетевые настройки и с помощью демона по управлению конфигурациями вносит соответствующие изменения в активные сетевые устройства. Она поддерживает стандартные файлы конфигураций ifcfg.

Список сетевых утилит и приложений:

Пользователи не взаимодействуют с NetworkManager в CentOS напрямую, для этого используются графические и утилиты командной строки. Одной из таких утилит является system config network tui . В Centos 8 по-умолчанию NetworkManager является рекомендованным способом по настройке сети. Все остальные способы объявлены deprecated.

System config network tui

Для управления сетевыми настройками в CentOS можно воспользоваться графической утилитой nmtui . Проверить ее наличие в системе очень просто. Достаточно запустить ее в консоли:

Если она у вас не установлена, то исправить это очень просто. Устанавливаем в CentOS system config network tui:

# yum install NetworkManager-tui

С помощью tui можно указать любые сетевые настройки, которые мы делали раньше через командную строку и редактирование конфигурационных файлов network-scripts. Давайте сделаем это. Вызываем программу:

Выбираем первый пункт Edit a connection , затем выбираем сетевой интерфейс и жмем «Edit»:

Здесь мы можем изменить имя сетевой карты, mac адрес, указать тип сетевых настроек — ручной или dhcp, указать вручную ip адрес, адрес шлюза, днс сервера, добавить маршруты и некоторые другие настройки:

После завершения редактирования сохраняем настройки, нажимая ОК.
Если в первом экране утилиты выбрать пункт Set System Hostname , то можно быстро указать имя хоста. Результат будет такой же, как мы делали раньше в консоли.

Если вы будете готовиться к сдаче сертификации по RHEL, то везде будете видеть рекомендацию использовать nmtui для настройки сети. Суть в том, что на экзамене время ограничено, а с помощью network manager его можно и нужно экономить. Считается, что так настраивать сеть быстрее.

Как добавить статический маршрут в CentOS

Для управления маршрутизацией в CentOS может понадобиться добавить статический маршрут. Сделать это достаточно просто с помощью консольной команды. Для начала проверим существующие маршруты, используя netstat :

# netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.159.2 0.0.0.0 UG 0 0 0 eno16777728 192.168.159.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777728

В данном случае у нас один маршрут для адреса 0.0.0.0/0.0.0.0 шлюз используется 192.168.159.2, он же шлюз по-умолчанию. То есть по сути, статических маршрутов никаких нет. Добавим один из них.

Допустим, у нас есть подсеть 192.168.8.0 маска 255.255.255.0, трафик в эту подсеть маршрутизирует шлюз 192.168.159.5 Добавляем маршрут:

# route add -net 192.168.8.0/24 gw 192.168.159.5

Проверяем, появился ли добавленный маршрут в таблицу маршрутизации :

# netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.159.2 0.0.0.0 UG 0 0 0 eno16777728 192.168.8.0 192.168.159.5 255.255.255.0 UG 0 0 0 eno16777728 192.168.159.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777728

Все в порядке, маршрут добавлен. Делаем то же самое с помощью утилиты ip.

# ip r # ip route add 192.168.8.0/24 via 192.168.159.5

Но после перезагрузки этот статический маршрут будет удален. Чтобы этого не произошло и добавленные маршруты сохранялись, необходимо их записать в специальный файл. В папке /etc/sysconfig/network-scripts создаем файл с именем route-eth0 следующего содержания:

# mcedit /etc/sysconfig/network-scripts/route-eth0 192.168.8.0/24 via 192.168.159.5

Перезагружаемся и проверяем, на месте ли маршрут:

# reboot # netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.159.2 0.0.0.0 UG 0 0 0 eno16777728 192.168.8.0 192.168.159.5 255.255.255.0 UG 0 0 0 eno16777728 192.168.159.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777728

Все в порядке, статический маршрут добавлен.

Как настроить 2 IP адреса на одном интерфейсе

Если у вас появилась необходимость настроить 2 IP адреса на одном интерфейса в CentOS, то сделать это достаточно просто. Воспользуемся командой ifconfig. Для начала проверим список сетевых интерфейсов:

# ifconfig eno16777728: flags=4163 mtu 1500 inet 192.168.159.129 netmask 255.255.255.0 broadcast 192.168.159.255 ether 00:0c:29:7d:59:3f txqueuelen 1000 (Ethernet) RX packets 254 bytes 30173 (29.4 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 204 bytes 27658 (27.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73

Добавим к интерфейсу eno16777728 еще один ip адрес 192.168.159.120:

# ifconfig eno16777728:1 192.168.159.120 up

Проверим, что получилось:

# ifconfig eno16777728: flags=4163 mtu 1500 inet 192.168.159.129 netmask 255.255.255.0 broadcast 192.168.159.255 ether 00:0c:29:7d:59:3f txqueuelen 1000 (Ethernet) RX packets 254 bytes 30173 (29.4 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 204 bytes 27658 (27.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 eno16777728:1: flags=4163 mtu 1500 inet 192.168.159.120 netmask 255.255.255.0 broadcast 192.168.159.255 ether 00:0c:29:7d:59:3f txqueuelen 1000 (Ethernet) lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 loop txqueuelen 0 (Local Loopback) RX packets 11 bytes 940 (940.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 11 bytes 940 (940.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

То же самое, с помощью ip.

# ip a add 192.168.159.120/24 dev eno16777728:1

Все в порядке, мы добавили второй ip адрес на один и тот же интерфейс. Но после перезагрузки дополнительный адрес не сохранится. Чтобы его сохранить, необходимо создать файл настроек интерфейса в папке /etc/sysconfig/network-scripts

# mcedit /etc/sysconfig/network-scripts/ifcfg-eno16777728:1 DEVICE=eno16777728:1 BOOTPROTO=static IPADDR=192.168.159.120 NETMASK=255.255.255.0 ONBOOT=yes

Сохраняем файл, перезагружаемся и проверяем, что получилось. Второй ip адрес должен быть на месте.

Как сделать перезапуск сети в CentOS

Ранее я уже касался этого вопроса, но на всякий случай повторим отдельно. Допустим, вы внесли некоторые изменения в конфигурацию сети. Как применить эти настройки, не перезагружая сервер? Очень просто. Для перезапуска сети в CentOS достаточно воспользоваться командой systemd:

# systemctl restart network

Если увидите ошибку:

Failed to restart network.service: Unit network.service not found.

Значит у вас не установлен пакет network-scripts, а управление сетью выполняется с помощью NetworkManager, который сам перезапускает сеть после изменения настроек.

Если у вас старая версия Centos без systemd, а это 6-я версия и младше, то сеть перезапускается вот так.

# /etc/init.d/network restart

Сетевая служба перечитает все сетевые настройки и применит изменения.

Как узнать IP адрес в CentOS

Для того, чтобы быстро узнать текущий IP адрес в CentOS необходимо воспользоваться следующими командами:

# ifconfig | grep inet inet 192.168.159.129 netmask 255.255.255.0 broadcast 192.168.159.255 inet 127.0.0.1 netmask 255.0.0.0

Либо второй вариант определения локального ip адреса:

# ip addr | grep inet inet 127.0.0.1/8 scope host lo inet 192.168.159.129 /24 brd 192.168.159.255 scope global eno16777728

Обе команды позволяют быстро узнать свой ip адрес.

Что делать, если CentOS не видит сетевую карту?

Вы установили сервер, загрузились и обнаружили, что в системе нет ни одной сетевой карты. Что в таком случае делать? Первым делом посмотрите вывод команды dmesg и поищите там поминание о своей карте. Возможно, она в системе есть, просто не активирована. Активировать ее можно с помощью nmtui , а котором я рассказывал выше.

Там есть пункт меню Activate connection , нужно в него зайти и активировать вашу сетевую карту. После этого ее можно будет настраивать.

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

Есть еще вероятность, что вы не увидите своей карточки при выводе команды ifconfig, если в эту карту не воткнут сетевой провод. Чтобы наверняка посмотреть все интерфейсы, необходимо использовать ключ -a:

# ifconfig -a

Есть еще один способ поискать сетевую карту в системе. Установите пакет pciutils :

# yum -y install pciutils

И посмотрите вывод команды:

# lspci | grep Ethernet

Если сетевая карта видится системой, то должно быть что-то в этом роде:

02:00.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)

Если в выводе пусто, значит сетевая карта не определена.

Что делать, если сеть недоступна в CentOS?

Допустим, вы пытаетесь пинговать какой-то адрес, например 8.8.8.8 и получаете ответ, что сеть не доступна:

# ping 8.8.8.8

А в ответ получаете:

Connect: Network is unreachable

Такая ситуация может возникнуть, если у вас не установлен шлюз по-умолчанию. Добавить его можно с помощью команды:

# route add default gw 192.168.0.1

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

Использование сетевых утилит traceroute, dig в CentOS

Для диагностики сетевых подключений в CentOS полезно использовать специальные утилиты. Но если вы использовали установку minimal, то их скорее всего в системе не будет. К примеру, популярная утилита traceroute при попытке ее запуска выдаст сообщение:

# traceroute ya.ru bash: traceroute: command not found

Ее нужно установить отдельно из репозитория:

# yum install traceroute

То же самое с популярной программой dig для работы с dns серверами и записями:

# dig ya.ru bash: dig: command not found

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

# yum install bind-utils

Настройка 802.1Q VLAN в CentOS

Для поднятия тегированного интерфейса на CentOS нужно в первую очередь проверить поддержку ядром 8021q :

# modprobe 8021q

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

# lsmod | grep 8021q 8021q 29022 0 garp 14384 1 8021q mrp 18542 1 8021q

Все в порядке, модуль 8021q загружен, добавим его в автозагрузку:

# echo 8021q >> /etc/modules-load.d/8021q.conf

Теперь создаем файл конфигурации для vlan в /etc/sysconfig/network-scripts :

# mcedit ifcfg-eth0.2000 VLAN=yes DEVICE=eth0.2000 BOOTPROTO=static ONBOOT=yes TYPE=Vlan IPADDR=192.168.100.2 NETMASK=255.255.255.0

Обращаю внимание на выделенное жирным. Во всех инструкциях в интернете, что мне попались, этот параметр был указан как TYPE=Ethernet , но с такой настройкой интерфейс с vlan не поднимался, появлялась ошибка:

Error: no device found for connection "System eth0.2000".

Только после того, как я исправил, все заработало как надо. Так что сохраняем и активируем интерфейс:

# ifup eth0.2000 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)

Проверяем наш vlan:

# ip l ls 1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 00:15:5d:01:0f:06 brd ff:ff:ff:ff:ff:ff 3: eth0.2000@eth0: mtu 1500 qdisc noqueue state UP mode DEFAULT link/ether 00:15:5d:01:0f:06 brd ff:ff:ff:ff:ff:ff

Все в порядке, тегированный интерфейс поднят. По аналогии можно создать еще несколько подобных интерфейсов, не забывая изменять им имена и адреса.

Заключение

На этом мой объемный материал на тему настройки сети в CentOS закончен. Буду очень рад комментариям, замечаниям, поправкам. Они наверняка будут. Создавая подобные материалы я в первую очередь учусь сам и подтягиваю свои знания в предметной области. Тут могут быть где-то ошибки и описки, хотя я и проверяю все на живых системах во время написания руководств, но все равно возможны неточности и опечатки.

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

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

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



Похожие публикации