Karatasi ya kumbukumbu

Amri za mtandao Linux: ip, ss, ping, traceroute, dig na curl kwa uchunguzi wa mtandao

Imesasishwa: · Skillaria.Top

Amri kuu za mtandao Linux ni ip (anwani, interfeisi na njia), ss (bandari zilizo wazi na miunganisho), ping na traceroute (kama nodi inapatikana na njia inayofika kwake), dig (ukaguzi wa DNS) na curl (maombi kwa huduma za HTTP). Uchunguzi ni rahisi zaidi ukifanywa kwa tabaka: interfeisi na anwani, njia, DNS, bandari, kisha jibu la programu.

Amri za mtandao Linux zinafunika karibu uchunguzi wote wa kila siku: ip inaonyesha anwani na njia, ss inaonyesha bandari zilizo wazi na miunganisho, ping na traceroute zinakagua kama nodi inapatikana, dig inakagua DNS, na curl inakagua jibu la huduma ya wavuti. Hapa chini kuna orodha ya amri zenye bendera, pamoja na mpangilio wa hatua unaokusaidia kutafuta chanzo cha tatizo pale "mtandao haufanyi kazi".

Orodha ya amri za mtandao kwa jedwali moja

KaziAmri
Anwani za IP za interfeisi zoteip -br addr
Hali ya interfeisi (UP/DOWN)ip -br link
Jedwali la njiaip route
Pakiti itapitia lango gani kufika anwani fulaniip route get 8.8.8.8
Majirani (jedwali la ARP)ip neigh
Bandari zinazosikiliza na michakato yakesudo ss -tulpn
Miunganisho ya TCP iliyoanzishwass -tn state established
Kukagua kama nodi inapatikanaping -c 4 example.com
Njia ya pakiti hadi kwenye noditraceroute example.com, mtr example.com
Kubadilisha jina kuwa anwanidig +short example.com
Kuuliza seva fulani ya DNSdig @1.1.1.1 example.com
Kukagua jibu la HTTPcurl -I https://example.com
Maelezo ya muunganisho na TLScurl -v https://example.com
Kama bandari ya TCP iko wazinc -zv host 443
Jina la kompyuta (host)hostnamectl, hostname -I

ip: anwani, interfeisi na njia

Amri ip kutoka kifurushi cha iproute2 imechukua nafasi ya ifconfig na route ya zamani. Amri ndogo zinaweza kufupishwa: ip a = ip addr, ip r = ip route. Bendera -br inatoa matokeo mafupi, na -c inaweka rangi.

$ ip -br addr
lo               UNKNOWN        127.0.0.1/8 ::1/128
eth0             UP             192.168.1.25/24 fe80::a00:27ff:fe4e:66a1/64
docker0          DOWN           172.17.0.1/16

Kama interfeisi haina anwani ya mtandao unaohitajika au iko kwenye hali ya DOWN, hakuna haja ya kutafuta zaidi — tatizo liko katika ngazi hii.

Jinsi ya kuongeza anwani ya IP na kuwasha interfeisi

sudo ip link set eth0 up
sudo ip addr add 192.168.1.50/24 dev eth0
sudo ip addr del 192.168.1.50/24 dev eth0

Mabadiliko yanayofanywa kwa ip yanadumu hadi kompyuta izimwe na kuwashwa upya. Mipangilio ya kudumu huwekwa kwenye usanidi wa mfumo: netplan katika Ubuntu, NetworkManager (nmcli) katika Fedora na RHEL, na systemd-networkd kwenye seva.

Njia na lango chaguo-msingi

$ ip route
default via 192.168.1.1 dev eth0 proto dhcp metric 100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.25

$ ip route get 10.20.0.5
10.20.0.5 via 192.168.1.1 dev eth0 src 192.168.1.25 uid 1000

Mstari wa default via ni lango ambalo kila kitu kisichoingia kwenye njia sahihi zaidi hupelekwa. Usipoona mstari kama huu, hakutakuwa na intaneti, ingawa mtandao wa ndani unafanya kazi. Kuongeza njia: sudo ip route add 10.20.0.0/16 via 192.168.1.254.

ss: bandari zipi ziko wazi na nani anazisikiliza

ss imechukua nafasi ya netstat na inafanya kazi haraka zaidi. Mchanganyiko unaotumika zaidi ni ss -tulpn:

BenderaMaana
-t / -uTCP / UDP
-lsoketi zinazosikiliza tu
-ponyesha mchakato (kwa michakato ya watumiaji wengine unahitaji sudo)
-nusibadilishe bandari na anwani kuwa majina
-asoketi zote, pamoja na miunganisho iliyoanzishwa
-stakwimu za jumla
$ sudo ss -tulpn
Netid State  Recv-Q Send-Q Local Address:Port  Peer Address:Port Process
tcp   LISTEN 0      511          0.0.0.0:80         0.0.0.0:*     users:(("nginx",pid=812,fd=6))
tcp   LISTEN 0      128          0.0.0.0:22         0.0.0.0:*     users:(("sshd",pid=640,fd=3))
tcp   LISTEN 0      151        127.0.0.1:3306       0.0.0.0:*     users:(("mysqld",pid=901,fd=21))

Angalia anwani: 0.0.0.0 inamaanisha huduma inapokea miunganisho kutoka kwa interfeisi zote, na 127.0.0.1 inamaanisha inapokea ndani ya kompyuta hiyo tu. Hii ni sababu ya kawaida kwa nini hifadhidata "haijibu" kutoka kwa kompyuta nyingine.

Jinsi ya kujua nani amechukua bandari

sudo ss -ltnp 'sport = :8080'
sudo ss -tn dst 10.0.0.7          # miunganisho kwa anwani fulani
ss -tan state time-wait | wc -l   # soketi ngapi ziko kwenye TIME-WAIT

ping: je, nodi inapatikana

ping inatuma maombi ya ICMP echo na kuonyesha muda wa jibu na upotevu wa pakiti. Kwenye Linux inaendelea bila kikomo, kwa hiyo weka idadi ya pakiti kwa bendera -c.

$ ping -c 4 8.8.8.8
64 bytes from 8.8.8.8: icmp_seq=1 ttl=117 time=12.4 ms
...
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 12.1/12.5/13.0/0.3 ms

Bendera muhimu: -i 0.2 — muda kati ya pakiti, -W 2 — muda wa kusubiri jibu, -4/-6 — toleo la itifaki, -s 1472 -M do — kukagua MTU bila kugawanya pakiti. Kumbuka kwamba seva nyingi na huduma za wingu zinazuia ICMP, kwa hiyo kukosekana kwa jibu la ping hakumaanishi kwamba nodi haipatikani.

traceroute na mtr: pakiti zinapotea wapi

traceroute inaonyesha nodi zilizo njiani hadi lengo. Nyota (*) kwenye baadhi ya hops ni kawaida — kipanga-njia cha kati kinaweza kisijibu. Dalili ya hatari ni pale nyota zinapoendelea hadi mwisho baada ya hop fulani.

traceroute -n example.com        # bila majina ya DNS, kwa kasi zaidi
sudo traceroute -T -p 443 example.com   # TCP badala ya UDP, hupita firewall
tracepath example.com            # bila root, pia inaonyesha MTU

mtr inachanganya ping na traceroute na kusasisha takwimu za upotevu kwa kila hop kwa wakati halisi. Kwa ripoti: mtr -rwc 50 example.com.

dig: ukaguzi wa DNS

dig kutoka kifurushi cha dnsutils (bind-utils kwenye RHEL) ndiyo zana kuu ya kukagua DNS. Umbo fupi linarudisha jibu pekee:

$ dig +short example.com
93.184.215.14

$ dig example.com MX +short
$ dig @8.8.8.8 example.com A       # kuuliza seva fulani
$ dig -x 8.8.8.8 +short            # rekodi ya kinyume (PTR)
$ dig +trace example.com           # kufuata mnyororo kuanzia seva za mizizi

Katika matokeo kamili angalia status: NOERROR — rekodi imepatikana, NXDOMAIN — jina la kikoa halipo, SERVFAIL — seva haikuweza kujibu (mara nyingi ni tatizo la DNSSEC au seva ya mamlaka haipatikani). Ikiwa dig @8.8.8.8 inajibu lakini dig ya kawaida haijibu, tatizo liko kwenye resolver ya ndani: angalia /etc/resolv.conf na resolvectl status.

Kumbuka kwamba dig haisomi /etc/hosts. Ili kukagua utatuzi wa jina kama programu inavyoufanya, tumia getent hosts example.com.

curl: ukaguzi wa HTTP na API

curl inajibu swali la mwisho: je, huduma inajibu, na inarudisha nini hasa.

AmriInafanya nini
curl -I URLvichwa vya jibu pekee (ombi la HEAD)
curl -v URLkwa undani: DNS, muunganisho, TLS, vichwa
curl -L URLfuata maelekezo ya kuelekezwa upya (redirect)
curl -o file URLhifadhi kwenye faili
curl -X POST -H 'Content-Type: application/json' -d '{"a":1}' URLtuma JSON
curl -k URLusikague cheti (kwa majaribio tu)
curl --resolve site.ru:443:10.0.0.5 https://site.rufikia seva fulani bila kupitia DNS
curl -s -o /dev/null -w '%{http_code} %{time_total}\n' URLmsimbo wa jibu na muda
$ curl -s -o /dev/null -w '%{http_code} %{time_connect} %{time_total}\n' https://example.com
200 0.041 0.187

Ujumbe wa makosa wa curl unaonyesha kwa usahihi ni ngazi gani imeshindwa: Could not resolve host — DNS, Connection refused — bandari imefungwa au hakuna kinachosikiliza, Connection timed out — pakiti zinazuiwa na firewall au hakuna njia, SSL certificate problem — tatizo la cheti.

Mpangilio wa uchunguzi: wakati "mtandao haufanyi kazi"

  1. Interfeisi na anwani: ip -br addr — interfeisi iko UP na anwani ipo.
  2. Lango: ip route — kuna default via; kisha ping -c 3 <lango>.
  3. Mtandao wa nje kwa IP: ping -c 3 1.1.1.1. Ikifanya kazi, uelekezaji uko sawa.
  4. DNS: dig +short example.com. Ikiwa jibu ni tupu au kuna hitilafu wakati ping kwa IP inafanya kazi, tatizo liko kwenye resolver.
  5. Bandari: nc -zv host 443 au curl -v. Kwenye seva — ss -tulpn, kuona kama huduma inasikiliza na kwenye anwani gani.
  6. Firewall: sudo nft list ruleset, sudo iptables -L -n, sudo ufw status.
  7. Programu: curl -I na kumbukumbu za huduma (journalctl -u nginx).

Fanya kazi kutoka chini kwenda juu na usiruke hatua: kwa dakika chache utajua tatizo liko katika ngazi gani, badala ya kuanzisha upya kila kitu bila mpangilio.

Amri za zamani na mpya

Ya zamani (net-tools)Mbadala wa kisasa
ifconfigip addr, ip link
route -nip route
arp -nip neigh
netstat -tulpnss -tulpn
nslookupdig

Katika matoleo mapya ya usambazaji, net-tools mara nyingi haijasakinishwa kabisa, kwa hiyo jizoeze amri mpya.

Hitimisho

Kwa uchunguzi wa kila siku zinatosha amri sita: ip, ss, ping, traceroute, dig na curl. Kagua kwa tabaka — anwani, njia, DNS, bandari, programu — na utapata hitilafu haraka. Amri za mtandao na jinsi ya kutatua matatizo ya kawaida zinaonyeshwa kwa mifano katika kozi ya Linux.

Maswali ya mara kwa mara

Kwa nini ifconfig haipo kwenye mfumo wangu?

Iko katika kifurushi cha zamani cha net-tools, ambacho haisakinishwi kwa chaguo-msingi kwenye usambazaji wa kisasa. Tumia ip addr, au sakinisha net-tools kwa mkono.

Ninawezaje kujua anwani yangu ya IP ya nje kutoka kwenye terminal?

Endesha curl ifconfig.me au curl -4 icanhazip.com: huduma ya nje itarudisha anwani unayotoka nayo kwenye intaneti. Amri ip addr inaonyesha anwani za interfeisi, kwa kawaida za ndani tu.

Ping inatofautiana vipi na kukagua bandari?

ping inakagua upatikanaji wa nodi kwa ICMP, lakini haisemi chochote kuhusu huduma fulani. Ili kuona kama seva inakubali miunganisho kwenye bandari, tumia nc -zv host bandari au curl.

Ninawezaje kuona kasi na mzigo wa interfeisi ya mtandao?

ip -s link inaonyesha takwimu za baiti na makosa, na mzigo wa wakati halisi unaonyeshwa na iftop, nload au bmon. Kasi kati ya mashine mbili hupimwa kwa iperf3.

Ninawezaje kubadilisha seva ya DNS kwa muda?

Kwenye mifumo yenye systemd-resolved tumia sudo resolvectl dns eth0 1.1.1.1. Kwa jaribio la mara moja ni rahisi zaidi kutaja seva moja kwa moja kwenye ombi: dig @1.1.1.1 example.com.

Jifunze mada hii kwa video

Mada hii inafundishwa kwa kina pamoja na mazoezi katika kozi “Linux: с нуля до уверенного администрирования”.

Nenda kwenye kozi