Хостинг

IP для каждого сайта свой. Битрикс виртуальная машина на CentOS9. Дополнительные сайты НЕ многосайтовость.

IP для каждого сайта свой. Битрикс виртуальная машина на CentOS9. Дополнительные сайты НЕ многосайтовость.

Для привязки дополнительного 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`:


	<li>`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`, если они там):





	<li>`/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
	<li>`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
	<li>Если вы хотите заменить все статические адреса, а не добавить, используйте `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.