У даній статті ми розглянемо способи настройки мережі в системах 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 aservice network restart
абоsystemctl restart network
- перезапустити сервіс network за допомогою systemctlsystemctl restart NetworkManager.service
- перезапустити NMip 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!
Після установки даного пакета, ви можете редагувати настройки мережі, як ми описували раніше, через конфігураційні файли: