Налаштування мережевих інтерфейсів в CentOS 8/7

У даній статті ми розглянемо способи настройки мережі в системах Linux CentOS 7/8, покажемо, як налаштовувати мережевих інтерфейсів через конфігураційні файли, основні утиліти для налаштування мережі та багато іншого. Це актуальна тема, тому що спочатку настройка будь-якого сервера починається з налаштування на ньому мережі.

У статті ми покажемо особливості настройки мережі в CentOS 7 за допомогою стандартного сервісу network. Подивимося, як використовувати для настройки мережі NetworkManager (NM), який пропонується за замовчуванням в CentOS 8.

зміст:

  • Іменування мережевих інтерфейсів в CentOS
  • Початкове налаштування мережі при установці CentOS
  • Ручна настройка конфігураційного файлу мережевого інтерфейсу в CentOS
  • Як відключити IPv6 в CentOS?
  • Як вказати DNS сервера для мережевого інтерфейсу в CentOS?
  • Як налаштувати декілька IP адрес на одному мережевому інтерфейсі CentOS?
  • Налаштування VLAN (802.1Q) в CentOS
  • Налаштування декількох мережевих інтерфейсів в CentOS
  • Корисні команди по роботі з мережею в CentOS
  • Утиліти адміністрування мережі в CentOS
  • Управління мережею за допомогою NetworkManager в CentOS 8

Іменування мережевих інтерфейсів в CentOS

Класична схема іменування мережевих інтерфейсів в Linux привласнює імена eth0, eth1 і так далі по порядку. Але ці імена не прив'язуються жорстко до інтерфейсів і після перезавантаження при наявності декількох мережевих інтерфейсів, ці імена можуть помінятися. Це може доставляти деякі проблеми, при налаштуванні, наприклад, брандмауера через firewalld або iptables. У зв'язку з цим починаючи з RedHat 7 і CentOS 7, вирішено було призначати імена мережевих інтерфейсів на основі ієрархії різних схем іменування. За замовчуванням systemd буде по черзі застосовувати схему віртуальних пакунків за зупинившись на першій доступною і прийнятною. Імена присвоюються в автоматичному режимі, залишаються незмінними навіть якщо апаратні засоби додані або змінені. З іншого боку, такі імена інтерфейсів менш читабельні, наприклад, enp5s0 або ens3, ніж традиційні eth0 і eth1.

Можна повернутися до стандартного імені інтерфейсу Linux за допомогою наступних дій.

відредагуйте файл / Etc / default / grub:

# Nano / etc / default / grub

У рядок GRUB_CMDLINE_LINUX потрібно додати:

net.ifnames = 0 biosdevname = 0

Приклад повної рядки:

GRUB_CMDLINE_LINUX = "consoleblank = 0 fsck.repair = yes crashkernel = auto nompath selinux = 0 rhgb quiet net.ifnames = 0 biosdevname = 0"

Оновлення конфігурацію grub:

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

Перейменуйте конфігураційний файл мережевого інтерфейсу:

# Mv / etc / sysconfig / network-scripts / ifcfg-ens3 / etc / sysconfig / network-scripts / ifcfg-eth0

І замінити значення DEVICE:

Збережіть файл, перезавантажте сервер і перевірте чи все в порядку:

# Ip a

Інтерфейс тепер називається eth0.

Початкове налаштування мережі при установці CentOS

Спочатку при установці CentOS Linux, ви можете налаштувати мережевий інтерфейс в графічному режимі в пункті меню "Network & Hostname". В даному пункті ви вказуєте ім'я сервера, додаєте потрібний IP адреса і шлюз, DNS і багато іншого. Більш детальну настройку на даному етапі, ви можете подивитися в статті за посиланням вище.

Ручна настройка конфігураційного файлу мережевого інтерфейсу в CentOS

Виведемо список доступних мережевих інтерфейсів в системі:

# Ip a

Файли конфігурації мережі вашого сервера зберігаються в каталозі / Etc / sysconfig / network-scripts. Ці файли створює демон NetworkManager для кожного мережевого інтерфейсу. У нашому випадку файл конфігурації називається ifcfg-eth0 (У вас може відрізнятися в залежності від схеми іменування мережевого інтерфейсу).

Розглянемо основні параметри:

  • DEVICE - ім'я мережевого адаптера, збігається з ім'ям в системі, у нас це eht0
  • BOOTPROTO - спосіб призначення IP-адреси (static - статичне значення, вказуємо в ручну. Dhcp - отримати адресу автоматично)
  • IPADDR - IP-адреса
  • NETMASK - маска підмережі
  • GATEWAY - шлюз
  • DNS1 - Основний DNS-сервер
  • DNS2 - альтернативний DNS-сервер
  • ONBOOT - спосіб запуску мережевого інтерфейсу (yes - автоматично, no - вручну)
  • UUID - унікальний ідентифікатор мережевого інтерфейсу. Можна згенерувати самостійно командою uuidgen.
  • IPV4_FAILURE_FATAL - відключення мережевого інтерфейсу з IP-адресою v4, якщо він має невірну конфігурацію (yes - відключити, no - не відключати)
  • IPV6_FAILURE_FATAL - відключення мережевого інтерфейсу з IP-адресою v6, якщо він має невірну конфігурацію (yes - відключити, no - не відключати)
  • IPV6_AUTOCONF - дозволяє або забороняє Автоконфігурірованіе Ipv6 за допомогою протоколу
  • IPV6_INIT - включення можливості використання адресації Ipv6 (yes - адресація може використовуватися, no - не використовується)
  • PEERROUTES - встановлює пріоритет настройки шлюзу, при використанні DHCP
  • IPV6_PEERROUTES - встановлює пріоритет настройки шлюзу, при використанні DHCP для IPv6

Виходячи з цієї інформації, налаштуємо мережевий інтерфейс.

Налаштування статичної IP адреси в CentOS

Відкриємо файл для редагування:

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

У цьому прикладі я вказав статичний IP адреса, маску підмережі, шлюз і кілька DNS серверів. Включаємо автозапуск інтерфейсу:

ONBOOT = "yes"

Після всіх модифікацій, потрібно виконати рестарт сервісу network. Якщо все в порядку, ви отримаєте такий лістинг:

[Root @ server network-scripts] # ​​service network restart

Restarting network (via systemctl): [OK]

Також можна просто перезапустити всі профілі підключень:

# Nmcli connection reload

Отримання динамічного IP адреси для інтерфейсу через DHCP

Якщо ваш сервер повинен отримати IP адресу від DHCP півночі, відкрийте конфігураційний файл керування і змініть настройки:

Тобто ми прибрали всі настройки, пов'язані з IP-адресами і маскою, а так же поміняли спосіб призначення IP-адреc на dhcp (BOOTPROTO = "dhcp"). Після всіх змін, не забуваємо виконувати перезавантаження network.

Як відключити IPv6 в CentOS?

На час написання статті активного використання ipv6 в Росії немає, та й найчастіше якщо така можливість є, адміністратори вважають за краще протокол ipv4. Тому якщо ви все ж не використовуєте даний протокол, його потрібно відключити на сервері. Якщо ви точно впевнені, що жоден з сервісів не налаштований під роботу з ipv6, можете відразу перейти до налаштування мережевого інтерфейсу, якщо ж ні, то почніть з перевірки. Нам потрібно перевірити, які сервіси використовують ipv6 і відключити даний протокол в конфігурації сервісу. Запустимо команду:

# Netstat -tulnp

У мене сервер тестовий, тому ipv6 використовується тільки для sshd і cronyd. Це можна визначити по ":::".

Щоб не виникало проблем після відключення ipv6 в конфігурації мережі, вимкніть даний протокол в сервісах, в яких вони використовуються на вашому сервері. Наприклад для sshd, потрібно відкрити конфігураційний файл:

# Mcedit / etc / ssh / sshd_config

І розкоментуйте рядки:

#AddressFamily any #ListenAddress 0.0.0.0

Після чого перезапустіть сервіс:

Як бачимо, для sshd протокол ipv6 тепер недоступний. Проробіть аналогічні налаштування з усіма сервісами.

Перейдемо до відключення протоколу ipv6 в настройках мережі. Відкрийте файл /etc/sysctl.conf:

# Nano /etc/sysctl.conf І додайте туди наступні рядки:

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

Збережіть файл і застосуєте через:

[Root @ server ~] # sysctl -p

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

Перейдемо до файлу / Etc / sysconfig / network. Додайте в нього наступну конфігурацію:

NETWORKING_IPV6 = no IPV6INIT = no

З файлу конфігурації мережевого інтерфейсу / Etc / sysconfig / network-scripts / ifcfg-eth0 видаліть рядок:

IPV6INIT = "yes"

І нарешті додамо заборону на роботу ipv6 в grub:

# Nano / etc / default / grub

В кінець рядка GRUB_CMDLINE_LINUX, додаємо:

ipv6.disable = 1

Після всіх налаштувань, збережіть файл і обновіть grub:

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

Виконайте перезавантаження сервера і перевірте конфігурацію мережі:

[Root @ server ~] # ifconfig

eth0: flags = 4163 mtu 1500 inet 185. *. *. * netmask 255.255.255.0 broadcast 185. *. *. 255 ether 52: 54: 00: d3: 1c: 3e txqueuelen 1000 (Ethernet) RX packets 10068 bytes 613092 ( 598.7 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 32 bytes 5399 (5.2 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 loop txqueuelen 1000 (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

протокол ipv6 на сервері відключений.

Як вказати DNS сервера для мережевого інтерфейсу в CentOS?

Налаштувати DNS-сервера для вашого сервера, ви можете за допомогою файлу /etc/resolv.conf або вказати їх в настройках мережевого інтерфейсу. При налаштуванні static конфігурації для мережевого інтерфейсу, ми вже вказували DNS-сервера, через параметри:

DNS1 = DNS2 = DNS3 =

Змініть вам DNS-сервера і перезавантажте сервіс network.

У файл /etc/resolv.conf, DNS-сервера прописуються автоматично при перезавантаженні сервера, забираючи їх з файлу конфігурації мережі. Якщо ж ви не вказали DNS-сервера при настройці мережі, пропишіть їх вручну в файл /etc/resolv.conf:

nameserver 77.88.8.8 nameserver 8.8.8.8 nameserver 8.8.4.4

Як налаштувати декілька IP адрес на одному мережевому інтерфейсі CentOS?

Якщо вам потрібно використовувати декілька IP-адрес на одному мережевому інтерфейсі, настройку можна виконати через алиас інтерфейсу або ж додавши додатковий IP-адресу в основний файл конфігурації.

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

І змініть його наступним чином:

# Generated by parse-kickstart UUID = "b8bccd4c-fb1b-4d36-9d45-044c7c0194eb" IPADDR1 = "*. *. *. *" IPADDR2 = "*. *. *. *" GATEWAY = "*. *. *. * "NETMASK =" 255.255.255.0 "BOOTPROTO =" static "DEVICE =" eth0 "ONBOOT =" yes "DNS1 = 77.88.8.8 DNS2 = 8.8.8.8 DNS3 = 8.8.4.4 

де:

IPADDR1 - перший IP-адреса

IPADDR2 - другий IP-адреса

GATEWAY - основний шлюз

або створіть alias до вашого основного файлу конфігурації:

# Nano / etc / sysconfig / network-scripts / ifcfg-eth0: 1

І додайте кілька рядків, без основного шлюзу:

Після всіх налаштувань потрібно виконати перезапуск мережі:

[Root @ server network-scripts] # ​​service network restart

Restarting network (via systemctl): [OK]
У Windows теж можна налаштувати декілька IP адрес (алиасов) на одному інтерфейсі.

Налаштування VLAN (802.1Q) в CentOS

Детальніше про налаштування декількох VLAN для одного мережевого інтерфейсу в CentOS ми говорили в статті: Налаштування VLAN на мережевому інтерфейсі в CentOS.

Налаштування декількох мережевих інтерфейсів в CentOS

Якщо у вас на сервері кілька мережевих інтерфейсів, для них можна вказати різні IP-адреси. Розберемося як це зробити. Якщо у вас на сервері більше одного мережевого інтерфейсу, команда "ip a"Повинна відобразити цю інформацію:

[Root @ server ~] # ip a

1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen тисячі 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: eth0: mtu 1 500 qdisc pfifo_fast state UP group default qlen 1000 link / ether 52: 54: 00: d3: 1c: 3e brd ff: ff: ff: ff: ff: ff inet 185. *. *. * / 16 brd 185. *. *. 255 scope global eth0 valid_lft forever preferred_lft forever 3: eth1: mtu 1500 qdisc noop state DOWN group default qlen 1000 link / ether 52: 54: 00: 5f: f3: b8 brd ff: ff : ff: ff: ff: f

Щоб настроїти другий інтерфейс, потрібно створити для нього файл:

# Nano / etc / sysconfig / network-scripts / ifcfg-eth1

І додайте наступну конфігурацію:

IPADDR = "*. *. *. *" GATEWAY = "*. *. *. *" NETMASK = "255.255.255.0" BOOTPROTO = "static" DEVICE = "eth1" ONBOOT = "yes"

Після цього на сервері потрібно встановити шлюз. Перевіримо який шлюз встановлений в даний момент і при необхідності поміняємо його:

[Root @ server ~] # netstat -nr

Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 185. *. *. 1 0.0.0.0 UG 0 0 0 eth1 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1 185. *. 0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 185. *. *. 0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

В якості основного шлюзу у нас виступає інтерфейс eth1. Я ж хочу використовувати eth0, для цього змінимо його:

# Route add default gw *. *. *. * - замінюємо шлюз на той, який зазначений в мережевому інтерфейсі eth0

# Route delete default gw *. *. *. * - видаляємо шлюз інтерфейсу eth1

Якщо ви хочете, щоб цей параметр збереглася після перезавантаження сервера, додайте ці команди в rc.local (Див. Статтю про автозавантаження сервісів в CentOS).

Корисні команди по роботі з мережею в CentOS

  • ifdown eth1 - відключити вказаний мережевий інтерфейс.
  • ifup eth1 - порушити зазначене мережевий інтерфейс.
  • ifconfig - перевірити інформацію про всіх інтерфейсах.
  • ifconfig -a | grep ether | gawk 'print $ 2' - команда для виведення MAC-адрес інтерфейсів
  • ip a | grep ether | gawk 'print $ 2' - те ж саме, тільки через утиліту ip a
  • service network restart або systemctl restart network - перезапустити сервіс network за допомогою systemctl
  • systemctl restart NetworkManager.service - перезапустити NM
  • ip route або ip route show - подивитися таблицю маршрутизації
  • ping host - пропінгувати вказаний хост
  • whois domain - отримати інформацію whois для домену
  • dig domain - отримати DNS інформацію про домен

Утиліти адміністрування мережі в CentOS

Якщо сервер вже працює деякий час або ж налаштуванням займалися взагалі не ви, перша дія яке потрібно зробити, це дізнатися які інтерфейси присутні на сервері. Для зручності встановіть необхідні інструменти з базового сховища:

# Yum install net-tools -y

Після установки, можна скористатися утилітою ifconfig:

[Root @ server ~] # ifconfig

eth0: flags = 4163 mtu 1500 inet 185. *. *. * netmask 255.255.255.0 broadcast 185. *. *. 255 inet6 fe80 :: 5054: ff: fed3: 1c3e prefixlen 64 scopeid 0x20 ether 52: 54: 00: d3 : 1c: 3e txqueuelen 1000 (Ethernet) RX packets 2189424 bytes 144208326 (137.5 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2350 bytes 260486 (254.3 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Як бачимо, ім'я нашого мережевого інтерфейсу eth0.

Без установки пакета net-tools, ви можете перевірити ваші інтерфейси за допомогою наступної команди:

# Ip a

Результат буде практично той же:

Управління мережею за допомогою NetworkManager в CentOS 8

У CentOS 8 для налаштування мережі рекомендується використовувати тільки NetworkManager. Ця служба управління мережевими підключеннями, контролює настройки і застосовує зміни до мережевих адаптерів.

Щоб перевірити статус NM, використовуйте команду:

# Systemctl status NetworkManager.service

У CentOS пропонується використовувати для настройки мережі командну консоль nmcli або графічну утиліту nmtui.

Щоб перейти в режим налаштування мережі, введіть команду:

# nmtui

При виборі першого пункту, у вас відкриється вікно з вибором мережевого інтерфейсу для редагування:

Вибираємо потрібний нам інтерфейс і редагуємо:

Нам є редагування імені, IP-адреси, Шлюзу, DNS-серверів. Так само в інтерактивному меню NM, ми можемо змінити спосіб призначення IP адреси, на DHCP:

замініть "manual"На"automatic":

Після чого збережіть налаштування. За допомогою nmtui в графічному режимі, ви можете виконати будь-які настройки, які виконуєте вручну через конфігураційні файли. Якщо ви віддаєте перевагу використовувати командний рядок для встановлення інтерфейсів, можете використовувати nmcli. Наприклад, такі команди змінять IP адреса, щлюз і DNS сервера для інтерефейса eth1.

# Nmcli con mod eth1 ipv4.addresses 192.168.10.14/24
# Nmcli con mod eth1 ipv4.gateway 192.168.10.1
# Nmcli con mod eth1 ipv4.dns "8.8.8.8"

Для застосування змін, перезавантажте інтерфейс:

# Nmcli con up eth1

Якщо ж вам зручніше працювати з файлами конфігурації, встановіть через yum окремий пакет network-scripts (В CentOS 8 за замовчуванням його немає):

# Yum install network-scripts -y

Upgraded: initscripts-10.00.1-1.el8_0.1.x86_64 Installed: network-scripts-10.00.1-1.el8_0.1.x86_64 network-scripts-team-1.27-10.el8.x86_64 Complete!

Після установки даного пакета, ви можете редагувати настройки мережі, як ми описували раніше, через конфігураційні файли: