Кіруем сеткавымі падлучэннямі ў Linux з дапамогай кансольнай утыліты nmcli

Выкарыстоўвайце ўсе магчымасці прылады кіравання сеткавымі падлучэннямі NetworkManager у камандным радку Linux з дапамогай утыліты nmcli.

Кіруем сеткавымі падлучэннямі ў Linux з дапамогай кансольнай утыліты nmcli

ўтыліта nmcli напрамую звяртаецца да API для доступу да функцый NetworkManager.

Яна з'явілася ў 2010 годзе і для многіх стала альтэрнатыўным спосабам настройкі сеткавых інтэрфейсаў і злучэнняў. Хоць хтосьці да гэтага часу выкарыстоўвае Ifconfig. Бо nmcli - гэта прылада інтэрфейсу каманднага радка (CLI), прызначаны для выкарыстання ў вокнах тэрміналаў і скрыптах, ён ідэальна падыходзіць для сістэмных адміністратараў, якія працуюць без GUI.

Сінтаксіс каманд ncmli

У агульным выглядзе сінтаксіс выглядае так:

$ nmcli <options> <section> <action>

  • options - гэта параметры, якія вызначаюць тонкасці працы nmcli,
  • section (секцыя) - вызначае, якімі магчымасцямі ўтыліты карыстацца,
  • action (дзеянне) - дазваляе паказаць, што, уласна, трэба зрабіць.

Усяго існуе 8 секцый, кожная з якіх звязана з нейкім наборам каманд (дзеянняў):

  • дапамогу выдае даведку аб камандах ncmcli і іх выкарыстанні.
  • агульны вяртае статус NetworkManager і глабальную канфігурацыю.
  • сетак уключае каманды для запыту стану сеткавага падлучэння і ўключэння / адключэння падлучэнняў.
  • радыё уключае каманды для запыту стану падлучэння да сеткі WiFi і ўключэння / адключэння падлучэнняў.
  • Кантраляваць уключае каманды для маніторынгу актыўнасці NetworkManager і назіранні за зменамі стану сеткавых падлучэнняў.
  • Сувязі уключае каманды для кіравання сеткавымі інтэрфейсамі, для дадання новых злучэнняў і выдаленні існых.
  • Прылада у асноўным выкарыстоўваецца для змены параметраў, звязаных з прыладамі (напрыклад, імя інтэрфейсу) або для падлучэння прылад з выкарыстаннем існуючага злучэння.
  • Таямніца рэгіструе nmcli у якасці "сакрэтнага агента" NetworkManager, які праслухоўвае таемныя паведамленні. Гэтая секцыя выкарыстоўваецца рэдка, таму што nmcli пры падлучэнні да сетак па дэфолце працуе менавіта так.

Простыя прыклады

Перад пачаткам працы пераканайцеся, што NetworkManager запушчаны і nmcli можа мець зносіны з ім:

$ nmcli general
STATE      CONNECTIVITY  WIFI-HW  WIFI     WWAN-HW  WWAN    
connected  full          enabled  enabled  enabled  enabled

Часта працу пачынаюць з прагляду ўсіх профіляў сеткавых падлучэнняў:

$ nmcli connection show
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  ac3241e4-b424-35d6-aaa7-07498561688d  ethernet  enp0s3
Wired connection 2  2279d917-fa02-390c-8603-3083ec5a1d3e  ethernet  enp0s8
Wired connection 3  52d89737-de92-35ec-b082-8cf2e5ac36e6  ethernet  enp0s9

Гэта каманда выкарыстоўвае дзеянне show для секцыі Connection.

На тэставай машыне круціцца Ubuntu 20.04/0. У дадзеным выпадку мы знайшлі тры правадныя падлучэнні: enp3s0, enp8s0, and enp9sXNUMX.

Упраўленне падлучэннямі

Важна разумець, што ў nmcli пад тэрмінам Connection мы маем на ўвазе сутнасць, якая змяшчае ўсю інфармацыю аб злучэнні. Іншымі словамі, гэта канфігурацыя сеткі. Connection інкапсулюе ўсю інфармацыю, звязаную са злучэннямі, уключаючы канальны ўзровень і інфармацыю аб IP-адрасацыі. Гэта ўзровень 2 і ўзровень 3 у сеткавай мадэлі OSI.

Калі вы наладжваеце сетку ў Linux, вы звычайна наладжваеце злучэнні, якія ў канчатковым выніку будуць прывязаныя да сеткавых прылад, якія ў сваю чаргу з'яўляюцца сеткавымі інтэрфейсамі, усталяванымі на кампутары. Калі прылада выкарыстоўвае злучэнне, яно лічыцца актыўным або паднятым. Калі злучэнне не выкарыстоўваецца, то яно неактыўна ці скінута.

Даданне сеткавых злучэнняў

Утыліта ncmli дазваляе хутка дадаваць і адразу ж наладжваць злучэнні. Напрыклад, каб дадаць Wired connection 2 (з enp0s8), трэба ад імя суперкарыстальніка запусціць наступную каманду:

$ sudo nmcli connection add type ethernet ifname enp0s8
Connection 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) successfully added.

У опцыі type мы паказваем, што гэта будзе Ethernet-злучэнне, а ў опцыі ifname (interface name) указваем сеткавы інтэрфейс, які жадаем выкарыстаць.

Вось што будзе пасля запуску каманды:

$ nmcli connection show
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  ac3241e4-b424-35d6-aaa7-07498561688d  ethernet  enp0s3
Wired connection 2  2279d917-fa02-390c-8603-3083ec5a1d3e  ethernet  enp0s8
Wired connection 3  52d89737-de92-35ec-b082-8cf2e5ac36e6  ethernet  enp0s9
ethernet-enp0s8     09d26960-25a0-440f-8b20-c684d7adc2f5  ethernet  --  

Створана новае злучэнне, ethernet-enp0s8. Яму быў прызначаны UUID, тып падключэння – Ethernet. Паднімем яго з дапамогай каманды up:

$ nmcli connection up ethernet-enp0s8
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)

Яшчэ раз правяраем спіс актыўных злучэнняў:

$ nmcli connection show --active
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  ac3241e4-b424-35d6-aaa7-07498561688d  ethernet  enp0s3
ethernet-enp0s8     09d26960-25a0-440f-8b20-c684d7adc2f5  ethernet  enp0s8
Wired connection 3  52d89737-de92-35ec-b082-8cf2e5ac36e6  ethernet  enp0s9

Дададзена новае злучэнне ethernet-enp0s8, яно актыўна і выкарыстоўвае сеткавы інтэрфейс enp0s8.

Настройка падлучэнняў

Утыліта ncmli дазваляе лёгка мяняць параметры ўжо існуючых падлучэнняў. Напрыклад, вам трэба змяніць дынамічны (DHCP) на статычны IP-адрас.

Няхай нам трэба ўсталяваць IP-адрас роўным 192.168.4.26. Для гэтага выкарыстоўваем дзве каманды. Першая непасрэдна ўсталюе IP-адрас, а другая пераключыць метад усталёўкі IP-адрасы на значэнне «уручную» (manual):

$ nmcli connection modify ethernet-enp0s8 ipv4.address 192.168.4.26/24
$ nmcli connection modify ethernet-enp0s8 ipv4.method manual

Не забудзьцеся таксама задаць маску падсеткі. Для нашага тэставага падлучэння гэта 255.255.255.0, ці з /24 для бескласавай маршрутызацыі (CIDR).

Каб змены набылі моц, трэба дэактываваць і затым актываваць злучэнне зноў:

$ nmcli connection down ethernet-enp0s8
Connection 'ethernet-enp0s8' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
$ nmcli connection up ethernet-enp0s8
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveC

Калі вам наадварот трэба ўсталяваць DHCP, замест manual выкарыстоўвайце auto:

$ nmcli connection modify ethernet-enp0s8 ipv4.method auto

Праца з прыладамі

Для гэтага мы выкарыстоўваем секцыю Device.

Праверка статусу прылад

$ nmcli device status
DEVICE  TYPE      STATE      CONNECTION        
enp0s3  ethernet  connected  Wired connection 1
enp0s8  ethernet  connected  ethernet-enp0s8    
enp0s9  ethernet  connected  Wired connection 3
lo      loopback  unmanaged  --  

Запыт інфармацыі аб прыладзе

Для гэтага выкарыстоўваем дзеянне show з секцыі Device (трэба абавязкова пазначыць імя прылады). Утыліта паказвае дастаткова шмат інфармацыі, часта на некалькіх старонках.
Давайце паглядзім на інтэрфейс enp0s8, які выкарыстоўвае нашае новае злучэнне. Пераканаемся, што яно выкарыстоўвае роўна той IP-адрас, які мы ўстанавілі раней:

$ nmcli device show enp0s8
GENERAL.DEVICE:                         enp0s8
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         08:00:27:81:16:20
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     ethernet-enp0s8
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/6
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         192.168.4.26/24
IP4.GATEWAY:                            --
IP4.ROUTE[1]:                           dst = 192.168.4.0/24, nh = 0.0.0.0, mt = 103
IP6.ADDRESS[1]:                         fe80::6d70:90de:cb83:4491/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 103
IP6.ROUTE[2]:                           dst = ff00::/8, nh = ::, mt = 256, table=255

Інфармацыі дастаткова шмат. Вылучым галоўнае:

  • Імя сеткавага інтэрфейсу: enp0s8.
  • Тып злучэння: правадное Ethernet-злучэнне.
  • Мы бачым MAC-адрас прылады.
  • Указаны Maximum transmission unit (MTU) - Максімальны памер карыснага блока дадзеных аднаго пакета, які можа быць перададзены пратаколам без фрагментацыі.
  • прылада у дадзены момант падключана.
  • Імя злучэння, якое выкарыстоўвае прыладу: ethernet-enp0s8.
  • Прылада выкарыстоўвае той IP-адрас, які мы ўстанавілі раней: 192.168.4.26/24.

Іншая інфармацыя ставіцца да дэфолтных параметраў маршрутызацыі і шлюза злучэння. Яны залежаць ад канкрэтнай сеткі.

Інтэрактыўны рэдактар ​​nmcli

У nmcli таксама маецца прасценькі інтэрактыўны рэдактар, у якім камусьці працаваць можа быць камфортней. Каб запусціць яго, напрыклад, для злучэння ethernet-enp0s8, выкарыстоўвайце дзеянне рэдагаванне:

$ nmcli connection edit ethernet-enp0s8

У яго таксама ёсць невялікая даведка, якая, праўда, саступае па памеры кансольнай версіі:

===| nmcli interactive connection editor |===
Editing existing '802-3-ethernet' connection: 'ethernet-enp0s8'
Type 'help' or '?' for available commands.
Type 'print' to show all the connection properties.
Type 'describe [<setting>.<prop>]' for detailed property description.
You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, match, ipv4, ipv6, tc, proxy
nmcli>

Калі вы ўведзяце каманду print і націснеце Enter, nmcli адлюструе ўсе ўласцівасці злучэння:

===============================================================================
                 Connection profile details (ethernet-enp0s8)
===============================================================================
connection.id:                          ethernet-enp0s8
connection.uuid:                        09d26960-25a0-440f-8b20-c684d7adc2f5
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              enp0s8
connection.autoconnect:                 yes
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.multi-connect:               0 (default)
connection.auth-retries:                -1
connection.timestamp:                   1593967212
connection.read-only:                   no
connection.permissions:                 --
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (default)
connection.secondaries:                 --

Напрыклад, каб задаць для падлучэння ўласцівасць DHCP, увядзіце goto ipv4 і націсніце Уводзіць:

nmcli> goto ipv4
You may edit the following properties: method, dns, dns-search, 
dns-options, dns-priority, addresses, gateway, routes, route-metric, 
route-table, routing-rules, ignore-auto-routes, ignore-auto-dns, 
dhcp-client-id, dhcp-iaid, dhcp-timeout, dhcp-send-hostname, 
dhcp-hostname, dhcp-fqdn, dhcp-hostname-flags, never-default, may-fail, 
dad-timeout
nmcli ipv4>

Затым прапішыце set method auto і націсніце Уводзіць:

nmcli ipv4> set method auto
Do you also want to clear 'ipv4.addresses'? [yes]:

Калі вы хочаце ачысціць статычны IP-адрас, націсніце Уводзіць. У адваротным выпадку ўвядзіце no і націсніце Enter. Вы можаце захаваць яго, калі думаеце, што ён спатрэбіцца вам у будучыні. Але нават з захаваным статычным IP-адрасам будзе выкарыстаны DHCP, калі method усталяваны ў значэнне auto.

Выкарыстоўвайце каманду save, каб захаваць змены:

nmcli ipv4> save
Connection 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) successfully updated.
nmcli ipv4>

Увядзіце quit, каб выйсці з Інтэрактыўнага рэдактара nmcli. Калі перадумалі выходзіць - выкарыстоўвайце каманду back.

І гэта далёка не ўсё

Адкрыйце Інтэрактыўны рэдактар ​​nmcli і паглядзіце, колькі існуе налад і колькі ўласцівасцяў мае кожная настройка. Інтэрактыўны рэдактар ​​- выдатная прылада, але, калі вы жадаеце выкарыстоўваць nmcli у аднарадкоўніках або скрыптах, вам спатрэбіцца звычайная версія для каманднага радка.

Цяпер, калі ў вас ёсць асновы, азнаёмцеся са даведачнай старонкай nmcli, каб даведацца, чым яшчэ яна можа дапамагчы.

На правах рэкламы

Эпічныя серверы - Гэта віртуальныя серверы на Windows ці Linux з магутнымі працэсарамі сямейства AMD EPYC і вельмі хуткімі NVMe дыскамі Intel. Спяшайцеся замовіць!

Кіруем сеткавымі падлучэннямі ў Linux з дапамогай кансольнай утыліты nmcli

Крыніца: habr.com

Дадаць каментар