Uživatelé Linuxu a Unixu se čas od času potýkali s různými problémy se sítí. Mnoho z těchto problémů je uvedeno zde a na některých dalších fórech pro řešení problémů, ale jsou velmi konkrétní a obsahují mnoho dalších technických informací a někdy je poměrně obtížné pochopit hlavní bod a skutečný důvod chybného chování systému.
Položením této otázky je mým záměrem založit komunitní wiki stránku, která umožňuje zobecnit naše zkušenosti s řešením problémů se sítí a laděním. Doufám, že uživatelé Linuxu a Unixu mohou pomocí této stránky snáze rozpoznat a vyřešit („rozděl a panuj“) své síťové problémy.
Nadřazená stránka této stránky by měla být osvědčeným postupem pro diagnostiku problémů. Zde bychom se však měli zaměřit na odstraňování problémů se sítí z uživatelského a jaderného prostoru.
Předpokládám, že pokud:
- Sdílejte informace o používání skvělého nástroje pro diagnostiku sítě s konkrétními příklady použití a příklady síťových chyb, které pomáhají zachytit.
- Sdílejte odkaz na skvělý síťový tutoriál související s tímto tématem
- Řekněte si o obecné metodě nebo receptu, který umožňuje řešit určité problémy se sítí
- Sdílejte informace o své sadě nástrojů pro ladění sítě a odstraňování problémů
dokonale by se to hodilo k tomuto tématu.
Začnu sdílením odkazu na diagnostické nástroje varios a 12 let starý jednoduchý návod. Zdá se, že také výukový program archlinux obsahuje aktuální informace o našem předmětu. A abychom se mohli ponořit do linuxových sítí, rozhodně musíme navštívit Linux Networking-HOWTO.
Přijatá odpověď:
Myslím, že obecné principy řešení problémů se sítí jsou:
- Zjistěte, na jaké úrovni zásobníku TCP/IP (nebo jiného zásobníku) dochází k problému.
- Pochopte, co je správné chování systému a co je odchylka od normálního stavu systému
- Zkuste vyjádřit problém jednou větou nebo několika slovy
- Pomocí získaných informací z zabugovaného systému, vlastních zkušeností a zkušeností jiných lidí (google, různá fóra atd.) se snažte problém vyřešit až do úspěchu (nebo neúspěchu)
- Pokud neuspějete, požádejte ostatní o pomoc nebo radu
Pokud jde o mě, obvykle získám všechny požadované informace pomocí všech potřebných nástrojů a snažím se tyto informace porovnat se svými zkušenostmi. Rozhodnutí, jaká úroveň síťového zásobníku obsahuje chybu, pomáhá odříznout nepravděpodobné varianty. Využití zkušeností jiných lidí pomáhá řešit problémy rychle, ale často to vede k situaci, že dokážu vyřešit nějaký problém bez jeho pochopení a pokud se tento problém objeví znovu, je pro mě nemožné jej znovu řešit bez internetu.
A obecně nevím, jak řeším problémy se sítí. Zdá se, že v mém mozku existuje nějaká magická funkce s názvem SolveNetworkProblem(information_about_system_state, my_experience, people_experience)
, který může někdy vrátit přesně správnou odpověď a také může někdy selhat (jako zde TCP umírá na notebooku s Linuxem).
Pro ladění sítě obvykle používám nástroje z této sady:
ifconfig
(neboip link
,ip addr
) – pro získávání informací o síťových rozhraníping
– pro ověření, zda je cílový hostitel dostupný z mého počítače.ping
lze také použít pro základní diagnostiku DNS – mohli bychom pingnout hostitele podle IP adresy nebo názvu hostitele a pak rozhodnout, zda DNS vůbec funguje. A paktraceroute
nebotracepath
nebomtr
podívat se, co se tam cestou děje.dig
– diagnostikovat vše DNSdmesg | less
nebodmesg | tail
nebodmesg | grep -i error
– za pochopení toho, co si linuxové jádro myslí o nějakém problému.netstat -antp
+| grep smth
– moje nejoblíbenější použití příkazu netstat, který zobrazuje informace o TCP spojení. Často provádím nějaké filtrování pomocí grep. Viz také novýss
příkaz (ziproute2
nový standard sada síťových nástrojů Linux) alsof
jako vlsof -ai tcp -c some-cmd
.telnet <host> <port>
– je velmi užitečný pro komunikaci s různými TCP-službami (např. na protokolech SMTP, HTTP), také můžeme zkontrolovat obecnou možnost připojení k nějakému TCP portu.iptables-save
(v systému Linux) – pro výpis úplného tabulky iptablesethtool
– získat všechny parametry síťové karty (stav linky, rychlost, parametry offload…)socat
– nástroj švýcarské armády pro testování všech síťových protokolů (UDP, multicast, SCTP…). Zvláště užitečné (více než telnet) s několika-d
možnosti.iperf
– k testování dostupnosti šířky pásmaopenssl
(s_client
,ocsp
,x509
…) k odladění všech problémů s SSL/TLS/PKI.wireshark
– výkonný nástroj pro zachycení a analýzu síťového provozu, který vám umožní analyzovat a zachytit mnoho síťových chyb.iftop
– zobrazit velké uživatele na síti/routeru.iptstate
(v systému Linux) – aktuální pohled na sledování připojení brány firewall.arp
(nebo nový (Linux)ip neigh
) – zobrazí stav tabulky ARP.route
nebo novější (v systému Linux)ip route
– zobrazí stav směrovací tabulky.strace
(nebotruss
,dtrace
nebotusc
v závislosti na systému) – je užitečným nástrojem, který ukazuje, jaká systémová volání způsobují problémový proces, zobrazuje také chybové kódy (errno), když systémová volání selžou. Tyto informace často řeknou dost pro pochopení chování systému a vyřešení problému. Případně pomocí bodů přerušení u některých síťových funkcí vgdb
vám umožní zjistit, kdy byly vytvořeny a s jakými argumenty.- prošetření problémů s firewallem v systému Linux:
iptables -nvL
ukazuje, kolika paketům odpovídá každé pravidlo (iptables -Z
vynulovat počítadla).LOG
cíl vložený do řetězců firewallu je užitečný, abyste viděli, které pakety se k nim dostanou a jak již byly transformovány, když se tam dostaly. Chcete-li získat dalšíNFLOG
(spojené sulogd
) zaprotokoluje celý paket.