GNU/Linux >> Znalost Linux >  >> Linux

5 Příkazy pro odstraňování problémů se sítí Linux

Konfigurace sítě a odstraňování problémů jsou zásadní úkoly, které musí správci systému pravidelně provádět. Některé z těchto úkolů mohou být náročné. Při řešení problémů s konektivitou vám však použití správných nástrojů pomůže dosáhnout výsledků rychleji a konzistentněji.

Příkaz ip

ip command je všestranný nástroj pro zobrazení a manipulaci se síťovými objekty ve vašem systému Linux, včetně IP adres, tras a tabulek ARP. Je to užitečný nástroj pro konfiguraci sítě a také pro řešení problémů s připojením k síti.

ip nahrazuje funkčnost mnoha příkazů poskytovaných starými net-tools balíček jako ifconfig , trasa a arp , ale přidává mnoho dalších funkcí.

Ve své nejzákladnější podobě stačí spustit ip a poskytnout síťový objekt, se kterým lze manipulovat, jako je adresa, odkaz nebo trasa, a dílčí příkaz k provedení akce. Pokud dílčí příkaz nezadáte, mnoho objektů má výchozí hodnotu show dílčí příkaz k zobrazení informací souvisejících s tímto objektem.

Zde je základní syntaxe:

ip  [PŘÍKAZ]  

Chcete-li například zobrazit stav propojení na všech síťových zařízeních, spusťte ip link show :

$ ip odkaz1:lo: mtu 65536 stav qdisc noqueue NEZNÁMÝ režim VÝCHOZÍ skupina výchozí qlen 1000    link/loopback 00:00:00:00:00 brd:00:00 00:00:00:002:enp1s0: mtu 1500 qdisc fq_codel state Režim NAHORU DEFAULT výchozí skupina qlen 1000    b link/ether 52:54:00:b5:dff:2 ff:ff:ff:ff 

Protože zobrazit je výchozí dílčí příkaz, stejný výsledek můžete získat také spuštěním ip link nebo dokonce ip l (mnoho objektů rozpoznává zkratku).

ip příkaz spravuje mnoho objektů. Hlavní jsou:

  • odkaz nebo l - řídí stav síťových zařízení
  • adresa nebo a - manipuluje s IP adresami na zařízení
  • trasa nebo r - zpracovává položky směrovací tabulky
  • soused nebo n - ovládá položky ARP tabulky

Úplný seznam objektů a příkazů můžete zobrazit spuštěním ip help .

Některé užitečné příklady příkazu ip

Zobrazit statistiku sítě -s v lidsky čitelném formátu -h pro konkrétní síťové rozhraní:

$ ip -s -h l show dev enp1s02:enp1s0: mtu 1500 qdisc fq_codel stav UP režim DEFAULT výchozí skupina qlen 1000    link/ether 502:54:C7:2B BRD FF:FF:FF:FF:FF:FF RX:Bajty Packets chyby překročení Mcast 820M 303K 0 182K 0 0 TX:Bajty Packets chyby spuštěné dopravce Collsns 19,9m 60,9K 0 0 0  

Zobrazit IP adresy všech rozhraní:

$ ip a1:lo: mtu 65536 stav qdisc noqueue UNKNOWN výchozí skupina qlen 1000    link/loopback 00:00:00:00:00:00 brd 00:00:0 00:00:00    inet 127.0.0.1/8 rozsah hostitel lo       valid_lft navždy preferovaný_lft navždy    inet6 ::1/128 hostitel rozsahu        výchozí platný_lft navždy preferovaný_lft m ROAST AST_lft forever2:stav skupina 1qCUP, disp10, 5UPM qlen 1000    link/ether 52:54:00:b5:c7:2b brd ff:ff:ff:ff:ff:ff    inet 192.168.122.169/24 brd 192.168.122.255 preferovaný rozsah pro globální noprefix 6 pro globální noprefix ever 7ecf:5cc8:5c1f:1009/64 scope link noprefixroute        valid_lft navždy preferovaný_lft navždy 

Zobrazit IP adresu jednoho rozhraní, např. enp1s0 :

$ ip a show dev enp1s0 

Přidejte do rozhraní další IP adresu (vyžaduje sudo nebo root uživatel):

$ sudo ip a change 192.168.122.170 dev enp1s0 

Zobrazte směrovací tabulku:

$ ip routedefault přes 192.168.122.1 dev enp1s0 proto statická metrika 100 192.168.122.0/24 dev enp1s0 proto kernel scope link src 192.168.122.169 metric> 100 

Přidat trasu (výchozí brána):

$ sudo ip route add default přes 192.168.122.1 dev enp1s0 

ip command je rozhraní nižší úrovně pro konfiguraci síťových možností ve vašem systému Linux. I když je užitečný jako nástroj pro odstraňování problémů, může být obtížnější s ním nastavit síť. Z tohoto důvodu mnoho distribucí poskytuje rozhraní vyšší úrovně pro splnění stejného úkolu. Dále se podívejme na konfigurační nástroj Network Manager nmcli , který poskytuje integrovaný způsob konfigurace sítě.

Nástroj nmcli

Network Manager je aplikace pro konfiguraci sítě, která je standardně k dispozici u mnoha distribucí Linuxu, včetně RHEL a Fedory. Network Manager běží jako démon a jeho cílem je poskytnout rozhraní vyšší úrovně, které usnadní a zautomatizuje konfiguraci sítě.

Uživatelé desktopového Linuxu nebo serverů s grafickým rozhraním běžně používají ke konfiguraci sítě klienty GUI Network Manager. Pro případy, kdy pracujete s bezhlavými servery nebo pokud chcete automatizovat konfiguraci pomocí skriptů shellu, nmcli nástroj se hodí.

Network Manager a nmcli jsou všestrannou kombinací, která vám umožní ověřit a nakonfigurovat mnoho síťových možností. Základní syntaxe pro nmcli je:

nmcli  [PŘÍKAZ] [ARGUMENTY] 

Nejběžnějšími objekty jsou:

  • obecné - zobrazuje stav a oprávnění Network Manager
  • sítě - zobrazuje, povoluje a zakazuje síťování
  • rádio - zobrazuje, povoluje a zakazuje WiFi a WWAN
  • zařízení - zobrazuje a manipuluje se stavem síťových zařízení
  • připojení - spravuje profily připojení Network Manager

Je nemožné pokrýt všechny možnosti v jednom příspěvku na blogu. Podívejme se na několik příkladů použití nmcli pro běžné úlohy konfigurace sítě. Další příklady najdete na oficiální stránce nmcli-examples nebo na manuálových stránkách s man nmcli-examples .

Zkontrolujte stav síťových zařízení:

$ stav zařízení nmcliDEVICE  TYPE      STATE      CONNECTION enp1s0  ethernet  připojeno  enp1s0enp7s0  ethernet  odpojeno  --lo      loopback  nespravováno  --  

Zobrazit všechny profily připojení:

$ nmcli con show NAME    UUID                                  TYPE      ZAŘÍZENÍ enp1s0  1bb35a4a-ad02-4cad-978a-4a90bether 

Zobrazit podrobnosti o konkrétním připojení (např. enp1s0 ):

$ připojení nmcli zobrazit enp1s0  

Načtení konkrétních parametrů z připojení (např. IP adresa a DNS):

$ nmcli -g ip4.address,ip4.dns připojení zobrazit enp1s0192.168.122.169/24192.168.122.1 

Upravte parametry připojení, např. přepněte z DHCP na ruční připojení:

$ sudo nmcli con mod enp1s0 ipv4.manuál k metodě ipv4.adresy 192.168.122.169/24 ipv4.dns 192.168.122.1 ipv4.gateway 192.168.122.1 

Chcete-li povolit nové možnosti, restartujte připojení:

$ sudo nmcli con down enp1s0$ sudo nmcli con up enp1s0 

Přidat nový profil připojení:

$ sudo nmcli connection add con-name enp7s0 ifname enp7s0 type ethernet ip4 192.168.64.88/24  

nmcli také umožňuje interaktivně upravovat profil připojení. Toto rozhraní poskytuje nápovědu a automatické dokončování prostřednictvím karty tlačítko, které vás provede mnoha dostupnými možnostmi. Aktivujte editor pomocí nmcli connection edit CONNECTION-NAME :

$ sudo nmcli connection edit enp7s0 ===| Interaktivní editor připojení nmcli |===Úprava stávajícího připojení '802-3-ethernet':'enp7s0'Zadejte 'help' nebo '?' pro dostupné příkazy. Chcete-li zobrazit všechny vlastnosti připojení, zadejte příkaz 'print'. Podrobný popis vlastnosti zobrazíte příkazem 'describe [.
]'. Můžete upravit následující nastavení:připojení, 802-3-ethernet (ethernet) , 802-1x, dcb, sriov, ethtool, match, ipv4, ipv6, tc, proxy. 


V editoru můžete definovat konkrétní parametry pomocí set příkaz. Použijte Tab automatické dokončování kláves pro zobrazení všech dostupných možností:

nmcli> Nastavit ipv4. Adresy DHCP-HOSTNAME DHCP-Timeout DNS-Search May-Fail RoutesDad-Timeout DHCP-HOSTNAME-FLAGS DNS Gateway Metoda trasy TabledHCP-Client-Id DHCP-IAID DNS -options          ignore-auto-dns      never-default        routing-rulesdhcp-fqdn            dhcp-send-hostname   dns-priority     dns-priority 1 4 metric route sada       4 metrických 92. routes routes 92. rout 2clites 92. v. 6 rout s

Poté můžete tisknout aktuální hodnoty:

nmcli> tisk ipv4.addresses ipv4.addresses:192.168.64.88/24, 192.168.64.90/24 

Po dokončení změn uložte k připojení a ukončit k dokončení operace:

nmcli> saveConnection 'enp7s0' (94170029-5620-4f90-ad78-704b21480b1a) úspěšně aktualizováno.nmcli> ukončit 

Nakonec restartujte připojení, aby se změny projevily.

Network Manager a nmcli jsou kompletním řešením pro konfiguraci sítě. Pokud jste jej ještě nikdy nepoužívali, začněte s některými základními příkazy a postupně přejděte ke složitějším nastavením. Chcete-li provést konkrétní úlohy, prohlédněte si manuálové stránky a příklady.

Dále si projdeme některé příkazy, které vám pomohou s řešením problémů se sítí, počínaje překladem názvů.

Příkaz nslookup

Při řešení problémů s připojením je překlad názvů DNS často zdrojem bolestí hlavy. nslookup Tento nástroj vám pomůže zkontrolovat a odstraňovat problémy s překladem názvů DNS.

Tento příkaz je dostupný pomocí bind-utils balíček na systémech RHEL8 a Fedora. Nainstalujte jej pomocí dnf :

$ sudo dnf install -y bind-utils 

Chcete-li rychle zkontrolovat překlad názvu konkrétního hostitele, použijte nslookup s názvem hostitele jako argumentem. Příkaz používá výchozí konfiguraci DNS pro překlad názvů:

$ nslookup redhat.comServer:        192.168.122.1Adresa:    192.168.122.1#53Neautoritativní odpověď:Jméno:    redhat.comAdresa:209.1105.183. 

Pokud se překlad názvů nezdaří, můžete pro rozlišení použít alternativní server názvů zadáním jeho adresy jako třetího argumentu:

$ nslookup redhat.com 192.168.0.9Server:        192.168.0.9Adresa:    192.168.0.9#53Neautoritativní odpověď:Jméno:    redhat.comAdresa:2.89.0 

Tyto informace jsou užitečné při odstraňování problémů, protože pomáhají určit, zda je problém lokální kvůli konkrétnímu serveru, nebo něco rozsáhlejšího.

Můžete jej také použít ke spouštění reverzních DNS dotazů zadáním IP adresy místo názvu hostitele:

$ nslookup 209.132.183.105105.183.132.209.in-addr.arpa    name =redirect.redhat.com. 

nslookup je užitečný nástroj, který pomáhá řešit problémy se sítí související s překladem názvů DNS. Dále se podíváme na odstraňování problémů se zásuvkami místní sítě.

Obslužný program ss

Dalším běžným úkolem při řešení problémů se síťovým připojením je určení, zda je navázáno připojení nebo zda je na serveru dostupná konkrétní služba.

ss příkaz, zkratka pro statistiku soketu , je pohodlný nástroj, který zobrazuje informace o síťové zásuvce. Je to moderní náhrada za netstat který poskytuje podobnou funkcionalitu, ale obsahuje několik dalších funkcí.

Použijte ss bez možnosti zobrazit úplný seznam všech zavedených síťových soketů pro typy soketů TCP, UDP a UNIX.

  $ SSNetid State RecV-Q Send-Q Lokální adresa:Port Peer Adresa:Portu_str Estab 0 0* 25812* 25811U_str Estab 0 0/Run/Systemd/Journal/STDOUT 23604* 23603 ... Zkrácený výstup_str estab 0 0* 22566* 22171ICMP6 nekonen 0 0*:IPv6-ICMP*:* ICMP6 nekonen 0 0*:IPv6-ICMP*:* TCP Estab 0 0 192.168.122.169:SSH 192.168.122.1:45626  

Protože výchozí příkaz zobrazuje všechna navázaná síťová připojení, může být tento seznam na vytíženém počítači rozsáhlý a může obsahovat více než tisíc položek. Abychom vám pomohli s řešením problémů, ss poskytuje několik možností filtrování.

Informace o soketech pro konkrétní typy soketů můžete zobrazit pomocí následujících parametrů příkazového řádku:-t pro TCP -u pro UDP a -x pro UNIX.

Například informace o soketu TCP zobrazte pomocí ss -t :

$ SS -Tstate Recv-Q Send-Q Local Adresa:Port Peer Adresa:PorTestab 0 0 192.168.122.169:Ssh 192.168.122.1:45626

Seznam můžete také filtrovat podle názvu hostitele nebo adresy IP zdroje nebo cíle. Zde je například seznam navázaných připojení pro cílovou IP adresu 192.168.122.1:

$ SS DST 192.168.122.1NETID State Recv-Q Send-Q Místní adresa:Port Peer Adresa:Porttcp estab 0 0 192.168.122.169:Ssh 192.168.122.1:45626

Tyto příkazy jsou užitečné při odstraňování problémů se síťovým připojením obecně nebo mezi konkrétními hostiteli v síti. Další praktická aplikace pro ss je ověřit, zda síťové služby naslouchají na místním počítači se správnou adresou a portem. Pro ověření naslouchacích soketů použijte volbu -l :

$ SS -LNETID State Recv-Q Send-Q Místní adresa:Port Peer Adresa:Portnl nenmonn 0 0 tnl:NetworkManager/909 *nl nekonen 0 0 tnl:Systemd-Resolve/1122 *... Zkrácení je zkráceno OutputUDP nenhonn 0 0 0.0.0.0:hostmon 0.0.0.0:*udp nekonen 0 0 127.0.0.53%LO:doména 0.0.0,0:0:udp nenhonn 0 0 127.0.0.1:323 0,0,0,0:*udp uncon 0 0 0 [::]:HOSTMON [::]:*UDP nenhonn 0 0 [::1]:323 [::]:*TCP Poslouchejte 0 128 0 .0.0.0:ssh 0,0.0.0:*tcp Poslouchejte 0 128 0,0.0,0:0.0.0:*tcp Poslouchejte 0 128 [::]:ssh [::]:TCP Poslouchejte 0 128 [::]:hostmon:hostmon:hostmon:hostmon:hostmon:hostmon:hostmon:hostmon:hostmon:hostmon:hostmon. [::]:*

Pro filtrování konkrétních typů zásuvek můžete použít stejné možnosti filtrování popsané výše. Chcete-li například vypsat všechny naslouchající sokety TCP, zadejte:

$ ss -ltstate recv-q Send-Q Místní adresa:Port Peer Adresa:PortListen 0 128 0.0.0.0:ssh 0.0.0.0:*listen 0 128 0,0,0,0:HOSTMON 0.0.0.0:0:Listen 0 128 [::]:ssh [::]:poslouchejte 0 128 [::]:hostmon [::]:

Místo zobrazení názvu služby, například ssh nebo hostmon , ss může zobrazit čísla portů pomocí -n možnost:

$ SS -ltnState Recv-Q Send-Q Místní adresa:Port Peer Adresa:PortListen 0 128 0,0,0:22 0.0.0.0:listen 0 128 0,0,0,0:5355 0,0,0,0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:[::]:22 [::]:Poslouchejte 0 128 [::]:5355 [::]:

Konečně další užitečná volba je -p k zobrazení informací souvisejících s procesem, jako je uživatelské jméno a ID procesu (PID). Některé služby mohou vyžadovat zvýšená oprávnění prostřednictvím sudo nebo jako root vypsat informace o procesu:

$ sudo ss -TnlpState Recv-Q Send-Q Místní adresa:Port Peer Adresa:PortListen 0 128 0.0.0.0:22 0.0.0.0:* Uživatelé:("SSHD", pid =919, FD, FD =5)) Poslouchejte 0 128 0,0.0.0:5355 0,0.0.0:* Uživatelé:("Systemd-Resolve", PID =1122, FD =13)) Poslouchejte 0 128 [::]:22 [::]:*         uživatelé:(("sshd",pid=919,fd=7))POSLECHNOUT     0          128                     [::]:5355       , d,   1, 2:d,   1, 2:d,    1, 2:  uživatelů ))

ss tool je základním příkazem v sadě nástrojů sysadmin pro úlohy odstraňování problémů se sítí. Dále se podívejme na tracepath ke sledování síťové konektivity mezi hostiteli.

Příkaz tracepath

tracepath command je nástroj pro odstraňování problémů se sítí, který zobrazuje cestu síťového připojení mezi místním hostitelem a vzdáleným hostitelem a identifikuje všechny směrovače používané ke směrování provozu mezi nimi.

V případě, že se nemůžete připojit k síťové službě ve vzdáleném hostiteli, tracepath vám pomůže určit, kde je problém.

tracepath je náhradou za traceroute , který nabízí podobnou funkcionalitu. Hlavní rozdíl je v tom, že tracepath používá pro trasování náhodné porty UDP místo protokolu ICMP, takže ke spuštění nevyžaduje zvýšená oprávnění.

Pro základní použití zadejte název hostitele nebo IP adresu cílového hostitele. Můžete také zadat volbu -n pro zobrazení IP adres směrovačů namísto jejich jmen:

$ TRACEPATH -N SAT65SERVER 1?:[Localhost] PMTU 1500 1:192.168.122.1 0,415MS 1:192.168.122.1 0,299ms 2:192.168.10.10 0,904 ms 3:192.127ms 4:192,168 0,95                                          2,020 ms     Pokračovat:pmtu 1500 

Pokud tracepath nelze se připojit k přeskoku v síti, zobrazí se žádná odpověď . Ve výchozím nastavení je maximální počet pokusů 30, což je obvykle dost. Můžete to změnit pomocí volby -m .

Předpokládejme, že po určitém skoku neobdrží žádné odpovědi. To je dobrý ukazatel, kam se dále vydat při řešení problému. tracepath informace nejsou definitivní, protože provoz může být zablokován z několika důvodů. Pomáhá vám však zúžit problém a zaměřit se na úsilí o vyřešení.

Z bezpečnostních důvodů mnoho routerů na internetu blokuje provoz, takže tracepath nemusí být tak užitečné pro sledování připojení k internetovým službám. Stále je to užitečné pro odstraňování problémů s místní sítí.

Co bude dál?

V tomto článku jsme prozkoumali pět základních nástrojů pro konfiguraci sítě a řešení problémů pro systémy Linux. Tyto nástroje jsou výkonné a poskytují mnoho možností, které je těžké pokrýt v jediném příspěvku. Doporučujeme vám si je prohlédnout a podívat se na dokumentaci a manuálové stránky, abyste viděli, jak je můžete začlenit do svého pracovního postupu.

Existují další užitečné síťové nástroje Linuxu, jako je tcpdump , nmap a firewall-cmd . Tyto nástroje jsou popsány v jiných článcích Povolit Sysadmin.

[ Je těžké spravovat síť? Podívejte se na Automatizaci sítě pro každého, bezplatnou knihu od společnosti Red Hat. ]


Linux
  1. Odstraňování problémů s hardwarem v Linuxu

  2. 10 Linuxových příkazů pro diagnostiku sítě

  3. Příkazy hledání pro Linux

  1. 5 důvodů, proč používat Linux v roce 2020

  2. Linuxový příkaz echo

  3. Linux OS Service ‚síť‘

  1. 5 chyb začátečníků v Linuxu

  2. Mých 8 oblíbených praktických linuxových příkazů

  3. Odstraňování problémů se sítí Linux a ladění?