Два IP-адреса на одном интерфейсе в CentOS 7.0

Задача: получить на одном интерфейсе два IP-адреса. Выполнимо? Под Linux – выполнимо!

Оказывается, поднять два IP-адреса на одном интерфейсе в CentOS 7 (RHEL 7), это совсем не так, как было в CentOS 6 и CentOS 6.5.

В первую очередь надо разобраться, задействовал ли Network Manager в управлении.

Оценка ситуации

Ещё с дремучих времён все мы приучены привычно набирать ifconfig, чтобы узнать о состоянии интерфейсов. Однако, для CentOS/RHEL 7, это не подходит, необходимо использовать новомодный инструмент ip, например:

# ip a | grep 'inet'
    inet 127.0.0.1/8 scope host lo
    inet 10.4.0.10/24 brd 10.4.2.255 scope global dynamic eth0
    inet 62.148.144.166/24 brd 172.28.128.255 scope global dynamic eth1

Синтаксис намекает нам на то, что мы имеем дело с каким-то роутером или свитчем, можно использовать grep с параметрами inet и inet6 для IPv4 и IPv6.

$ ip a | grep 'inet6 '
    inet6 ::1/128 scope host
    inet6 08:62:66:9d:8a:9f/64 scope link
    inet6 08:62:66:9d:8a:9b/64 scope link

Если Вам не нравится ip, можно установить через yum старый ifconfig, но он потащит за собой миллион дополнительных пакетов.

Используется Network Manager

Проверим, используется ли Network Manager для нашего интерфейса, которому мы хотим сопоставить дополнительный адрес.

$ grep 'NM_CONTROLLED' /etc/sysconfig/network-scripts/ifcfg-enp3s0
NM_CONTROLLED="yes"

Если видим yes, Network Manager используется.

В таком случае при попытке добавить новый IP-адрес в файл network-scripts, который располагается /etc/sysconfig/network-scripts/, нас ждёт неудача в RHEL 7 / CentOS 7. Раньше в CentOS 6 или 6.5 всё было просто: создали новый файл и готово!

$ cat ifcfg-enp3s0:0
NAME="enp3s0:0"
ONBOOT="yes"
BOOTPROTO="static"
IPADDR="10.4.0.10"
NETMASK="255.255.255.0"

Но при таком подходе в RHEL 7 / CentOS 7 после перезагрузки сети, основной IP-адрес будет удалён, а псевдоним займёт его место – так понимает наши действия «Network Manager».

Придётся воспользоваться великолепным инструментом nmtui ( Network Manager Text User Interface).

# nmtui

Выбираем Edit a network connection и указываем интерфейс, к которому надо добавить псевдоним.

Network Manager Text User Interface

Обратите внимание на кнопочку Add.

Network Manager Text User Interface

Сохраняем изменения.

Можно проверить конфигурационные файлы в /etc/sysconfig/network-scripts/, чтобы разобраться, как псевдоним добавляется через nmtui.

$ cat /etc/sysconfig/network-scripts/ifcfg-ens192
...
# Alias on the interface
IPADDR1="10.4.0.10"
PREFIX1="32"

Теперь эти файлы можно редактировать вручную, а можно через nmtui.

Ручная конфигурация

Этот способ придётся испоьзовать, если Network Manager не управлет интерфейсом.

# grep 'NM_CONTROLLED' /etc/sysconfig/network-scripts/ifcfg-enp3s0
NM_CONTROLLED="no"

В принципе, в этом случае придётся вести себя так, как будто бы у нас CentOS 5/6.

# cat ifcfg-enp3s0:0
NM_CONTROLLED="no"
DEVICE="enp3s0:0"
ONBOOT="yes"
BOOTPROTO="static"
IPADDR="10.50.10.5"
NETMASK="255.255.255.0"

Теперь поднимаем интерфейс и всё работает.

# ifup enp3s0:0

Добавление временного IP-адреса

Чтобы добавить IP-адрес на короткое время, можно пользоваться командой ip. Изменения просуществуют до перезагрузки сервера или до перезагрузки службы network service.

# ip a add 192.168.1.1/24 dev eth0

Успехов!

3 комментарии

  • Глеб

    написал Глеб

    Суббота, 23 Июль 2016 23:12

    Спасибо за статью.
    Есть задача: Нужно чтобы KVM виртуалки при потере связи с роутером (допустим кто-то перезагрузил роутер) могли общаться по виртуальному IP.
    Могу ли я применить для этого виртуальные интерфейсы и не будут ли они зависимы от реальных интерфейсов?

    Пожаловаться
  • Алекандр.

    написал Алекандр.

    Понедельник, 30 Январь 2017 17:57

    # ip a add 192.168.1.1/24 dev eth0 Еу это было "до"... А я думаю, что правильнее указать новое имя интерфейса - enp3s0. Видимо "очепятка" :)

    Пожаловаться
  • Шурик

    написал Шурик

    Вторник, 28 Ноябрь 2017 08:06

    "...интерфейсы и не будут ли они зависимы от реальных интерфейсов" - А еще бензин сам будет ехать без машины :))))))

    Откуда такие перцы вылазят?:)

    Пожаловаться
Авторизуйтесь, чтобы получить возможность оставлять комментарии
Go to top