Настройка сети в Centos
Centos - один из дистрибутивов операционной системы на базе ядра Linux. Является бесплатным аналогом коммерческого Red Hat. Собственно, бесплатность и надежность последнего составляют основные преимущества CentOS.
Скачать дистрибутив можно на официальном сайте. Для загрузки доступно две ветки — CentOS Linux (классический) и CentOS Stream (rolling-ветка с планируемыми изменениями для следующего релиза Red Hat). На момент обновления данных строк, последняя версия была 8; также активно используется CentOS 7. Установка возможна в режиме Minimal, Server или Desktop.
Отличительной особенностью дистрибутивов на базе Red Hat является использование пакетов на основе RPM. Другой популярный тип дистрибутивов Linux — на основе deb-пакетов, например, Debian, Ubuntu, Mint и так далее.
Базовая настройка сети
Смотрим все установленные сетевые адаптеры в системе:
ip aВ результате получаем что-то подобное:

* Из примера видно, что в моем CentOS есть 2 сетевых карты — lo (локальная петля) и eth0 — сетевые Ethernet адаптеры.
Если нужно настроить сеть для адаптера eth0, открываем на редактирование следующий конфигурационный файл:
vi /etc/sysconfig/network-scripts/ifcfg-eth0И приводим его к следующему виду:
DEVICE=eth0
BOOTPROTO=static
IPADDR=172.17.100.2
NETMASK=255.255.255.0
GATEWAY=172.17.100.254
DNS1=172.17.100.254
DNS2=77.88.8.8
ONBOOT=yes... а также для CentOS 8 добавим:
NM_CONTROLLED=yesОсновные опции
| Опция | Описание | Возможные значения | 
|---|---|---|
| DEVICE | Имя сетевого адаптера | Должно совпадать с именем в системе. В данном примере eth0 | 
| BOOTPROTO | способ назначения IP-адреса | static: ручное назначение IP, dhcp: автоматическое получение IP | 
| IPADDR | IP-адрес | адрес, соответствующий вашей сети | 
| NETMASK | Сетевая маска | должна соответствовать вашей сети | 
| GATEWAY | Шлюз по умолчанию | IP-адрес сетевого шлюза | 
| DNS1 | Основной DNS-сервер | IP-адрес сервера имен | 
| DNS2 | Альтернативный DNS-сервер | IP-адрес сервера имен | 
| ONBOOT | Способ запуска сетевого интерфейса | yes: автоматически при старте сервера, no: запускать вручную командой | 
| NM_CONTROLLED | Указываем, должен ли интерфейс управляться с помощью NetworkManager | yes: управляется NetworkManager, no: не может управляться NetworkManager | 
Чтобы настройки применились, перезапускаем сетевую службу.
а) для CentOS 7:
systemctl restart networkб) для CentOS 8 вводим 2 команды:
systemctl restart NetworkManager
nmcli networking off; nmcli networking on* в большей степени, это основное отличие версий 7 и 8. Чтобы команды смогли поменять настройки, для интерфейсов необходима настройка NM_CONTROLLED=yes.
Дополнительные опции (не обязательны для работы сети)
| Опция | Описание | Возможные значения | 
|---|---|---|
| DOMAIN | Указываем домен, который необходимо добавлять к имени хостов, если он не указан в запросе явно. Несколько доменов можно указать в кавычках через пробелы. | Строковое значение, соответствующее имени домена. | 
| IPV4_FAILURE_FATAL | Отключение сетевого интерфейса, если IP-адрес (v4) имеет неверную конфигурацию | yes: отключать, no: не отключать | 
| IPV6_FAILURE_FATAL | Отключение сетевого интерфейса, если IP-адрес (v6) имеет неверную конфигурацию | yes: отключать, no: не отключать | 
| IPV6_AUTOCONF | Разрешает или запрещает автоконфигурирование IPv6 с помощью протокола Neighbor Discovery | yes: разрешить автоконфигурирование, no: запретить | 
| IPV6INIT | Говорит о возможности использовать сетевой интерфейс для адресации IPv6 | yes: адресация может использоваться, no: не используется | 
| PEERROUTES | Задает приоритет настройки шлюза по умолчанию, полученного от DHCP | yes: маршрут от DHCP важнее, чем назначенный вручную, no: важнее маршрут, заданный вручную | 
| IPV6_PEERROUTES | Задает приоритет настройки шлюза по умолчанию, полученного от DHCP (для IPv6) | |
| UUID | Уникальный идентификатор сетевого интерфейса. Его можно сгенерировать самостоятельно командой uuidgen | Строка из 32-х символов в формате 8-4-4-4-12. Например: fca8cc84-6f21-4bac-9ccb-36f281321ba4  | 
Настройка сети из консоли (командами)
Настройка из консоли будет работать только до перезагрузки системы. Ее удобно применять для временного конфигурирования или проведения тестов.
Назначение IP-адреса или добавление дополнительного к имеющемуся:
ip a add 172.17.100.2/24 dev eth0* в данном примере к сетевому интерфейсу eth0 будет добавлен IP 172.17.100.2.
Изменение IP-адреса:
ip a change 172.17.100.2/24 dev eth0* однако, по факту, команда отработает также, как add.
Удаление адреса:
ip a del 172.17.100.2/24 dev eth0Добавление маршрута по умолчанию:
ip r add default via 172.17.100.2Добавление статического маршрута:
ip r add 172.17.100.2/24 via 10.10.0.254Удаление маршрутов:
ip r del default via 172.17.100.2
ip r del 172.17.100.2/24 via 10.10.0.254Команда ifconfig
В новых версиях CentOS утилита ifconfig не установлена и при вводе одноименной команды можно увидеть ошибку «Команда не найдена». Необходимо либо воспользоваться командой ip (ip address), либо установить утилиту ifconfig.
а) в CentOS 7:
yum install ifconfigа) в CentOS 8:
yum install net-toolsНастройка WiFi
Принцип настройки беспроводной сети на CentOS не сильно отличается от проводной.
Создаем конфигурационный файл со следующим содержимым:
vi /etc/sysconfig/network-scripts/ifcfg-dmoskwifiESSID="smm_wifi"MODE=ManagedKEY_MGMT=WPA-PSKTYPE=WirelessBOOTPROTO=noneNAME=smm_wifiONBOOT=yesIPADDR=172.17.110.2NETMASK=255.255.255.0GATEWAY=172.17.110.254DNS1=172.17.110.254DNS2=77.88.8.8
* где smm_wifi — название WiFi сети (SSID).
Несколько IP на одном сетевом адаптере
В зависимости от версии операционной системы, дополнительные адреса добавляются посредством:
- Псевдонимов — создание нового виртуального интерфейса с названием <имя интерфейса>:<номер>.
 - Добавлением IPADDRx и NETMASKx в конфигурационном файле.
 
Рассмотрим оба варианта подробнее.
Создание псевдонимов (более ранние версии CentOS 7 и ниже)
Создаем новый конфигурационный файл для сетевого интерфейса:
vi /etc/sysconfig/network-scripts/ifcfg-eth0:1DEVICE=enth0:1BOOTPROTO=staticIPADDR=192.168.0.100NETMASK=255.255.255.0GATEWAY=192.168.0.1DNS1=192.168.0.10DNS2=192.168.0.11ONBOOT=yes
* где eth0 — имя физического интерфейса, :1 — виртуальный номер.
Перезапускаем сетевые службы.
Настройка конфигурационного файла (поздние версии CentOS 7 и выше)
Открываем конфигурационный файл для сетевого интерфейса, например:
vi /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0BOOTPROTO=staticIPADDR=192.168.0.100NETMASK=255.255.255.0IPADDR1=192.168.1.100NETMASK1=255.255.255.0IPADDR2=192.168.2.100NETMASK2=255.255.255.0GATEWAY=192.168.0.254DNS1=192.168.0.10DNS2=192.168.0.11ONBOOT=yes
* где eth0 — имя физического интерфейса, дополнительные адреса задаются с помощью опций IPADDR1, IPADDR2, NETMASK1, NETMASK2.
Перезапускаем сетевые службы.
DHCP
Для автоматического получения IP-адреса от сервера DHCP мы должны задать следующее значение для опции BOOTPROTO в конфигурационном файле:
...
BOOTPROTO=dhcp
...* в наших примерах выше данный параметр имеет значение static.
Переопределение DNS с помощью dhclient.conf
Также мы можем переопределять настройки для DHCP с помощью конфигурационного файла. Например, если мы хотим, чтобы адреса DNS были заданы определенные, а не получены от DHCP, открываем конфигурация:
vi /etc/dhcp/dhclient.confВставляем запись:
interface "enp0s3"{    supersede domain-name-servers 8.8.8.8, 8.8.4.4;}
* где enp0s3 — имя сетевого интерфейса, который будет получать адрес от сервера DHCP. 8.8.8.8, 8.8.4.4 — адреса, которые будут настроены на интерфейсе, независимо от того, какие предложит сервер DHCP.
Или мы можем использовать адреса от DHCP, но сделать приоритетными свои:
interface "enp0s3"{    prepend domain-name-servers 127.0.0.1;}
* в данном примере, мы зададим в качестве основного сервера DNS — 127.0.0.1.
Чтобы данный метод сработал в CentOS 8, необходимо открыть файл:
vi /etc/NetworkManager/NetworkManager.confВ раздел [main] добавить:
[main]dhcp=dhclient
Переопределение DNS в NetworkManager (альтернативный способ)
Метод, описанный выше по переопределению DNS не подходит для NetworkManager без изменения настройки dhcp, так как адреса будут получены и обработаны с помощью встроенных методов. Выше, предоставлено решение в виде настройки dhcp=dhclient, однако мы рассмотрим альтернативный способ, на случай, если кому-то это пригодится.
Создаем файл:
vi /etc/NetworkManager/dispatcher.d/99-resolv.conf.dhclient#!/bin/bashsleep 1rm -f /etc/resolv.confecho '# Generated by dispatcher' > /etc/resolv.confecho 'nameserver 127.0.0.1' >> /etc/resolv.confecho '' >> /etc/resolv.confcat /var/run/NetworkManager/resolv.conf >> /etc/resolv.conf
* в данном примере мы создали скрипт, который сначала добавит нужную нам запись в файл /etc/resolv.conf, а после добавит туда значения, полученные от DHCP. Обратите внимание, что в конкретном примере:
- адрес 127.0.0.1 задается в качестве приоритетного сервера DNS.
 - остальные настройки получаем от DHCP, которые NetworkManager помещает в файл /var/run/NetworkManager/resolv.conf.
 
Разрешаем запуск скрипта:
chmod +x /etc/NetworkManager/dispatcher.d/99-resolv.conf.dhclientПерезапускаем сеть:
systemctl restart NetworkManager
                                
Только полноправные пользователи могут оставлять комментарии. Аутентифицируйтесь пожалуйста, используя сервисы.