Võrgu põhitööriistad
Võrgu veaotsingus on tähtis eristada mitut eri küsimust. „Internet ei tööta“, „veebileht ei vasta“ ja „minu programm ei kuula porti“ võivad välja näha sarnased, kuid neid kontrollitakse eri käskudega.
Kiire orientiir
| Küsimus | Linux | macOS | Mida tavaliselt näed |
|---|---|---|---|
| kas host vastab | ping -c 4 example.com | ping -c 4 example.com | vastuseread või paketikadu |
| kas veeb vastab | curl -I https://example.com/ | curl -I https://example.com/ | HTTP staatus ja päised |
| millised liidesed on | ip a | ifconfig | liidesed ja IP-aadressid |
| mis pordid kuulavad | ss -ltn | lsof -iTCP -sTCP:LISTEN -n -P | kuulavad TCP-pordid |
Kui kasutad macOS-i ja ip a või ss annab command not found, siis see on normaalne. Need on Linuxi tööriistad; macOS-is kasuta alguses ifconfig ja lsof.
Tüüpilised algaja vead
- peetakse
pingtulemust veebiteenuse lõplikuks kontrolliks - unustatakse, et mõni server ei vasta
ping-ile, kuigi veeb töötab - kasutatakse Linuxi käske
ipjassmacOS-is ning arvatakse, et midagi on katki - vaadatakse kuulavat porti, aga ei eristata
127.0.0.1,0.0.0.0ja arvuti tegelikku võrguaadressi - kontrollitakse kauget teenust, kuigi probleem on enda arvutis käivitatud programmis
Esimene kontrollrada
Veebiteenuse puhul alusta HTTP-st:
curl -I https://example.com/
Kui tahad näha, kas host vastab ICMP-le:
ping -c 4 example.com
Kui uurid oma masina võrku, vali süsteemi järgi üks rida:
ip a
ifconfig
Kui uurid, kas kohalik teenus kuulab porti, vali süsteemi järgi üks rida:
ss -ltn
lsof -iTCP -sTCP:LISTEN -n -P
Ära käivita Linuxi ja macOS-i variante läbisegi. Vali see, mis sinu süsteemis olemas on.
ping: hosti esimene signaal
ping saadab ICMP-pakette ja mõõdab, kas host vastab.
ping -c 4 example.com
Tulemuse lugemine:
- vastuseread tähendavad, et host vastas ICMP-le
- paketikadu tähendab, et osa päringuid ei saanud vastust
- vastuse puudumine ei tõesta veel, et veebiteenus on maas
Paljud serverid piiravad või blokeerivad ping vastuseid. Seetõttu on veebiteenuse kontrolliks parem järgmine käsk.
curl -I: veebiteenuse kontroll
curl -I küsib ainult HTTP-päised, mitte kogu lehe sisu.
curl -I https://example.com/
Olulised read:
| Rida | Tähendus |
|---|---|
HTTP/2 200 või HTTP/1.1 200 | server vastas edukalt |
301, 302, 308 | server suunab teisele aadressile |
404 | aadressi ei leitud |
500 seeria | serveripoolne viga |
Kui tahad suunamist jälgida, lisa -L:
curl -I -L https://example.com/
Võrguliidesed: ip a ja ifconfig
Liides on võrguühendus sinu arvutis: Wi-Fi, kaabel, VPN, loopback või virtuaalne adapter.
Linuxis:
ip a
macOS-is:
ifconfig
Alguses otsi ainult kahte asja:
- kas mõnel liidesel on IP-aadress
- kas näed loopback-aadressi
127.0.0.1
127.0.0.1 tähendab sinu enda masinat. See on kasulik kohalike teenuste testimisel, aga ei tähenda, et teenus oleks teistele arvutitele nähtav.
Kuulavad pordid
Kui programm peab teenust pakkuma, peab ta tavaliselt kuulama mingit porti. Näiteks:
22SSH80HTTP443HTTPS3000,5173,8000,8080arenduse kohalikud serverid
Linuxis:
ss -ltn
macOS-is:
lsof -iTCP -sTCP:LISTEN -n -P
Teine macOS-i sisseehitatud vaade:
netstat -anv -p tcp | grep LISTEN
Vaata eriti aadressi osa:
| Kuju | Tähendus |
|---|---|
127.0.0.1:3000 | teenus kuulab ainult sinu arvutis |
0.0.0.0:3000 | teenus kuulab kõigil IPv4-liidestel |
[::]:3000 | teenus kuulab IPv6 kaudu kõigil liidestel |
Kui brauseris http://localhost:3000 töötab, aga teiselt masinalt ligi ei saa, võib põhjus olla just selles, et teenus kuulab ainult aadressil 127.0.0.1 või tulemüür ei luba ühendust.
Kas port on kaugelt avatud
Kui tahad kontrollida konkreetset hosti ja porti, sobib sageli nc.
nc -vz example.com 443
See ei tõenda, et rakendus töötab õigesti, kuid näitab, kas TCP-ühenduse loomine selle pordiga õnnestub.
Kui nc pole olemas, kasuta veebiteenuse puhul curl -I-d. HTTP jaoks annab see tavaliselt rohkem infot.
macOS: kas pean midagi paigaldama?
Alguses ei pea. macOS-is on võrgukontrolliks piisavalt sisseehitatud tööriistu:
pingcurlifconfiglsofnetstat- sageli ka
nc
Kui tahad hiljem Linuxi ip-stiilis käsku, saab lisada:
brew install iproute2mac
See on mugav lisakiht, mitte õpiku eeldus.
Minitest
- Tee
curl -Ipäring aadressilehttps://example.com/. - Tee
ping -c 4 example.comja võrdle, kas see vastab samale küsimusele. - Vaata oma süsteemis võrguliideseid: Linuxis
ip a, macOS-isifconfig. - Vaata, kas sinu masinas kuulab mõni TCP-port.
- Selgita ühe lausega, mis vahe on aadressidel
127.0.0.1:3000ja0.0.0.0:3000.
Peatüki täisspikker
Baas ja süsteemipilt
Eesmärk
erista nelja küsimust: kas host vastab, kas veeb vastab, millised liidesed on ja kas kohalik teenus kuulab porti
Kontrollrada
curl -I https://example.com/kontrolli veebiteenustping -c 4 example.comkontrolli hosti ICMP vastustip avaata Linuxi liideseidifconfigvaata macOS-i liideseidss -ltnvaata Linuxi kuulavaid TCP-portelsof -iTCP -sTCP:LISTEN -n -Pvaata macOS-i kuulavaid portenc -vz example.com 443kontrolli TCP ühendust porti
Olulised võtmed ja vaated
curl -Iküsi HTTP-päised HEAD-päringugacurl -Ljärgi HTTP ümbersuunamisiLISTENport kuulab127.0.0.1ainult oma masin0.0.0.0kõik IPv4-liidesedip/ssLinuxi tööriistadifconfig/lsofmacOS-i põhivariandid
Süsteemi põhialused on läbitud. Vali nüüd oma eesmärgile sobiv õpitee; kõiki ülejäänud peatükke ei pea järjest lugema.