Od czasu do czasu użytkownicy Linuksa i Uniksa napotykają różne problemy z siecią. Wiele z tych problemów przedstawiono tutaj i na innych forach poświęconych rozwiązywaniu problemów, ale są one bardzo konkretne i zawierają wiele dodatkowych informacji technicznych, a czasem trudno jest zrozumieć główny punkt i prawdziwą przyczynę błędów systemu.
Zadając to pytanie, zamierzam założyć stronę wiki społeczności, która umożliwia uogólnienie naszej sieci rozwiązywania problemów i debugowania. Mam nadzieję, że użytkownicy Linuksa i Uniksa mogliby łatwiej rozpoznać i rozwiązać („podzielić i pokonać”) swoje problemy sieciowe za pomocą tej strony.
Rodzicem tej strony powinna być Najlepsza praktyka w diagnozowaniu problemów . Ale tutaj powinniśmy skupić się na rozwiązywaniu problemów sieciowych z przestrzeni użytkownika i jądra.
Przypuszczam, że jeśli:
- Udostępnij informacje o korzystaniu z doskonałego narzędzia do diagnostyki sieci wraz z konkretnymi przykładami użycia i przykładami błędów sieciowych, które pomagają wykryć.
- Udostępnij link do świetnego samouczka sieciowego związanego z tym tematem
- Opowiedz o ogólnej metodzie lub przepisie, która pozwala rozwiązać niektóre problemy sieciowe
- Udostępnij informacje o zestawie narzędzi do debugowania sieci i rozwiązywania problemów
idealnie pasuje do tego tematu.
Zacznę od udostępnienia linku do narzędzi diagnostycznych varios i 12-letniego prostego samouczka . Również ArchLinux poradnik wydają się mieć aktualne informacje o naszym obiekcie. Aby zanurzyć się w sieci linuksowe, zdecydowanie musimy odwiedzić Linux Networking-HOWTO .
Odpowiedzi:
Myślę, że ogólne zasady rozwiązywania problemów z siecią to:
Co do mnie, zwykle uzyskuję wszystkie wymagane informacje za pomocą wszystkich potrzebnych narzędzi i staram się dopasować te informacje do moich doświadczeń. Zdecydowanie, jaki poziom stosu sieciowego zawiera błąd, pomaga odciąć mało prawdopodobne warianty. Korzystanie z doświadczenia innych osób pomaga szybko rozwiązać problemy, ale często prowadzi to do sytuacji, że mogę rozwiązać jakiś problem bez jego zrozumienia, a jeśli problem pojawi się ponownie, nie będę mógł rozwiązać go ponownie bez Internetu.
Ogólnie nie wiem, jak rozwiązywać problemy z siecią. Wydaje się, że w mojej mózgu jest jakaś magiczna funkcja
SolveNetworkProblem(information_about_system_state, my_experience, people_experience)
, która czasami może zwrócić dokładnie prawidłową odpowiedź, a czasem może się nie powieść (tak jak tutaj TCP umiera na laptopie z Linuksem ).Zwykle używam narzędzi z tego zestawu do debugowania sieci:
ifconfig
(lubip link
,ip addr
) - do uzyskiwania informacji o interfejsach sieciowychping
- do sprawdzania poprawności, jeśli host docelowy jest dostępny z mojego komputera.ping
może również służyć do podstawowej diagnostyki DNS - możemy pingować hosta według adresu IP lub jego nazwy, a następnie zdecydować, czy DNS w ogóle działa. A potemtraceroute
lubtracepath
lub,mtr
aby zobaczyć, co się tam dzieje.dig
- zdiagnozuj wszystko DNSdmesg | less
lubdmesg | tail
lubdmesg | grep -i error
- dla zrozumienia, co jądro Linux myśli o problemach.netstat -antp
+| grep smth
- moje najpopularniejsze użycie polecenia netstat, które wyświetla informacje o połączeniach TCP. Często wykonuję filtrowanie za pomocą grep. Zobacz także nowess
polecenie (ziproute2
nowego standardowego pakietu narzędzi sieciowych Linuksa) ilsof
jak wlsof -ai tcp -c some-cmd
.telnet <host> <port>
- jest bardzo przydatny do komunikacji z różnymi usługami TCP (np. na protokołach SMTP, HTTP), możemy również sprawdzić ogólną możliwość połączenia z jakimś portem TCP.iptables-save
(w systemie Linux) - aby zrzucić pełne tabele iptablesethtool
- pobierz wszystkie parametry karty interfejsu sieciowego (status łącza, prędkość, parametry odciążania ...)socat
- narzędzie szwajcarskiej armii do testowania wszystkich protokołów sieciowych (UDP, multicast, SCTP ...). Szczególnie przydatne (bardziej niż telnet) z kilkoma-d
opcjami.iperf
- aby sprawdzić dostępność przepustowościopenssl
(s_client
,ocsp
,x509
...) do debugowania wszystkie kwestie SSL / TLS / PKI.wireshark
- potężne narzędzie do przechwytywania i analizy ruchu sieciowego, które pozwala analizować i wychwytywać wiele błędów sieciowych.iftop
- pokaż dużym użytkownikom w sieci / routerze.iptstate
(w systemie Linux) - bieżący widok śledzenia połączenia zapory.arp
(lub nowy (Linux)ip neigh
) - pokazuje status tablicy ARP.route
lub nowszy (w systemie Linux)ip route
- pokaż status tablicy routingu.strace
(lubtruss
,dtrace
lub wtusc
zależności od systemu) - jest użytecznym narzędziem, które pokazuje, które wywołania systemowe przetwarzają problem, a także pokazuje kody błędów (errno), gdy wywołania systemowe nie powiodą się. Informacje te często mówią wystarczająco dużo, aby zrozumieć zachowanie systemu i rozwiązać problem. Alternatywnie, użycie punktów przerwania w niektórych funkcjach sieciowychgdb
może pozwolić ci dowiedzieć się, kiedy są one wykonane i za pomocą jakich argumentów.iptables -nvL
pokazuje, ile pakietów jest dopasowanych do każdej reguły (iptables -Z
aby wyzerować liczniki).LOG
Cel włożony w łańcuchach zapory jest przydatna, aby zobaczyć, które pakiety do nich dotrzeć i jak one zostały już przekształcone kiedy się tam dostać. Aby uzyskać dalszeNFLOG
(związane zulogd
), loguje się pełny pakiet.źródło
nmap
. Profil otwartych portów na komputerze może szybko podpowiedzieć, czy na przykład patrzysz na serwer z systemem Linux lub Windows.tcpdump
. Jako standardowy analizator pakietów dla TCP.Zaskakująca liczba „problemów sieciowych” sprowadza się do tego rodzaju problemów DNS. Wstępne rozwiązywanie problemów należy zastosować
ping -n w.x.y.z
, aby pominąć rozpoznawanie nazw DNS hosta i po prostu sprawdzić łączność IP. Następnie użyj,route -n
aby sprawdzić domyślną trasę IP bez rozpoznawania DNS.Po sprawdzeniu łączności IP i routingu
nslookup
,host
idig
może dostarczyć informacji. Pamiętaj, że „blokowanie” może oznaczać, że przekroczono limit czasu DNS.Nie zapomnij sprawdzić istnienia i zawartości
/etc/resolv.conf
. Klienci DHCP zmieniają ten plik przy każdej dzierżawie, a czasem źle go oceniają lub jeśli na dysku jest mało miejsca, aktualizacja może się nie powieść.źródło
Mogą występować problemy z okablowaniem. Jeśli masz dostęp do sprzętu, upewnij się, że wszystkie kable są podłączone i podłączone mechanicznie. Jeśli widzisz routery lub interfejsy Ethernet, upewnij się, że lampki łącza są włączone.
Zdalnie musisz polegać na
ethtool
imii-tool
.„Wykryto łącze: tak” jest dobre, ale 10 Mb / s i Half duplex nie są dobre, ponieważ karta sieciowa na tym komputerze może działać lepiej. Muszę dowiedzieć się, czy karta sieciowa jest wygłupiona, czy kabel jest. Inny komputer podłączony do tego samego routera mówi 100 Mb / s, pełny dupleks.
źródło