Поиск по сайту:

Как настроить IP-сеть с помощью «nmcli» в Linux


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

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

Заметив многочисленные комментарии с просьбой о помощи по nmcli, я решил написать эту статью. Конечно, вам всегда следует внимательно читать справочные страницы (для вас это ресурс № 1). Моя цель — сэкономить ваше время и дать несколько полезных советов.

Синтаксис команды nmcli

Синтаксис nmcli:

nmcli [OPTIONS] OBJECT {COMMAND | help}

Где OBJECT — это один из следующих значений: «Общий», «Сеть», «Радио», «Подключение», «Устройство» и «Агент».

Проверьте состояние сетевого устройства в Linux

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

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

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

Давайте кратко рассмотрим наиболее важные из них.

  • TYPE – здесь у нас есть тип Ethernet. Мы также могли бы иметь Wi-Fi, команду, связь и другие.
  • 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 – если он имеет значение «да», это означает, что при загрузке наш компьютер прочитает этот профиль и попытается назначить его своему устройству.

Проверьте сетевое соединение в Linux

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

nmcli con show

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

Подсказка. Если вы хотите видеть только активные подключения, введите:

nmcli con show -a

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

Таким образом, следующие команды равны:

nmcli connection show
nmcli con show
nmcli c s

Проверить IP-адрес в Linux

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

ip a

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

Если я подниму “up” свой профиль подключения с именем 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-соединения в Linux

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

nmcli con add type ethernet con-name Myhome1 ifname enp0s3

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

cat ifcfg-Myhome1

Как вы можете видеть, он имеет 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

Изменить DNS-серверы в Linux

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

nmcli con mod static2 ipv4.dns “8.8.8.8 8.8.4.4”

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

Подключите Ethernet-соединение в Linux

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

nmcli con down static1 ; nmcli con up static2

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

ip a

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

nmcli con show static2

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

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

nmcli con mod static2 connection.autoconnect no

Последнее упражнение очень полезно: вы создали профиль подключения, но хотите, чтобы его использовали определенные пользователи. Классифицировать пользователей — это хорошо!

Установите разрешения на подключение Ethernet для пользователя в Linux

Мы разрешаем использовать этот профиль только пользователю 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

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

Вывод: без колебаний используйте nmcli. Это легко и полезно.