Как управлять сетевыми подключениями с помощью инструмента «nmcli»

Как управлять сетевыми подключениями с помощью инструмента «nmcli»

LinuxСети Linux

Как администратор Linux, вы можете использовать различные инструменты для настройки сетевых подключений, такие как: nmtui, ваш NetworkManager с графическим интерфейсом пользователя GNOME и, конечно, nmcli (инструмент командной строки сетевого менеджера).

Я видел много администраторов, использующих nmtui из-за простоты. Однако использование nmcli экономит ваше время, дает уверенность, позволяет использовать его в сценариях и является первым инструментом, который можно использовать для устранения неполадок в сети вашего сервера Linux и быстрого восстановления его функциональности.

Вы всегда должны внимательно читать man-страницы (это помощь №1 для вас). Моя цель — сэкономить ваше время и показать вам некоторые советы.

Синтаксис nmcli:

# nmcli [OPTIONS] OBJECT {COMMAND | help}

 

Где OBJECT может быть одним из:

  • general
  • networking
  • radio
  • connection
  • device
  • agent

 

Хорошей отправной точкой будет проверка наших устройств:

# nmcli dev status

DEVICE TYPE STATE CONNECTION
docker0 bridge connected docker0
virbr0 bridge connected virbr0
enp0s3 ethernet connected enp0s3
virbr0-nic ethernet disconnected --
lo loopback unmanaged --

 

 

Как мы видим, в первом столбце приведен список наших сетевых устройств. У нас есть одна сетевая карта с именем enp0s3. Для вашей машины могут быть другие имена.

Наименование зависит от типа сетевой карты (если она встроенная, pci-карта и т.д.). В последнем столбце мы видим наши файлы конфигурации, которые используются нашими устройствами для подключения к сети.

Просто понять, что наши устройства сами по себе ничего не могут сделать. Им нужно, чтобы мы создали файл конфигурации, чтобы сообщить им, как добиться сетевого подключения. Мы называем эти файлы «профили подключения». Мы находим их в каталоге /etc/sysconfig/network-scripts.

# cd /etc/sysconfig/network-scripts/
# ls

 

Пример вывода
ifcfg-enp0s3 ifdown-isdn ifup ifup-plip ifup-tunnel
ifcfg-lo ifdown-post ifup-aliases ifup-plusb ifup-wireless
ifdown ifdown-ppp ifup-bnep ifup-post init.ipv6-global
ifdown-bnep ifdown-routes ifup-eth ifup-ppp network-functions
ifdown-eth ifdown-sit ifup-ib ifup-routes network-functions-ipv6
ifdown-ib ifdown-Team ifup-ippp ifup-sit
ifdown-ippp ifdown-TeamPort ifup-ipv6 ifup-Team
ifdown-ipv6 ifdown-tunnel ifup-isdn ifup-TeamPort

 

 

Как вы можете видеть здесь, файлы с именем, начинающимся с ifcfg-(конфигурация интерфейса), являются профилями подключения. Когда мы создаем новое соединение или модифицируем существующее с помощью nmcli или nmtui, результаты сохраняются здесь как профили соединения.

Я покажу вам два из них, один с конфигурацией dhcp и один со статическим ip.

# cat ifcfg-static1
# cat ifcfg-Myoffice1

 

Network-Configuration

 

Мы понимаем, что некоторые свойства имеют разные значения, а некоторые не существуют, если в этом нет необходимости. Давайте кратко рассмотрим наиболее важные из них.

  • TYPE, у нас есть тип Ethernet здесь. Мы могли бы иметь Wi-Fi, team, bond и другие.
  • DEVICE, имя сетевого устройства, связанного с этим профилем.
  • BOOTPROTO, если он имеет значение «dhcp», то наш профиль соединения получает динамический IP-адрес с сервера dhcp, если он имеет значение «none», то он не принимает динамический IP и, вероятно, назначает статический IP.
  • IPADDR, это статический IP, который мы назначаем нашему профилю.
  • PREFIX, маска подсети. Значение 24 означает 255.255.255.0. Вы можете лучше понять маску подсети, если запишите ее двоичный формат. Например, значения 16, 24, 26 означают, что первые 16, 24 или 26 бит соответственно равны 1, а остальные 0, точно определяя, что такое сетевой адрес и какой диапазон ip может быть назначен.
  • GATEWAY, шлюз IP.
  • DNS1, DNS2, два DNS-сервера, которые мы хотим использовать.
  • ONBOOT, если он имеет значение «yes», это означает, что при загрузке наш компьютер прочитает этот профиль и попытается присвоить его своему устройству.

Теперь давайте продолжим и проверим наши связи:

# nmcli con show

 

Show-Active-Network-Connections

 

Последний столбец устройств помогает нам понять, какое соединение работает, а какое нет. На изображении выше вы видите два активных соединения: Myoffice1 и enp0s8.

Подсказка: если вы хотите видеть только активные соединения, введите:

# nmcli con show -a

 

Подсказка: вы можете использовать автоматическое нажатие на Tab при использовании nmcli, но лучше использовать минимальный формат команды. Таким образом, следующие команды одинаковы:

# nmcli connection show
# nmcli con show
# nmcli c s

 

 

Если я проверю IP-адреса моих устройств:

# ip a

 

Check-Server-IP-Address

 

Я вижу, что мое устройство enp0s3 получило IP-адрес 192.168.1.6 от сервера dhcp, потому что профиль подключения Myoffice1, который работает, имеет конфигурацию dhcp. Если я вызову мой профиль подключения с именем static1, то мое устройство будет иметь статический IP-адрес 192.168.1.40, как это определено в профиле подключения.

# nmcli con down Myoffice1 ; nmcli con up static1
# nmcli con show

 

 

Давайте посмотрим IP-адрес снова:

# ip a

 

 

Мы можем сделать наш первый профиль подключения. Минимальные свойства, которые мы должны определить, это type, ifname и con-name:

  • type — для типа подключения.
  • ifname — для имени устройства, которому назначено наше соединение.
  • con-name — для имени соединения.

 

Давайте создадим новое соединение Ethernet с именем Myhome1, назначенное устройству enp0s3:

# nmcli con add type ethernet con-name Myhome1 ifname enp0s3

 

 

Проверьте его конфигурацию:

# cat ifcfg-Myhome1

 

Create-New-Network-Connection

 

Как вы можете видеть, он имеет BOOTPROTO = dhcp, потому что мы не давали статический IP-адрес.

Подсказка: мы можем изменить любое соединение с помощью команды «nmcli con mod». Однако, если вы измените соединение dhcp и измените его на статическое, не забудьте изменить его «ipv4.method» с «auto» на «manual». В противном случае вы получите два IP-адреса: один с сервера DHCP и статический.

Давайте создадим новый профиль подключения Ethernet с именем static2, который будет назначен устройству enp0s3, со статическим IP-адресом 192.168.1.50, маской подсети 255.255.255.0 = 24 и шлюзом 192.168.1.1.

# nmcli con add type ethernet con-name static2 ifname enp0s3 ip4 192.168.1.50/24 gw4 192.168.1.1

 

 

Проверьте его конфигурацию:

# cat ifcfg-static2

 

Create-New-Ethernet-Connection

 

Давайте изменим последний профиль подключения и добавим два DNS-сервера.

# nmcli con mod static2 ipv4.dns “8.8.8.8 8.8.4.4”

 

 

Подсказка: здесь есть что-то, на что вы должны обратить внимание: свойства для IP-адреса и шлюза имеют разные имена при добавлении и изменении соединения. Когда вы добавляете соединения, вы используете «ip4» и «gw4», а когда вы изменяете их, вы используете «ipv4» и «gwv4».

Теперь давайте откроем этот профиль подключения:

# nmcli con down static1 ; nmcli con up static2

 

 

Как видите, устройство enp0s3 теперь имеет IP-адрес 192.168.1.50.

# ip a

 

Verify-IP-Address-of-New-Network-Connection - Как управлять сетевыми подключениями с помощью инструмента «nmcli»

 

Подсказка: есть много свойств, которые вы можете изменить. Если вы не помните их наизусть, вы можете помочь себе, набрав «nmcli con show» и после этого имя соединения:

# nmcli con show static2

 

Verify-IP-Address-of-New-Network-Connection (1)

 

Вы можете изменить все эти свойства, написанные в нижнем регистре.

Например: когда вы отключаете профиль подключения, NetworkManager ищет другой профиль подключения и вызывает его автоматически. Если вы не хотите, чтобы ваш профиль подключения автоматически подключался:

# nmcli con mod static2 connection.autoconnect no

 

 

Последнее упражнение очень полезно: вы создали профиль подключения, но хотите, чтобы он использовался конкретными пользователями.

Мы разрешаем только пользователю stella использовать этот профиль:

# nmcli con mod static2 connection.permissions stella

 

 

Подсказка: если вы хотите дать разрешения нескольким пользователям, вы должны ввести user:user1,user2 без пробелов между ними:

# nmcli con mod static2 connection.permissions user:stella,john

 

 

Если вы войдете в систему как другой пользователь, вы не сможете вызвать этот профиль подключения:

# nmcli con show
# nmcli con up static2
# ls /etc/sysconfig/network-scripts

 

Enable-Network-Connection - Как управлять сетевыми подключениями с помощью инструмента «nmcli»

 

В сообщении об ошибке говорится, что соединение «static2» не существует, даже если мы видим, что оно существует. Это потому, что текущий пользователь не имеет прав для установки этого соединения.

 

Вывод

Не стесняйтесь использовать nmcli. Это легко и полезно.

 

 

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Ciscoкурсы по кибербезопасности,  полный курс по кибербезопасностикурсы DevNet (программируемые сети) от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

 

Курсы Cisco и Linux с трудоустройством!

Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.
Что Вы получите?
  • Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
  • Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
  • Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
  • Если хотите индивидуальный график — обсудим и осуществим.
  • Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
А еще поможем Вам:
  • отредактировать резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco CCNA Routing & Switching и Linux LPI, подайте заявку или получите бесплатную консультацию.
LinuxСети Linux

Больше похожих постов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Самое читаемое
Меню