Настройка сети centos 7 nmcli
Обновлено: 04.07.2024
Инструкция применима к CentOS версий 7 и 8, CentOS mini (минимальная сборка), Fedora.
Базовая настройка сети
Смотрим все установленные сетевые адаптеры в системе:
В результате получаем что-то подобное:
1: lo: <LOOPBACK,UP,LOWER_UP> 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
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:81:28:3c brd ff:ff:ff:ff:ff:ff
inet 192.168.156.22/22 brd 192.168.159.255 scope global ens32
valid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:81:3f:22 brd ff:ff:ff:ff:ff:ff
inet 10.243.254.68/26 brd 10.243.254.127 scope global ens34
valid_lft forever preferred_lft forever
* Из примера видно, что в моем CentOS есть 3 сетевых карты — lo (локальная петля), ens32 и ens34 — сетевые Ethernet адаптеры.
Если нужно настроить сеть для адаптера ens32, открываем на редактирование следующий конфигурационный файл:
И приводим его к следующему виду:
DEVICE=ens32
BOOTPROTO=static
IPADDR=192.168.0.155
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=192.168.0.54
DNS2=192.168.0.11
ONBOOT=yes
. а также для CentOS 8 добавим:
Основные опции
Опция | Описание | Возможные значения |
---|---|---|
DEVICE | Имя сетевого адаптера | Должно совпадать с именем в системе. В данном примере ens32 |
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 |
Чтобы настройки применились, перезапускаем сетевую службу.
systemctl restart network
б) для CentOS 8 вводим 2 команды:
systemctl restart NetworkManager
nmcli networking off; nmcli networking on
* в большей степени, это основное отличие версий 7 и 8. Чтобы команды смогли поменять настройки, для интерфейсов необходима настройка NM_CONTROLLED=yes.
Дополнительные опции (не обязательны для работы сети)
Настройка сети из консоли (командами)
Настройка из консоли будет работать только до перезагрузки системы. Ее удобно применять для временного конфигурирования или проведения тестов.
Назначение IP-адреса или добавление дополнительного к имеющемуся:
ip a add 192.168.0.156/24 dev ens32
* в данном примере к сетевому интерфейсу ens32 будет добавлен IP 192.168.0.156.
Изменение IP-адреса:
ip a change 192.168.0.157/24 dev ens32
* однако, по факту, команда отработает также, как add.
Удаление адреса:
ip a del 192.168.163.157/24 dev ens32
Добавление маршрута по умолчанию:
ip r add default via 192.168.0.1
Добавление статического маршрута:
ip r add 192.168.1.0/24 via 192.168.0.18
Удаление маршрутов:
ip r del default via 192.168.160.1
ip r del 192.168.1.0/24 via 192.168.0.18
Команда ifconfig
В новых версиях CentOS утилита ifconfig не установлена и при вводе одноименной команды можно увидеть ошибку «Команда не найдена». Необходимо либо воспользоваться командой ip (ip address), либо установить утилиту ifconfig.
yum install ifconfig
yum install net-tools
Настройка WiFi
Принцип настройки беспроводной сети на CentOS не сильно отличается от проводной.
Создаем конфигурационный файл со следующим содержимым:
ESSID="dmoskwifi"
MODE=Managed
KEY_MGMT=WPA-PSK
TYPE=Wireless
BOOTPROTO=none
NAME=dmoskwifi
ONBOOT=yes
IPADDR=192.168.1.50
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1
DNS2=77.88.8.8
* где dmoskwifi — название WiFi сети (SSID).
Несколько IP на одном сетевом адаптере
В зависимости от версии операционной системы, дополнительные адреса добавляются посредством:
- Псевдонимов — создание нового виртуального интерфейса с названием <имя интерфейса>:<номер>.
- Добавлением IPADDRx и NETMASKx в конфигурационном файле.
Рассмотрим оба варианта подробнее.
Создание псевдонимов (более ранние версии CentOS 7 и ниже)
Создаем новый конфигурационный файл для сетевого интерфейса:
DEVICE=ens32:1
BOOTPROTO=static
IPADDR=192.168.0.156
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=192.168.0.54
DNS2=192.168.0.11
ONBOOT=yes
* где ens32 — имя физического интерфейса, :1 — виртуальный номер.
Перезапускаем сетевые службы.
Настройка конфигурационного файла (поздние версии CentOS 7 и выше)
Открываем конфигурационный файл для сетевого интерфейса, например:
DEVICE=ens32
BOOTPROTO=static
IPADDR=192.168.0.155
NETMASK=255.255.255.0
IPADDR1=192.168.0.156
NETMASK1=255.255.255.0
IPADDR2=192.168.0.157
NETMASK2=255.255.255.0
GATEWAY=192.168.0.1
DNS1=192.168.0.54
DNS2=192.168.0.11
ONBOOT=yes
* где ens32 — имя физического интерфейса, дополнительные адреса задаются с помощью опций IPADDR1, IPADDR2, NETMASK1, NETMASK2.
Перезапускаем сетевые службы.
Для автоматического получения IP-адреса от сервера DHCP мы должны задать следующее значение для опции BOOTPROTO в конфигурационном файле:
* в наших примерах выше данный параметр имеет значение static.
Переопределение DNS с помощью dhclient.conf
Также мы можем переопределять настройки для DHCP с помощью конфигурационного файла. Например, если мы хотим, чтобы адреса DNS были заданы определенные, а не полученны от DHCP, открываем конфиг:
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, необходимо открыть файл:
В раздел [main] добавить:
Переопределение DNS в NetworkManager (альтернативный способ)
Метод, описанный выше по переопределению DNS не подходит для NetworkManager без изменения настройки dhcp, так как адреса будут получены и обработаны с помощью встроенных методов. Выше, предоставлено решение в виде настройки dhcp=dhclient, однако мы рассмотрим альтернативный способ, на случай, если кому-то это пригодится.
В данной статье будет показано несколько методов настройки сетевых интерфейсов в CentOS 7, в частности будут рассмотрены методы присвоения статического ip-адреса интерфейсу. Просмотр сетевых интерфейсов В начале настройки необходимо просмотреть существующие в системе интерфейсы и то как они названы в системе. Выполняется это командой ip address или ip a Результатом команды будет выведен список всех […]
В данной статье будет показано несколько методов настройки сетевых интерфейсов в CentOS 7, в частности будут рассмотрены методы присвоения статического ip-адреса интерфейсу.
Просмотр сетевых интерфейсов
В начале настройки необходимо просмотреть существующие в системе интерфейсы и то как они названы в системе. Выполняется это командой ip address или ip a
Результатом команды будет выведен список всех присутсвующих в системе сетевых интерфейсов, с их MAC-адресами и, если есть, назначенными ip-адресами.
Также имена интерфейсов можно узнать используя команду
ifconfig
, которая также выведет подробную информацию обо всех сетевых устройствах.
Далее можно перейти к непосредственной настройке сетевых интерфейсов. Существует несколько вариантов настройки.
Вариант 1. Настройка через конфигурационный файл
Конфигурационные файлы сетевых интерфейсов хранятся в директории /etc/sysconfig/network-scripts, каждый файл шмеет следующую структуру ifcfg-имя_интерфейса, например, ifcfg-enp0s3. Открыть его можно любым редактором, например, vim:
Интересующие параметры в данном файле следующие:
- BOOTPROTO — тип настройки интерфейса, если выставлен dhcp, то необходимо поменять на static
- DEFROUTE — флаг, указывающий на включать или нет маршрут по-умолчанию, подвязанный к данному интерфейсу при включении интерфейса (по-умолчанию выставлен yes)
- ONBOOT — флаг, указывающий включать ли интерфейс при загрузке, рекомендуется установить значение yes
- IPADDR — указывается статический адрес интерфейса
- PREFIX — маска подсети, указывается в битовом формате, например, 24
- GATEWAY — адрес шлюза сети
- DNS1 — адрес DNS-сервера
После сохранения настроек необходимо перезапустить сетевые интерфейсы командой
Вариант 2: Настройка с помощью утилиты nmtui
Утилита запускается командой
nmtui.
Представляет собой редактор параметров сети, т. е. утилита взаимодействует с приложением NetworkManager. После запуска необходимо выбрать параметр Изменить соединение
Далее необходимо выбрать из списка интересующий интерфейс и параметр Изменить
Переходы по пунктам меню производятся клавишей TABДалее необходимо развернуть раздел Конфигурация IPv4, выполняется параметром показать рядом с пунктом, и внести следующие изменения:
- Конфигурация IPv4 — выбрать значение Вручную
- Адреса — указать необходимй адрес интерфейса
- Шлюз — указать адрес шлюза
- Серверы DNS — внести адреса DNS-серверов
По завершению нажать на Ок
Вариант 3: Настройка с использованием утилиты nmcli
Для присвоения статического ip-адреса сетевому интерфейсу с помощью утилиты nmcli необходимо выполнить команду следующего вида:
nmcli con add type ethernet con-name itcare-lab ifname <имя_интерфейса> ip4 <ip_адрес/маска_подсети> gw4 <адрес_шлюза>
Также можно указать и DNS-сервера с помощью утилиты nmcli
nmcli con mod itcare-lab ipv4.dns
На этом краткий мануал по настройке статического ip-адреса в CentOS7 завершен
В данной статье мы рассмотрим способы настройки сети в системах Linux CentOS 7/8, покажем, как настраивать сетевых интерфейсов через конфигурационные файлы, основные утилиты для настройки сети и многое другое. Это актуальная тема, так как изначально настройка любого сервера начинается с настройки на нем сети.
В статье мы покажем особенности настройки сети в CentOS 7 с помощью стандартного сервиса network. Посмотрим, как использовать для настройки сети NetworkManager (NM), который предлагается по-умолчанию в CentOS 8.
Именование сетевых интерфейсов в CentOS
Классическая схема именования сетевых интерфейсов в Linux присваивает имена eth0, eth1 и так далее по порядку. Но эти имена не привязываются жестко к интерфейсам и после перезагрузки при наличии нескольких сетевых интерфейсов, эти имена могут поменяться. Это может доставлять некоторые проблемы, при настройке, например, межсетевого экрана через firewalld или iptables. В связи с этим начиная с RedHat 7 и CentOS 7, решено было назначать имена сетевых интерфейсов на основе иерархии различных схем именования. По умолчанию systemd будет поочередно применять схемы именования, остановившись на первой доступной и применимой. Имена присваиваются в автоматическом режиме, остаются неизменными даже если аппаратные средства добавлены или изменены. С другой стороны, такие имена интерфейсов менее читабельны, например, enp5s0 или ens3, чем традиционные eth0 и eth1.
Можно вернуться к стандартному имени интерфейса Linux с помощью следующих действий.
Отредактируйте файл /etc/default/grub:
В строку GRUB_CMDLINE_LINUX нужно добавить:
Пример полной строки:
Обновите конфигурацию grub:
Переименуйте конфигурационный файл сетевого интерфейса:
И заменить значение DEVICE:
Сохраните файл, перезагрузите сервер и проверьте все ли в порядке:
Интерфейс теперь называется eth0.
Первоначальная настройка сети при установке CentOS
Изначально при установке CentOS Linux, вы можете настроить сетевой интерфейс в графическом режиме в пункте меню “Network & Hostname”. В данном пункте вы указываете имя сервера, добавляете нужный IP адрес и шлюз, DNS и многое другое. Более подробную настройку на данном шаге, вы можете посмотреть в статье по ссылке выше.
Ручная настройка конфигурационного файла сетевого интерфейса в CentOS
Выведем список доступных сетевых интерфейсов в системе:
Файлы конфигурации сети вашего сервера хранятся в каталоге /etc/sysconfig/network-scripts. Эти файлы создает демон NetworkManager для каждого сетевого интерфейса. В нашем случае файл конфигурации называется ifcfg-eth0 (у вас может отличаться в зависимости от схемы именования сетевого интерфейса).
Рассмотрим основные параметры:
Исходя из этой информации, настроим сетевой интерфейс.
Настройка статического IP адреса в CentOS
Откроем файл для редактирования:
В этом примере я указал статический IP адрес, маску подсети, шлюз и несколько DNS серверов. Включаем автозапуск интерфейса:
После всех модификаций, нужно выполнить рестарт сервиса network. Если все в порядке, вы получите такой листинг:
Также можно просто перезапустить все профили подключений :
Получение динамического IP адреса для интерфейса через DHCP
Если ваш сервер должен получить IP адрес от DHCP севера, откройте конфигурационный файл интерфейса и измените настройки:
То есть мы убрали все настройки, связанные с IP-адресами и маской, а так же поменяли способ назначения IP-адреcа на dhcp (BOOTPROTO=”dhcp”). После всех изменений, не забываем выполнять перезагрузку network.
Как отключить IPv6 в CentOS?
На время написания статьи активного использования ipv6 в России нет, да и зачастую если таковая возможность имеется, администраторы предпочитают протокол ipv4. Поэтому если вы все же не используете данный протокол, его нужно отключить на сервере. Если вы точно уверены, что ни один из сервисов не настроен под работу с ipv6, можете сразу перейти к настройке сетевого интерфейса, если же нет, то начните с проверки. Нам нужно проверить, какие сервисы используют ipv6 и отключить данный протокол в конфигурации сервиса. Запустим команду:
У меня сервер тестовый, поэтому ipv6 используется только для sshd и cronyd. Это можно определить по “. ”.
Чтобы не возникало проблем после отключения ipv6 в конфигурации сети, отключите данный протокол в сервисах, в которых они используются на вашем сервере. Например для sshd, нужно открыть конфигурационный файл:
И раскомментируйте строки:
После чего перезапустите сервис:
Как видим, для sshd протокол ipv6 теперь недоступен. Проделайте аналогичные настройки со всеми сервисами.
Перейдем к отключению протокола ipv6 в настройках сети. Откройте файл /etc/sysctl.conf:
Сохраните файл и примените через:
Перейдем к файлу /etc/sysconfig/network. Добавьте в него следующую конфигурацию:
Из файла конфигурации сетевого интерфейса /etc/sysconfig/network-scripts/ifcfg-eth0 удалите строку:
И наконец добавим запрет на работу ipv6 в grub:
В конец строки GRUB_CMDLINE_LINUX, добавляем:
После всех настроек, сохраните файл и обновите grub:
Выполните перезагрузку сервера и проверьте конфигурацию сети:
Протокол ipv6 на сервере отключен.
Как указать DNS сервера для сетевого интерфейса в CentOS?
Настроить DNS-сервера для вашего сервера, вы можете с помощью файла /etc/resolv.conf или указать их в настройках сетевого интерфейса. При настройке static конфигурации для сетевого интерфейса, мы уже указывали DNS-сервера, через параметры:
Установите нужные вам DNS-сервера и перезагрузите сервис network.
В файл /etc/resolv.conf, DNS-сервера прописываются автоматически при перезагрузке сервера, забирая их с файла конфигурации сети. Если же вы не указали DNS-сервера при настройке сети, пропишите их вручную в файл /etc/resolv.conf:
Как настроить несколько IP адресов на одном сетевом интерфейсе CentOS?
Если вам нужно использовать несколько IP-адресов на одном сетевом интерфейсе, настройку можно выполнить через алиас интерфейса или же добавив дополнительный IP-адрес в основной файл конфигурации.
И измените его следующим образом:
IPADDR1 — первый IP-адрес
IPADDR2 — второй IP-адрес
GATEWAY — основной шлюз
Либо создайте alias к вашему основному файлу конфигурации:
И добавьте несколько строк, без основного шлюза:
После всех настроек нужно выполнить перезапуск сети:
В Windows тоже можно настроить несколько IP адресов (алиасов) на одном интерфейсе.Настройка VLAN (802.1Q) в CentOS
Подробнее о настройке нескольких VLAN для одного сетевого интерфейса в CentOS мы говорили в статье: Настройка VLAN на сетевом интерфейсе в CentOS.
Настройка нескольких сетевых интерфейсов в CentOS
Если у вас на сервере несколько сетевых интерфейсов, для них можно указать разные IP-адреса. Разберемся как это сделать. Если у вас на сервере более одного сетевого интерфейса, команда “ip a” должна отобразить эту информацию:
Чтобы сконфигурировать второй интерфейс, нужно создать для него файл:
И добавьте следующую конфигурацию:
После этого на сервере нужно установить шлюз по умолчанию. Проверим какой шлюз установлен в данный момент и при необходимости поменяем его:
В качестве основного шлюза у нас выступает интерфейс eth1. Я же хочу использовать eth0, для этого изменим его:
Если вы хотите, чтобы данная настройка сохранилась после перезагрузки сервера, добавьте эти команды в rc.local (см. статью об автозагрузке сервисов в CentOS).
Полезные команды по работе с сетью в CentOS
Утилиты администрирования сети в CentOS
Если сервер уже работает некоторое время или же настройкой занимались вообще не вы, первое действие которое нужно сделать, это узнать какие интерфейсы присутствуют на сервере. Для удобства установите необходимые инструменты из базового репозитория:
После установки, можно воспользоваться утилитой ifconfig:
Как видим, имя нашего сетевого интерфейса eth0.
Без установки пакета net-tools, вы можете проверить ваши интерфейсы с помощью следующей команды:
Результат будет практически тот же:
Управление сетью с помощью NetworkManager в CentOS 8
В CentOS 8 для настройки сети рекомендуется использовать только NetworkManager. Эта служба управление сетевыми подключениями, контролирует настройки и применяет изменения к сетевым адаптерам.
Чтобы проверить статус NM, используйте команду:
В CentOS предлагается использовать для настройки сети командную консоль nmcli или графическую утилиту nmtui.
Чтобы перейти в режим настройк сети, введите команду:
При выборе первого пункта, у вас откроется окно с выбором сетевого интерфейса для редактирования:
Выбираем нужный нам интерфейс и редактируем:
Нам доступно редактирование имени, IP-адреса, Шлюза, DNS-серверов. Так же в интерактивном меню NM, мы можем изменить способ назначения IP адреса, на DHCP:
Замените “manual” на “automatic”:
После чего сохраните настройки. С помощью nmtui в графическом режиме, вы можете выполнить любые настройки, которые выполняете вручную через конфигурационные файлы. Если вы предпочитаете использовать командную строку для настройки интерфейсов, можете использовать nmcli. Например, следующие команды изменят IP адрес, щлюз и DNS сервера для интерефейса eth1.
Для применения изменений, перезагрузите интерфейс:
Если же вам удобнее работать с файлами конфигурации, установите через yum отдельный пакет network-scripts (в CentOS 8 по умолчанию его нет):
После установки данного пакета, вы можете редактировать настройки сети, как мы описывали ранее, через конфигурационные файлы:
Первое что нужно сделать - определить доступные сетевые устройства.
Сейчас можно видеть, что IP-адресом сервера является 192.168.0.104, который был выдан DHCP сервером.
Сетевым устройством, в моем случае, является enp0s3 , у вас это имя может выглядеть по другому, например eth0 .
Переходим к конфигурационному файлу /etc/sysconfig/network-scripts/ifcfg-enp0s3 для последующей настройки. Если у вас не оказалось этого файла, то создайте его самостоятельно. Откройте файл любым редактором, я использую редактор vi.
В свежеустановленной CentOS 7 этот конфиг может выглядеть следующим образом.
Измените значения некоторых параметров в этом файле, а также укажите новые параметры.
Затем добавим пару параметров в файле /etc/sysconfig/network , который относится уже не к отдельному сетевому устройству, а к конфигурации сети.
Осталось добавить адреса DNS серверов в файле /etc/resolv.conf . В данном файле указывается не более 3 DNS адресов, использоваться будет только первый, если он недоступен, то выбирается далее по списку.
После правки конфигов перезапустим сетевую службу network.
Проверим изменения IP-адреса.
На этом настройка статического IP-адреса завершена.
Данный способ заключается в использовании утилиты Network Manager, которая помогает в упрощенном виде настроить IP-адрес.
Проверка доступных устройств.
Рекомендую использовать первый способ, т.к. там вы точно знаете, что и где редактируете в отличии от использования Network Manager. Некоторые администраторы и вовсе советуют отключить Network Manager, по причине возможных непреднамеренных изменений настроек сети.
Если вы не хотите, что бы Network Manager управлял каким либо сетевым интерфейсом, то пропишите директиву NM_CONTROLLED=no в конфиге интерфейса ( ifcfg-enp0s3 ) или вовсе отключите его.
systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl restart network
Читайте также: