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

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

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

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

Можна повернутися до стандартного імені інтерфейсу 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"

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

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

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

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

І замінити значення ПРИСТРОЙ:

змінити ім'я мережевого інтерфейсу в centos eth0

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

# ip a

ip a - centos

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

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

Спочатку при установці CentOS Linux, ви можете налаштувати мережевий інтерфейс в графічному режимі в пункті меню “Мережа та ім’я хосту”. В даному пункті ви вказуєте ім’я сервера, додаєте потрібний 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

ручне налаштування параметрів мережі в centos через файл / etc / sysconfig / network-scripts

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

ONBOOT=”yes”

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

[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

в netstat показується ipv6 адреса, як повністю відключити на сервері centos

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

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

# mcedit /etc/ssh/sshd_config

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

#AddressFamily any
#ListenAddress 0.0.0.0

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

netstat тільки ipv4 без ipv6

Як бачимо, для 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

відключити IPV6INIT = no

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

IPV6INIT="yes"

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

# nano /etc/default/grub

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

ipv6.disable=1

centos відключити ipv6 в grub

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

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

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

[root@server ~]# ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> 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<UP,LOOPBACK,RUNNING> 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 – основний шлюз

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

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

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

кілька ip на одному інтерфейсі в centos

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

[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: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 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: <BROADCAST,MULTICAST> 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"

настройка додаткового мережевого інтерфейсу в linux centos

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

[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

netstat - перевірка шлюзу

Якщо ви хочете, щоб цей параметр збереглася після перезавантаження сервера, додайте ці команди в 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 – подивитися таблицю маршрутизації (https://winitpro.ru/index.php/2020/04/13/nastrojka-marshrutov-v-linux/)
  • ping host – пропінгувати вказаний хост
  • whois domain – отримати інформацію whois для домену
  • dig domain – отримати DNS інформацію про домен

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

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

# yum install net-tools -y

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

[root@server ~]# ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 185.*.*.* netmask 255.255.255.0 broadcast 185.*.*.255
inet6 fe80::5054:ff:fed3:1c3e prefixlen 64 scopeid 0x20<link>
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

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

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

# ip a

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

ip a - перевірка стану мережевого інтерфейсу centos

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

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

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

# systemctl status NetworkManager.service

systemctl статус NetworkManager.service

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

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

# nmtui

nmtui - утиліта настройки мережі в centos

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

налаштувати ens3 ітерфейсом на сервері centos

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

настройка ip адреси, шлюзу і dns для мережевого інтерфейсу в centos

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

nmtui - спосіб отримання ipv4 адреси manual / automatic

замініть “посібник“увімкнено”автоматичний”:

настройка dhcp для інтерфейсу в network manager

Після чого збережіть налаштування. За допомогою 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 окремий пакет мережеві скрипти (В 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!

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

мережеві скрипти в centos 8

Leave a Reply

Your email address will not be published. Required fields are marked *