GNU/Linux >> Znalost Linux >  >> Linux

Začněte s NetworkManagerem v systému Linux

Většina aktuálních distribucí Linuxu  použijte NetworkManager pro vytváření a správu síťových připojení. To znamená, že tomu musím rozumět jako správce systému. V sérii článků se podělím o to, co jsem se doposud naučil, a proč si myslím, že NetworkManager je zlepšení oproti minulým možnostem.

Red Hat představil NetworkManager v roce 2004 pro zjednodušení a automatizaci konfigurace sítě a připojení, zejména bezdrátových připojení. Záměrem bylo zbavit uživatele úkolu ručně konfigurovat každou novou bezdrátovou síť před jejím použitím. NetworkManager může spravovat kabelová síťová připojení bez konfiguračních souborů rozhraní, ačkoli pro bezdrátová připojení používá soubory síťového připojení.

V tomto článku se podívám na to, co je NetworkManager a jak jej používat k zobrazení síťových připojení a zařízení pro hostitele Linux. Během toho dokonce vyřeším několik problémů.

Co NetworkManager nahrazuje

NetworkManager je náhradou za předchozí nástroje pro správu sítě. Původní příkaz pro konfiguraci rozhraní, ifconfig a jeho konfigurační soubory rozhraní jsou zastaralé. Můžete to vidět v ifconfig manuálové stránky, které obsahují poznámku, která právě toto uvádí.

ip příkaz nahrazuje ifconfig velení a plní v podstatě stejné úkoly. Oba příkazy již nějakou dobu koexistují, což umožňuje Sysadminům používat kterýkoli z nich, což udržuje skripty závislé na ifconfig funkční. Ačkoli to jeho manuálové stránky ještě neuvádějí, ifconfig příkaz je zastaralý a NetworkManager to tak učinil v praxi.

Nyní je čas tyto skripty přepsat, protože používání příkazů NetworkManageru dává největší smysl.

Jak NetworkManager funguje

NetworkManager je spuštěn jako systémová služba a je ve výchozím nastavení povolen. NetworkManager spolupracuje s D-Bus na detekci a konfiguraci síťových rozhraní, když jsou zapojena do počítače se systémem Linux. Díky této plug-and-play správě síťových rozhraní je zapojování do nových sítí – kabelových i bezdrátových – pro uživatele triviálně snadné. Když jsou při spouštění Linuxu detekována dříve nainstalovaná síťová rozhraní, je s nimi zacházeno přesně jako se zařízením zapojeným poté, co je systém již spuštěn a spuštěn. Zacházení se všemi zařízeními jako plug-and-play v každém případě usnadňuje manipulaci s těmito zařízeními pro operační systém, protože existuje pouze jedna kódová základna pro řešení obou sad okolností.

Démon udev vytvoří položku pro každou kartu síťového rozhraní (NIC) nainstalovanou v systému v souboru pravidel sítě. D-Bus signalizuje NetworkManageru přítomnost nového síťového zařízení – kabelového nebo bezdrátového. NetworkManager poté naslouchá provozu na D-Bus a odpovídá vytvořením konfigurace pro toto nové zařízení. Taková konfigurace je standardně uložena pouze v paměti RAM a není trvalá. Musí být vytvořen při každém spuštění počítače.

NetworkManager používá informace z D-Bus k inicializaci každé NIC. Nejprve hledá konfigurační soubory, které poskytují trvalejší statickou konfiguraci. Po upozornění na nové zařízení NetworkManager zkontroluje existenci starých konfiguračních souborů síťového rozhraní (ifcfg-* ) v /etc/sysconfig/network-scripts . Plugin ifcfg-rh umožňuje použití těchto starších souborů pro zpětnou kompatibilitu.

Dále NetworkManager hledá své vlastní soubory připojení rozhraní umístěné v /etc/NetworkManager/system-connections adresář. Většina distribucí, včetně Fedory, uchovává své soubory síťového připojení v /etc/NetworkManager/system-connections adresář s použitím názvu sítě jako názvu souboru.

Například můj laptop System76 Oryx Pro původně používal POP!_OS . Nahradil jsem to Fedorou, která je aktuálně ve verzi 35, a každé bezdrátové připojení, které jsem s ní vytvořil, má soubor v /etc/NetworkManager/system-connections . Ty uchovávají záznam identifikátoru sady služeb (SSID) a bezdrátových hesel pro každou síť. Server DHCP (Dynamic Host Configuration Protocol) v bezdrátovém směrovači poskytuje zbývající data konfigurace sítě pro tato bezdrátová připojení. Z bezpečnostních důvodů, protože tyto soubory obsahují hesla, je čte/zapisuje pouze uživatel root, stejně jako soubory systémových účtů /etc/passwd a /etc/shadow .

/etc/NetworkManager/system-connections directory na tomto notebooku byly soubory pro kabelovou síť a také pro každou z bezdrátových sítí, ke kterým jsem se připojil. Struktura těchto souborů se liší od starého ifcfg soubory, ale jsou ve formátu prostého textu ASCII a jsou čitelné a snadno srozumitelné.

Tento proces je citlivý na sekvenci. Použije se první nalezená sada konfiguračních souborů. Pokud nejsou nalezeny žádné konfigurační soubory, NetworkManager vygeneruje konfiguraci pomocí dat ze serveru DHCP. Pokud konfigurační soubor rozhraní neexistuje, připojení nového zařízení nebo připojení k nové bezdrátové síti způsobí, že udev upozorní NetworkManager na nové zařízení nebo bezdrátové připojení. Ve Fedoře až po verzi 28 vytvoří NetworkManager nový konfigurační soubor rozhraní. Počínaje Fedorou 29 a vyšší vytváří NetworkManager pouze připojení a nevytváří konfigurační soubor rozhraní.

Pokud nejsou nalezeny žádné konfigurační soubory nebo DHCP server, není možné připojení k síti.

Zobrazení konfigurace rozhraní

Program rozhraní příkazového řádku programu NetworkManager, nmcli, poskytuje několik možností k určení aktuálního stavu jakéhokoli hardwaru síťového rozhraní nainstalovaného v hostiteli a také aktuálně aktivních připojení. Program nmcli může spravovat síť na libovolném hostiteli, ať už používá grafické uživatelské rozhraní (GUI), nebo ne, takže může také spravovat vzdálené hostitele přes zabezpečené připojení shell (SSH). Funguje na drátovém i bezdrátovém připojení.

Začnu několika základními informacemi pro používání nástroje nmcli. Používám systém Fedora, který jsem nastavil jako router, protože příklad s více síťovými rozhraními bude zajímavější než jednoduchý hostitel pracovní stanice pouze s jedním rozhraním.

Začnu nejjednodušším příkazem nmcli bez možnosti. Tento jednoduchý příkaz zobrazuje informace podobné dnes již zastaralému ifconfig příkaz, včetně názvu a modelu síťové karty, adresy MAC (media access control) a adresy IP (internetového protokolu) a která síťová karta je nakonfigurována jako výchozí brána. Zobrazuje také konfiguraci DNS pro každé rozhraní.

Příkaz nmcli vyžaduje oprávnění správce. Většina distribucí doporučuje používat sudo ale jen přepnu na root uživatel.

$ su -
# nmcli
enp4s0:připojeno k enp4s0
        "Realtek RTL8111/8168/8411"
        ethernet (r8169), 84:16:F9:04:44:03, hw, mtu 1500
        výchozí ip4, výchozí ip6
        inet4 45.20.209.41/29
        trasa4 0.0.0.0/0 2 2 9. 4.
        inet6 2600:1700:7c0:860:8616:f9ff:fe04:4403/64
        inet6 fe80::8616:f9ff:fe04:4403/64
        route6 ::/0

enp1s0:připojeno k enp1s0
        "Realtek RTL8111/8168/8411"
        ethernet (r8169), F9 :03:E9:89, hw, mtu 1500
        inet4 192.168.10.1/24
        route4 192.168.10.0/24
:f    /6:866 ff:9:0:3:866 fe88 />        route6 fe80::/64

enp2s0:připojeno k enp2s0
        "Realtek RTL8111/8168/8411"
        ethernet (r8169:894:016), 894:16 FD:85, hw, mtu 1500
        inet4 192.168.0.254/24
        trasa4 192.168.0.0/24
        inet 6 fe80::8616:f9ff:fe03:fd85/64
        route6 fe80::/64

eno1:nedostupné
        "Intel I219-V"
        ethernet e1000e), 04:D9:F5:1C:D5:C5, hw, mtu 1500

lo:nespravováno
        "lo"
        zpětná smyčka (neznámé), 00:00:00:00:00:00, sw, mtu 65536

Konfigurace DNS:
        servery:192.168.0.52 8.8.8.8 8.8.4.4
        rozhraní:enp4s0 br />        servery:192.168.0.52 8.8.8.8
        rozhraní:enp1s0

        servery:192.168.0.52 8.8.8.8 
0 rozhraní:pre  2  

Použijte příkaz nmcli device show získat úplné informace o známých zařízeních a nmcli connection show získáte přehled o aktivních profilech připojení. Úplné podrobnosti o použití naleznete na manuálových stránkách nmcli(1) a nmcli-examples(7). Můžete také zadat příkaz help, nmcli -h , jako uživatel root k zobrazení základního nmcli nejvyšší úrovně příkazy:

# nmcli -h
Použití:nmcli [MOŽNOSTI] OBJECT { COMMAND | nápověda

MOŽNOSTI
  -a, --ask                                zeptejte se na chybějící parametry
  -c, --colors auto|yes|no                 br /> zda použít barvy ve výstupu -e, --escape yes|no                      escape oddělovače sloupců v hodnotách
  -f, --fields |all|common      určete pole pro výstup
  -g, --get- hodnoty |vše|běžné  zkratka pro -m tabulkový -t -f
  -h, --help                               vytisknout tuto nápovědu
  -m, --mode tabulkový|multiline         BR /> -O -O, - -Overeview Přehled Mode
-p, --pretty Průběžný výstup
-S, --Show-Secrets umožňují zobrazování hesel
-t, - -t, --terse teze výstup
  -v, --version                            zobrazit verzi programu
  -w, --wait                     nastavit časový limit čekání na dokončení operací

OBJEKT [obecný] Obecný stav a operace NetworkManageru
  n[síť]    celkové ovládání sítě
  r[adio]         Rádiové přepínače NetworkManager
  c[onnection]    Připojení NetworkManager
  d[zařízení]        zařízení br />  a[gent]         Tajný agent NetworkManager nebo polkit agent
  m[onitor]       sledovat změny NetworkManageru

Všimněte si, že objekty lze hláskovat nebo zkracovat až na první znak. Všechny tyto objekty jsou jedinečné, takže k určení jakéhokoli jednotlivého objektu je vyžadován pouze první znak.

Zkuste nmcli g pro zobrazení obecného stavu.

# nmcli g
STATE      PŘIPOJENÍ  WIFI-HW  WIFI     WWAN-HW  WWAN    
připojeno  plné          povoleno  povoleno  povoleno  povoleno

Ten výstup se moc neprojevuje. Vím také, že hostitel v tomto případě nemá žádný WiFi hardware, takže je to zavádějící výsledek. Neměli byste používat nmcli g příkaz z toho důvodu. Lepší objektové příkazy jsou c [připojení] a d [evice], které používám nejčastěji.

 # NMCLI c 
Jméno UUID typu Device
ENP4S0 B325FD44-30B3-C744-3FC9-E154B78E8C82 Ethernet ENP4S0
ENP1S0 C0Ab6b8C-0EC-A1B4-1C47-EFE4B2D1191F Ethernet ENP1S0
ENP2S0 8C6FD7B1-AB62-A383-5BBBBBBBBB1 Ethernet ENP2S0
ENP0S20F0U7 0F5427BB-F8B1-5D51-8F74-AC246B0B00C5 Ethernet -
ENP1S0 ABF4C85B-57CC-4484-4FA9-B4A71689C359 Ethernet -

# nmcli d
Zapojení typu typu zařízení
ENP4S0 Ethernet Připojeno ENP4S0
ENP1S0 Ethernet Připojeno ENP1S0
ENP2S0 Ethernet Connected ENP2S0
ENO1 Ethernet Nedostupný -
lo      loopback  nespravováno    --        

Je zde opravdu mnoho zajímavých informací. Všimněte si, že poslední dvě položky používají c object příkaz nemají žádné položky ve sloupci zařízení. Tento výsledek může znamenat, že buď nejsou aktivní nebo neexistují, nebo že došlo k jedné nebo více chybám konfigurace.

Další informace získáváme pomocí d objektový příkaz ani neukazuje zařízení enp0s20f0u7. Zobrazuje také zařízení eno1 (zařízení na základní desce), které nebylo zobrazeno pomocí c objektový příkaz.

Váš výstup by měl vypadat spíše takto, i když název zařízení se bude lišit a bude záviset na konkrétním umístění na sběrnici PCI, ke které je síťová karta připojena.

 # NMCLI C 
Jméno UUID typu Device
Kabelové připojení 1 6E6F63B9-6D9E-3D13-A3CD-D54B4C3D2 Ethernet ENP0S3
# NMCLI d
Typ zařízení typu Stav připojení
enp0s3  ethernet  připojeno  Drátové připojení 1
lo      loopback  nespravováno  -                

Zdá se, že musím prozkoumat několik anomálií. Nejprve chci vědět, jaké zařízení enp0s20f0u7 je v seznamu připojení. Protože NetworkManager nerozpozná toto zařízení v seznamu zařízení, pravděpodobně existuje konfigurační soubor sítě v /etc/sysconfig/network-scripts i když žádné takové hardwarové zařízení na hostiteli neexistuje. Zkontroloval jsem tento adresář, našel konfigurační soubor rozhraní a zobrazil jeho obsah.

# ls -l
celkem 20
-rw-r--r-- 1 kořenový kořen 352 leden  2  2021 ifcfg-eno1
-rw-r--r-- 1 kořenový kořen 419 5. ledna 2021 ifcfg-enp0s20f0u7
-rw-r--r-- 1 kořenový adresář 381 11. ledna 2021 ifcfg-enp1s0
-rw-r--r-- 1 kořenový adresář 507 července 27  2020 ifcfg-enp2s0
-rw-r--r-- 1 kořenový adresář 453 27. července 2020 ifcfg-enp4s0

cat ifcfg-enp0s20f0u7
#f #g konfigurační soubor rozhraní pro ifc -enp0s20f0u7
# Toto je USB Gb Ethernet dongle
# Toto rozhraní je pro bezdrátové routery
# Správně od 20210105
TYPE="Ethernet"
BOOTPROTO="static"
NM_CONTROLLED="yes"
DEFROUTE="ne"
NAME=enp0s20f0u7
UUID="fa2117dd-6c7a-44e0-9c9d-9c662716a352"
NA BOOT ="ano"
HWADDR=8c:ae:4c:ff:8b:3a
IPADDR=192.168.10.1
PREFIX=24
DNS1=192.168.0.52
DNS2=8.8.8.8

Po zhlédnutí tohoto souboru jsem si vzpomněl, že jsem nějakou dobu používal USB gigabitový klíč, protože síťová karta základní desky nainstalovaná na tomto hostiteli zřejmě selhala. To byla rychlá oprava a později jsem na sběrnici základní desky PCIe nainstaloval novou síťovou kartu, abych mohl tento konfigurační soubor rozhraní odstranit. Nesmazal jsem to však; Přesunul jsem to do /root adresář pro případ, že jej budu někdy znovu potřebovat.

Všimněte si komentářů, které jsem použil, abych se ujistil, že moje budoucí já nebo jiný správce systému bude mít nějaké pochopení, proč tento soubor existuje.

Druhá anomálie je důvod, proč se položka pro enp1s0 objeví dvakrát. K tomu může dojít pouze v případě, že je název síťové karty zadán ve více než jednom konfiguračním souboru rozhraní. Zkusil jsem tedy následující kroky a jistě, enp1s0 se chybně objevuje v ifcfg-eno1 konfigurační soubor a také ifcfg-enp1s0 soubor.

# grep enp1s0 *
ifcfg-eno1:NAME=enp1s0
ifcfg-enp1s0:# Soubor konfigurace rozhraní pro enp1s0 / 192.168.10.1
ifcfg-enp1s0:NAME=enp1s0
# cat ifcfg-eno1
## Soubor konfigurace rozhraní pro eno1 / 192.168.10.1
## Toto rozhraní je pro bezdrátové směrovače
## Správně od 20200727
TYPE="Ethernet"
BOOTPROTO="static"
NM_CONTROLLED="yes"
DEFROUTE="ne"
NAME=enp1s0
ONBOOT="yes"
HWADDR=04:d9:f5:1c:d5:c5
IPADDR=192.168.10.1
PREFIX=24
DNS1=192.168.0.52
DNS2=8.8. 8.8

Změnil jsem NAME na NAME=eno1 a restartoval NetworkManager. Změny v konfiguračních souborech rozhraní se neaktivují, dokud nerestartuji NetworkManager. Výsledky zařízení a připojení nyní vypadají takto. Stále nepoužívám integrovanou NIC, což je pravděpodobně v pořádku, když jsem odstranil nesprávný název z ifcfg-eno1 konfigurační soubor rozhraní. To bude vyžadovat odstávku daného routeru.

# systemctl restart NetworkManager
# nmcli d
TYP ZAŘÍZENÍ      STATE        PŘIPOJENÍ
enp4s0  ethernet  připojeno    enp4s0    
enp1s0  ethernet br />připojeno enp1s  ethernet  en 2 připojeno   ethernet en 2 připojeno ENO1 Ethernet Nedostupný -
Lo Loopback Unmanaged -
# NMCLI c
Jméno UUID typu Device
ENP4S0 B325FD44-30B3-C744-3FC9-E154B78E8C82 Ethernet ENP4S0
ENP1S0 C0Ab6b8C-0EAC-A1B4-1C47-EFE4B2D1191F Ethernet ENP1S0
ENP2S0 8C6FD7B1-AB62-A383-5BBB1-46E083E04BB1 Ethernet ENP2S0
ENO1 ABF4C85B-57CC-4484-4FA9-B4A71689C359 Ethernet -

Další možností je zobrazit pouze aktivní připojení. Toto je dobrá volba s čistými výsledky, ale může také maskovat jiné problémy, pokud ji používáte výhradně.

 # NMCLI Připojení Show --actionActive 
Jméno UUID typu Device
ENP4S0 B325FD44-30B3-C744-3FC9-E154B78E8C82 Ethernet ENP4S0
ENP1S0 C0Ab6b8C-0EAC-A1B4-1C47-EFE4B2D1191F Ethernet ENP1S0
enp2s0  8c6fd7b1-ab62-a383-5b96-46e083e04bb1  ethernet  enp2s0

Po změně názvu zařízení v ifcfg-eno1 soubor do správného, ​​mám podezření, že NIC základní desky, eno1, bude opět fungovat. Budu s tím experimentovat, až budu mít na tomto hostiteli relaci údržby.

Není to zajímavější než hostitel s jedním NIC? A v tomto procesu jsem našel nějaké problémy.

Použití nástrojů NetworkManager ke správě sítí je popsáno v dokumentu Red Hat Enterprise Linux (RHEL) 8 „Konfigurace a správa sítě.“

Poslední myšlenky

Jsem příznivcem filozofie „pokud to není rozbité, neopravuj to“. Nicméně i to nejjednodušší použití NetworkManageru z příkazového řádku, zobrazení aktuálního stavu síťových zařízení a připojení, mi ukázalo dvě anomálie v mých předchozích konfiguracích, které jsem přehlédl. Nyní jsem fanouškem NetworkManageru. Starší nástroje byly dobré, ale NetworkManager je lepší; další informace, které poskytuje, jsou neocenitelné.

V části 2 této série se budu zabývat správou síťových rozhraní.


Linux
  1. Začínáme s linuxovými firewally

  2. Začínáme s PostgreSQL na Linuxu

  3. Začínáme s SSH v Linuxu

  1. Začněte s cloudovými servery

  2. Začněte s Tasksel v Debianu

  3. Jak začít s Deepin Terminal na Ubuntu Linux

  1. Jak jste začali s Linuxem?

  2. Začněte s Latexem na Linuxu

  3. Připojení Linux Mint k WiFi síti