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 2Použijte příkaz
nmcli device show
získat úplné informace o známých zařízeních anmcli 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íhonmcli
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, --waitnastavit č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 NetworkManageruVš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 povolenoTen 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 jsouc
[připojení] ad
[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.8Po 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.8Změ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 enp2s0Po 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