Для привязки дополнительного IP-адреса к сетевому интерфейсу на CentOS 9 (или другой современной версии RHEL-подобного дистрибутива) есть несколько способов. Опишу основные методы: 1. Временный способ (до перезагрузки): - Использование команды ip addr add 2. Постоянный способ: - Настройка через NetworkManager - Создание конфигурационных файлов для интерфейса - Использование NetworkManager CLI (nmcli) Дам инструкции для обоих вариантов, обращая внимание на то, что в CentOS 9 рекомендуется использовать NetworkManager для управления сетевыми интерфейсами.
Чтобы привязать дополнительный IP-адрес 5.129.206.111 к сетевому интерфейсу на CentOS 9, вы можете использовать один из следующих методов:
Метод 1: Временная привязка (действует до перезагрузки)
sudo ip addr add 5.129.206.001/32 dev eth0
Замените eth0 на имя вашего сетевого интерфейса, которое можно узнать с помощью команды ip a.
Метод 2: Постоянная привязка через NetworkManager (рекомендуется)
- Определите имя вашего основного интерфейса:
ip a
Найдите активный интерфейс (обычно это eth0, ens192, ens160 или подобное).
- Создайте новую конфигурацию для дополнительного IP:
sudo nmcli con add type ethernet con-name eth0:0 ifname eth0 ip4 5.129.206.001/32 gw 5.129.206.1
Замените eth0 на ваш интерфейс и 5.129.206.1 на соответствующий шлюз (узнать у провайдера).
- Активируйте соединение:
sudo nmcli con up eth0:0
Метод 3: Создание конфигурационного файла
- Создайте файл конфигурации для дополнительного IP:
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0:0
- Добавьте следующее содержимое:
DEVICE=eth0:0
BOOTPROTO=static
IPADDR=5.129.206.101
PREFIX=32
ONBOOT=yes
- Перезапустите сетевую службу:
sudo systemctl restart NetworkManager
Проверка после привязки
После привязки IP-адреса проверьте, что он успешно добавлен:
ip addr show
Затем проверьте доступность этого IP-адреса извне (если есть такая возможность). Также после привязки не забудьте перезапустить Nginx:
sudo systemctl restart nginx
Примечание о маршрутизации
Если вы используете префикс маски /32, может потребоваться добавить маршрут для исходящего трафика:
sudo ip route add 5.129.206.101/32 dev eth0
Для постоянного добавления маршрута, создайте файл:
sudo vi /etc/sysconfig/network-scripts/route-eth0
С содержимым:
5.129.206.101/32 dev eth0
Ваш активный сетевой интерфейс - ens3. Это видно по следующим признакам:
-
Он имеет статус
UP(активен) -
На нем настроен внешний IP-адрес 100.70.93.222
-
Он имеет подключение к сети (BROADCAST,MULTICAST,UP,LOWER_UP)
Используйте этот интерфейс для привязки дополнительного IP-адреса. Вот команда:
sudo ip addr add 5.129.006.111/32 dev ens3
Для постоянной привязки используйте одно из указанных ранее решений, заменив eth0 на ens3. Например:
sudo nmcli con add type ethernet con-name ens3:0 ifname ens3 ip4 5.129.006.101/32
Или создайте файл конфигурации:
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens3:0
С содержимым:
DEVICE=ens3:0
BOOTPROTO=static
IPADDR=5.129.206.011
PREFIX=32
ONBOOT=yes
После применения настроек проверьте, что IP добавлен, выполнив снова ip a.
Чтобы найти информацию о шлюзе (gateway), вы можете использовать следующие команды:
1. Проверка текущего шлюза по умолчанию
ip route show default
или
route -n
Вывод будет примерно таким:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 103.74.90.1 0.0.0.0 UG 100 0 0 ens3
Здесь 103.74.93.1 - это ваш текущий шлюз по умолчанию.
2. Для дополнительного IP-адреса
Если дополнительный IP-адрес (5.129.206.111) предоставлен тем же провайдером, что и ваш основной IP, можно использовать один из следующих вариантов:
-
Использовать тот же шлюз, что и для основного IP (наиболее распространенный случай)
-
Использовать шлюз из той же подсети: обычно первый адрес в подсети, например 5.129.206.1
-
Уточнить у провайдера - самый надежный способ
В большинстве случаев для дополнительного IP-адреса из /32 подсети (единственный адрес) отдельный шлюз не требуется, так как маршрутизация происходит через основной интерфейс.
Если вы уже успешно привязали IP-адрес и он работает, то вероятно никаких дополнительных настроек шлюза не требуется.
Отлично! Теперь у нас есть информация о вашем шлюзе по умолчанию:
-
Шлюз: 103.74.93.1
-
Интерфейс: ens3
-
Основной IP: 103.74.93.222
Поскольку вы купили дополнительный IP у того же провайдера, скорее всего, для дополнительного IP (5.129.206.111) вы можете использовать тот же шлюз (103.74.93.1).
Если вы хотите создать постоянную конфигурацию для дополнительного IP с указанием шлюза, создайте файл конфигурации:
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens3:0
И добавьте следующее содержимое:
DEVICE=ens3:0
BOOTPROTO=static
IPADDR=5.129.206.111
PREFIX=32
GATEWAY=103.74.93.1
ONBOOT=yes
В вашем файле конфигурации сети есть серьезная проблема - вы используете одно и то же имя интерфейса ens3:0 для трех разных IP-адресов, что неправильно. Каждый виртуальный интерфейс должен иметь уникальное имя.
Исправленная версия файла должна выглядеть так:
# Created by cloud-init automatically, do not edit.
#
AUTOCONNECT_PRIORITY=222
BOOTPROTO=dhcp
DEVICE=ens3
DHCPV6C=yes
HWADDR=4e:27:dd:f0:b2:b8
IPV6INIT=yes
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
DEVICE=ens3:0
BOOTPROTO=static
IPADDR=5.129.206.111
PREFIX=32
GATEWAY=103.74.93.1
ONBOOT=yes
DEVICE=ens3:1
BOOTPROTO=static
IPADDR=5.129.206.222
PREFIX=32
GATEWAY=103.74.93.1
ONBOOT=yes
DEVICE=ens3:2
BOOTPROTO=static
IPADDR=178.209.127.333
PREFIX=32
GATEWAY=103.74.93.1
ONBOOT=yes
Обратите внимание на изменения:
-
Для второго IP-адреса используется
ens3:1вместоens3:0 -
Для третьего IP-адреса используется
ens3:2вместоens3:0
Также стоит отметить, что использование маски подсети /32 (PREFIX=32) означает, что эти IP-адреса не могут взаимодействовать напрямую с другими устройствами в сети без использования шлюза. Убедитесь, что это именно то, что вам нужно.
///////////////////
Если же вам нужно настроить маршрутизацию только для этого IP через отдельный шлюз (маловероятно, но для полноты информации), вы можете добавить специфический маршрут:
sudo ip route add 5.129.206.111/32 via 103.74.93.1 dev ens3
Для постоянного добавления такого маршрута, создайте файл:
sudo vi /etc/sysconfig/network-scripts/route-ens3
С содержимым:
5.129.206.111/32 via 103.74.93.1 dev ens3
В большинстве случаев, однако, просто наличие IP-адреса на интерфейсе ens3 (как у вас уже настроено) достаточно для его корректной работы, и дополнительная настройка шлюза может не потребоваться.
Вывод sudo systemctl status NetworkManager (первая часть вашего ответа):
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; preset: enabled)
Active: active (running) since Wed 2025-06-11 21:25:47 MSK; 1h 6min ago
Docs: man:NetworkManager(8)
Main PID: 714 (NetworkManager)
Tasks: 5 (limit: 48900)
Memory: 13.9M
CPU: 659ms
CGroup: /system.slice/NetworkManager.service
├─714 /usr/sbin/NetworkManager --no-daemon
├─776 /usr/sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /run/NetworkManager/dhclient-ens3.p>
└─926 /usr/sbin/dhclient -d -q -6 -N -sf /usr/libexec/nm-dhcp-helper -pf /run/NetworkManager/dhclient6>
... (логи dhcp)
-
NetworkManager.serviceактивен (running) и включен (enabled). Это значит, что именно NetworkManager управляет вашей сетью, а не старый сервисnetwork. Это хорошо и правильно для CentOS 9. -
Видно, что NetworkManager запустил
dhclientдля IPv4 (dhclient-ens3.pid) и IPv6 (dhclient6-ens3.pid) для интерфейсаens3. Это соответствуетBOOTPROTO=dhcpвifcfg-ens3.
Вывод sudo nmcli device status (третья часть вашего ответа, после статуса NM):
DEVICE TYPE STATE CONNECTION
ens3 ethernet connected ens3
lo loopback disconnected --
ens3имеетSTATE connectedи использует соединение (CONNECTION) с именемens3. Это отлично.
Вывод sudo nmcli connection show (вторая часть вашего ответа, между статусом NM и статусом девайсов):
NAME UUID TYPE DEVICE
ens3 00649495-3b54-4e16-bd43-262b6bc4f435 ethernet ens3
System ens3 21d47e65-8523-1a06-af22-6f121086f085 ethernet --
-
У вас есть два “профиля соединения” (connection profiles), которые относятся к
ens3: -
ens3: Это активное соединение, которое сейчас используется устройствомens3. -
System ens3: Это соединение не активно на данный момент (колонкаDEVICEпуста--). Часто профили с префиксом “System” создаются NetworkManager, когда он читает старыеifcfg-файлы.
Ключевой момент: Активное соединение называется ens3. Именно к этому соединению должны быть “привязаны” ваши дополнительные IP-адреса, чтобы они заработали.
Файлы ifcfg-ens3:0, ifcfg-ens3:1, ifcfg-ens3:2 являются устаревшим способом настройки IP-алиасов. NetworkManager может их читать (через плагин ifcfg-rh), но это не всегда надежно, и он предпочитает, чтобы все IP-адреса для одного физического интерфейса были частью одного профиля соединения.
Что сейчас нужно сделать (План А - модификация ifcfg файлов, План Б - прямой nmcli):
План А: Попытка заставить NetworkManager правильно прочитать ifcfg-алиасы (после исправления)
-
Убедитесь, что файлы
ifcfg-ens3:Xсуществуют и исправлены: Как мы обсуждали ранее, зайдите в каждый из файлов (или в соответствующие секцииifcfg-ens3, если они там): -
/etc/sysconfig/network-scripts/ifcfg-ens3:0 -
/etc/sysconfig/network-scripts/ifcfg-ens3:1 -
/etc/sysconfig/network-scripts/ifcfg-ens3:2Удалите или закомментируйте (#) строкуGATEWAY=...в каждом из этих файлов/секций. Шлюз не нужен для алиасов с/32. -
Перезагрузите конфигурацию NetworkManager и переактивируйте соединение:
bash Скопировать
Закрыть блок
sudo nmcli connection reload
sudo nmcli connection down ens3
sudo nmcli connection up ens3
(Если nmcli connection down ens3 выдает ошибку, что соединение ens3 не найдено, попробуйте имя из nmcli con show, которое активно, но в вашем случае это и есть ens3).
- Проверьте результат:
bash Скопировать
Закрыть блок
ip addr show ens3
Появились ли дополнительные IP-адреса? Если да, отлично! Если нет, переходим к Плану Б.
План Б: Настройка дополнительных IP напрямую через nmcli (рекомендуемый способ для CentOS 9+)
Этот способ более надежен, так как мы работаем напрямую с инструментами NetworkManager.
- Удалите (или переименуйте) старые файлы
ifcfg-ens3:X(если они существуют как отдельные файлы), чтобы они не мешали:
bash Скопировать
Закрыть блок
sudo mv /etc/sysconfig/network-scripts/ifcfg-ens3:0 /etc/sysconfig/network-scripts/ifcfg-ens3:0.bak
sudo mv /etc/sysconfig/network-scripts/ifcfg-ens3:1 /etc/sysconfig/network-scripts/ifcfg-ens3:1.bak
sudo mv /etc/sysconfig/network-scripts/ifcfg-ens3:2 /etc/sysconfig/network-scripts/ifcfg-ens3:2.bak
Если эти конфигурации были внутри основного файла ifcfg-ens3, то закомментируйте или удалите эти секции из ifcfg-ens3 (предварительно сделав его бэкап). После этого выполните:
bash Скопировать
Закрыть блок
sudo nmcli connection reload
- Добавьте IP-адреса к активному соединению
ens3: Имя вашего активного соединения для устройстваens3— этоens3.
bash Скопировать
Закрыть блок
sudo nmcli connection modify ens3 +ipv4.addresses 5.129.206.100/32
sudo nmcli connection modify ens3 +ipv4.addresses 5.129.206.200/32
sudo nmcli connection modify ens3 +ipv4.addresses 178.209.127.100/32
-
modify ens3: изменяем соединение с именемens3. -
+ipv4.addresses: добавляем IPv4 адрес. Знак+означает добавление к существующим, а не замену. -
IP_ADDRESS/32: Указываем IP и его префикс (маску)./32означает, что это одиночный хост-адрес. -
Проверьте, что IP-адреса добавились в конфигурацию соединения:
bash Скопировать
Закрыть блок
nmcli connection show ens3
Прокрутите вывод и найдите секцию ipv4.addresses. Там должны быть все ваши IP (основной DHCP и три добавленных статических).
- Переактивируйте соединение, чтобы изменения применились:
bash Скопировать
Закрыть блок
sudo nmcli connection down ens3
sudo nmcli connection up ens3
- Финальная проверка:
bash Скопировать
Закрыть блок
ip addr show ens3
Все IP-адреса (основной, полученный по DHCP, и три дополнительных) должны теперь отображаться.
Важно по поводу cloud-init: Поскольку в вашем ifcfg-ens3 есть комментарий # Created by cloud-init automatically, do not edit., есть небольшой риск, что cloud-init при каких-то обстоятельствах (например, если он настроен на повторный запуск при определенных условиях) может попытаться вернуть ifcfg-ens3 к исходному состоянию. Однако, когда вы управляете IP-адресами через nmcli connection modify, вы изменяете профиль NetworkManager. Эти изменения обычно более устойчивы к действиям cloud-init после первой загрузки, особенно если cloud-init настроен только на начальную инициализацию.
Рекомендую начать с Плана А (шаги 1-3). Если не сработает, переходите к Плану Б. План Б – это более “чистый” и современный способ для систем с NetworkManager.
Да, для CentOS 9 План Б (настройка через nmcli) является более правильным и предпочтительным методом.
Причины:
-
NetworkManager – стандарт по умолчанию: CentOS 9 (и другие современные дистрибутивы на базе RHEL, такие как AlmaLinux, Rocky Linux) используют NetworkManager как основную службу для управления сетевыми настройками.
nmcli– это официальный инструмент командной строки для взаимодействия с NetworkManager. -
Устаревание
ifcfgскриптов: Хотя NetworkManager все еще может читать файлыifcfg-*(через плагинifcfg-rh), поддержка этого формата постепенно сокращается, и он считается устаревшим. Новые возможности и более тонкая настройка лучше всего реализуются через “родные” механизмы NetworkManager. -
Централизованное управление:
nmcliпозволяет управлять всеми аспектами сетевого соединения (IP-адреса, DNS, маршруты, Wi-Fi, VPN и т.д.) из одного места и одним инструментом. Использованиеifcfgфайлов для алиасов (например,ifcfg-ens3:0) рядом с основным файломifcfg-ens3, управляемым через DHCP, может приводить к путанице и потенциальным конфликтам. -
Надежность и предсказуемость: Изменения, внесенные через
nmcli, напрямую записываются в конфигурационные файлы NetworkManager (обычно в/etc/NetworkManager/system-connections/), и их применение более предсказуемо. -
Совместимость с
cloud-init:cloud-initпри первой настройке может создаватьifcfgфайлы, но дальнейшее управление черезnmcliобычно не вызывает конфликтов, так какnmcliмодифицирует профили NetworkManager, которые являются “вышестоящим” уровнем конфигурации.
Итак, для CentOS 9 правильнее и надежнее использовать План Б:
План Б: Настройка дополнительных IP напрямую через nmcli
- (Опционально, но рекомендуется для чистоты) Удалите или переименуйте старые файлы
ifcfg-ens3:X(если они существуют как отдельные файлы):
sudo mv /etc/sysconfig/network-scripts/ifcfg-ens3:0 /etc/sysconfig/network-scripts/ifcfg-ens3:0.bak
sudo mv /etc/sysconfig/network-scripts/ifcfg-ens3:1 /etc/sysconfig/network-scripts/ifcfg-ens3:1.bak
sudo mv /etc/sysconfig/network-scripts/ifcfg-ens3:2 /etc/sysconfig/network-scripts/ifcfg-ens3:2.bak
Если эти конфигурации были частью основного файла ifcfg-ens3, закомментируйте или удалите эти секции из ifcfg-ens3 (предварительно сделав его бэкап: sudo cp /etc/sysconfig/network-scripts/ifcfg-ens3 /etc/sysconfig/network-scripts/ifcfg-ens3.backup_$(date +%F)). Затем перезагрузите конфигурацию, чтобы NetworkManager “забыл” про эти файлы:
sudo nmcli connection reload
- Добавьте IP-адреса к активному соединению
ens3: Имя вашего активного соединения для устройстваens3— этоens3(как показалnmcli con show).
sudo nmcli connection modify ens3 +ipv4.addresses 5.129.206.100/32
sudo nmcli connection modify ens3 +ipv4.addresses 5.129.206.200/32
sudo nmcli connection modify ens3 +ipv4.addresses 178.209.127.100/32
-
Если вы хотите заменить все статические адреса, а не добавить, используйте
ipv4.addressesбез+:sudo nmcli connection modify ens3 ipv4.addresses "5.129.206.151/32 5.129.206.201/32 178.209.127.150/32"Но поскольку у вас основной IP получается по DHCP, использование+ipv4.addressesбезопаснее, чтобы не затронуть DHCP-конфигурацию. -
Проверьте, что IP-адреса добавились в конфигурацию соединения:
nmcli connection show ens3
Ищите параметр ipv4.addresses:. Он должен содержать список IP-адресов.
- Переактивируйте соединение, чтобы изменения применились:
sudo nmcli connection down ens3
sudo nmcli connection up ens3
Или, как альтернатива, можно просто перезапустить NetworkManager, но переактивация соединения более “мягкая”: sudo systemctl restart NetworkManager (менее предпочтительно, если можно обойтись)
- Финальная проверка:
ip addr show ens3
Все IP-адреса (основной, полученный по DHCP, и три дополнительных) должны теперь отображаться. Также проверьте доступность сайтов на этих IP.
Этот подход обеспечит корректную и устойчивую конфигурацию сети на вашей CentOS 9.
Ищете надежного партнера по веб-разработке и автоматизации? Мы помогаем бизнесу расти с помощью современных технологий, автоматизации процессов и экспертного SEO. Свяжитесь с нами, чтобы обсудить вашу задачу.