Sunteți pe pagina 1din 22

Faciliti TCP/IP

Versiunea Linux-ului de TCP/IP are mai multe programe utilitare care


ofer informaii de stare i statistici despre performanele reelei. Sunt
disponibile mai multe faciliti pentru debugging care ajut programatorul
sau utilizatorul ce are cunotinele necesare s localizeze problemele
reelei. Acest capitol examineaz mulimea de baz a acestor instrumente. Se
ncepe cu o privire asupra fiierelor primare de configurare implicate n
TCP/IP. Dei aceste fiiere au fost discutate n capitolele anterioare,
merit s le analizm din nou n detaliu. Nu toate dintre aceste instrumente
i fiiere de configurare vor fi oferite cu fiecare versiune de Linux, n
special din cauz c dou variante(BSD i System V) ale acestor faciliti
sunt n distribuia general. V putei verifica pachetul software pentru a
vedea ce faciliti vi s-au oferit. Dac avei nevoie de o facilitate care nu
a fost inclus, putei face download de pe site-urile BBS sau FTP i sperai
c nu vor aprea incompatibiliti! Majoritatea comenzilor i facilitilor
menionate n acest capitol nu sunt disponibile tuturor utilizatorilor, dei
superuserii le pot accesa.

Fiiere de configurare
Mai multe fiiere sunt implicate n specificarea complet a adreselor
i configuraiei reelei pentru TCP/IP. Linux-ul permite comentarii pe
fiecare linie a acestor fiiere de configurare, att timp ct acestea au
naintea lor semnul diez (#). Multe sisteme Linux vor avea fiiere de
configurare default, goale, cu intrri default comentate pn cnd
administratorul de sistem nltur simbolurile de comentariu.

Denumiri simbolice de maini: /etc/hosts


O denumire simbolic este o alternativ folosirii unei adrese IP. De
exemplu, este mult mai uor s numeti o main vecin darkstar dect
147.23.13.32. Cnd un nume simbolic este folosit de aplicaie ca o adres,
software-ul TCP/IP trebuie s fie capabil s transforme acel nume ntr-o
adres de reea (TCP/IP folosete numai adrese IP). Fiierul ASCII /etc/hosts
este folosit de obicei, cu nume simbolice ataate adreselor reelei.
(Observai c fiierul /etc/hosts nu este utilizat cnd sunt folosite
sistemele Yellow Pages (YP), Network In formation Services (NIS), sau Domain
Name Server (DNS). Aceste servicii au propriile fiiere de configurare.)
Linux-ul folosete fiierul /etc/hosts pentru a pstra adresele de
reea i denumirile simbolice, dar i o conexiune numit loopback (care este
examinat mai trziu n acest capitol n seciunea Drivere Loopback).
Adresa conexiunii loopback este de obicei listat ca numele mainii sau gazda
local.
Fiierul /etc/hosts conine adresele de reea ntr-o coloan i
denumirile simbolice n alta. Dei adresele de reea pot fi specificate n
format zecimal, octal sau hexazecimal, cel zecimal este cel mai des folosit
(i folosirea altor formate poate crea confuzii). Putei specifica mai multe
denumiri simbolice pe linie, separndu-le prin spaii (spaii sau tab-uri).
Urmeaz o mostr dintr-un fiier /etc/hosts din Linux:
# network host addresses

127.0.0.1 localhost local merlin_server


157.40.40.12 artemis

157.40.40.2 darkstar
143.10.12.62 big_bob
153.21.63.1 tpci_server tpci_main tpci
191.13.123.4 kitty_cat
Cnd un utilizator sau o aplicaie specific un nume simbolic, Linux-ul
caut n fiierul /etc/hosts un nume care s se potriveasc i apoi citete
adresa corespunztoare de pe aceeai linie. Putei schimba oricnd coninutul
fiierului /etc/hosts i schimbrile au un efect imediat.

Denumiri de reea: /etc/networks


Capitolul 30, Configurarea TCP/IP, meniona fiierul /etc/networks.
Acest fiier permite reelelor s fie adresate cu un nume simbolic, la fel ca
mainile, n loc de adresa lor IP. Pentru a rezolva numele de reea, este
folosit fiierul /etc/networks care specific denumirile simbolice de reea.
Formatul fiierului ne d denumirea simbolic a unei reele, adresa ei i
orice alias care ar putea fi folosit. O mostr dintr-un fiier /etc/networks:
# local network names
tpci 146.1 tpci_network tpci_local
bnr 47.80 BNR bnr.ca
big_net 123.2.21
unique 89.12323 UNIQUE
loopback 127 localhost
Ultima intrare n fiier d numele de loopback. Prima intrare specific
numele mainii locale, adresa ei de reea i variantele ei de denumiri care
pot fi folosite n aplicaii.

Protocoale de reea: /etc/protocols


TCP/IP folosete un numr special, numit numr de protocol, pentru a
identifica protocolul de transport pe care un sistem Linux l primete.
Aceasta permite ca soft-ul TCP/IP s decodeze corespunztor informaiile pe
care le primete. Un fiier de configurare numit /etc/protocols identific
toate protocoalele de transport disponibile n Linux i le d numerele de
protocol respective. Toate sistemele au acest fiier, dei unele intrri pot
fi comentate pentru a preveni intruziunile nedorite sau abuzurile.
De obicei fiierul /etc/protocols nu este modificat de administrator.
n schimb, fiierul este meninut de soft-ul de reea i actualizat automat

ca parte a procedurii de instalare. Fiierul conine numele protocolului,


numrul lui i orice alias ce poate fi folosit pentru acest protocol. O
mostr dintr-un fiier /etc/protocols:
# protocols
ip 0 IP # internet protocol, pseudo protocol number
icmp 1 ICMP # internet control message protocol
igmp 2 IGMP # internet group multicast protocol
ggp 3 GGP # gateway-gateway protocol
tcp 6 TCP # transmission control protocol
pup 12 PUP # PARC universal packet protocol
udp 17 UDP # user datagram protocol
idp 22 IDP # WhatsThis?
raw 255 RAW # RAW IP interface
Coninutul
exact
al
fiierului
/etc/protocols
de
pe
sistemul
dumneavoastr poate diferi puin de fiierul artat mai sus, dar numerele de
protocol i numele sunt probabil foarte asemntoare. Pot fi listate
protocoale adiioanale, n funcie de versiunea de Linux i de soft-ul de
reea.

Servicii de reea: /etc/services


Ultimul fiier de configurare TCP/IP folosit pe majoritatea sistemelor
Linux identific serviciile de reea existente. Acest fiier se numete
/etc/services. Ca i fiierul /etc/protocols, acest fiier, de obicei, nu
este modificat de administrator, dar este meninut de software la instalare
sau configurare. Se face excepie cnd fiierul /etc/services are servicii
lips, pe care soft-ul aplicaiei nu le-a adugat automat. n plus, un
administrator de sistem poate scurta fiierul /etc/services pentru a asigura
securitatea, ca atunci cnd se seteaz un firewall pentru reeaua local
Fiierul /etc/services este n format ASCII i este format din numele
serviciului, un numr de port i tipul protocolului. Numrul portului i
tipul protocolului sunt separate prin slash. Urmeaz alias-urile oricrui
serviciu opional. Urmeaz un scurt extras dintr-o mostr de fiier
/etc/services (fiierul este de obicei destul de lung):
# network services
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null

ftp 21/tcp
telnet 23/tcp
smtp 25/tcp mail mailx
tftp 69/udp
# specific services
login 513/tcp
who 513/udp whod
Majoritatea fiierelor /etc/services vor avea mult mai multe linii
pentru c multe servicii TCP/IP sunt suportate de majoritatea versiunilor de
Linux. Multe dintre sistemele Linux nu sunt folosite ca firewalls pe Internet
sau ntre LAN-uri, aa c muli dintre administratorii mainilor Linux nu vor
trebui s se preocupe de coninutul acestui fiier. Pe de alt parte, dac
maina se va comporta ca un firewall sau v preocup foarte mult securitatea,
putei s modificai manual fiierul /etc/services.

Driverul Loopback
Driverul loopback este unul dintre cele mai des folosite i
fundamentale instrumente de diagnostic disponibile unui administrator de
sistem. Driverul loopback acioneaz ca un circuit virtual n afara i
nuntrul mainii gazd. Toate informaiile de ieire sunt imediat rerutate
ctre un input. Driverul loopback poate fi folosit pentru testarea
circuitelor mainii eliminnd influenele externe (inclusiv placa de rerea,
reeaua nsi, porile de conectare, sau mainile de la distan). Cu
driverul loopback v putei asigura c maina local lucreaz corespunztor
i c orice probleme apar nu sunt aici, ci mai departe n reea. Driverele
loopback sunt ncorporate ca parte a nucleului sistemului de operare Linux.
Deoarece TCP/IP cere o adres IP destinaie pentru a trimite datele, un
driver loopback este setat ca o adres de reea special, cu adresa IP
127.0.0.1. Intrrile driverului loopback sunt totdeauna fcute n fiierul
/etc/hosts, ca mai jos:
loopback 127 localhost
Driver-ul loopback este deasemenea cunoscut ca localhost, i pot fi
folosite ambele nume. Dac driver-ul loopback nu exist deja pe main,
trebuie creat cu comanda ifconfig. Pentru mai multe informaii, vezi
Capitolul 30, Configurarea TCP/IP.

Comanda ifconfig
Cu programul ifconfig se pot activa i dezactiva interfeele reelei,
ca i configurarea acestora. Accesul n programul ifconfig este n general

restricionat la superuser. Cu ifconfig sunt disponibile multe opiuni, multe


dintre care administratorii nu le folosesc niciodat. De cele mai multe ori,
ifconfig se folosete numai pentru a activa o interfa, cum se arat n
Capitolul 30, Configurarea TCP/IP.
Formatul comenzii ifconfig respect de fiecare dat aceeai sintax.
Sintaxa este:
ifconfig interf [adres [param]]
unde interf este numele interfeei, adres (opional) este adresa IP sau
denumirea simbolic care va fi asignat interfeei (care este verificat n
/etc/hosts sau /etc/networks), i param este unul dintre argumentele
opionale pentru adres.
Cnd este folosit numai cu numele unei interfee, ifconfig returneaz
informaii despre starea curent a interfeei, cum se arat n codul urmtor.
n acest exemplu se realizeaz att o interogare a plcii de reea , ct a
driverului loopback. Flag-urile de stare ale interfeei sunt urmate de adresa
de Internet, adresa de transmitere (broadcast), i opional ofer o masc de
reea care definete adresa de Internet folosit pentru compararea adreselor
la rutare. Output-ul dumneavoastr poate fi diferit, dar ifconfig ar trebui
s arate ntotdeauna informaii despre interfa (doar dac una nu a fost
definit).
$ ifconfig eth0
eth0 Link encap 10Mps: Ethernet Hwaddr
inet addr 147.123.20.1 Bcast 147.123.1.255 Mask 255.255.255.0
UP BROADCAST RUNNING MTU 1500 Metric 1
RX packets:0 errors:0 dropped:0 overruns:0
TX packets:0 errors:0 dropped:0 overruns:0
$ ifconfig lo
lo Link encap: Local Loopback
inet addr 127.0.0.1 Bcast {NONE SET] Mask 255.0.0.0
UP BROADCAST LOOPBACK RUNNING MTU 2000 Metric 1
RX packets:0 errors:0 dropped:0 overruns:0
TX packets:0 errors:0 dropped:0 overruns:0
Output-ul comenzii ifconfig ne arat interfaa, caracteristicile care
i sunt asignate, adresa de broadcast i mtile reelei. MTU nseamn
unitatea maxim de transfer (maximum transfer unit). Dimensiunea unitii
maxime de transfer este de obicei setat la valoarea maxim pe care tipul
interfeei o suport (1500 pentru reelele Ethernet). Unele sisteme de
operare folosesc cmpul Metric pentru a calcula costul oricrei rute
particulare, dei Linux-ul nu folosete acest cmp.
Liniile RX i TX arat cte pachete de date au fost primite i
transmise, numrul total i numrul celor cu erori, de cnd a nceput
interfaa n sesiunea curent.

Aa cum am menionat anterior, ifconfig o list lung de argumente


opionale pentru a modifica comportarea interfeei. Urmtoarele argumente
sunt disponibile n majoritatea versiunilor de Linux:
allmulti
-> Acest argument seteaz modul multicast. n prezent nu are
suport n Linux
-allmulti
-> Acest argument dezactiveaz modul multicast.
arp
-> Folosit pentru activarea Address Resolution Protocol care
detecteaz adresele fizice ale mainilor din reea. Acest argument este
setat implicit.
-arp
-> Dezactiveaz ARP. Seteaz flag-ul caracteristic NOARP.
broadcast
-> Urmat de adresa de broadcast a reelei, acest argument seteaz
adresa folosit pentru adresarea tuturor mainilor din reea. Acest
argument este folosit dac adresa de broadcast este diferit de adresa
normal calculat de TCP/IP pe baza tipului reelei.
down
-> Face interfaa inutilizabil pentru software-ul IP pn cnd
este folosit up.
metric
-> Seteaz valoarea metric pentru interfa. Dei Linux-ul nu
folosete acest argument, este inclus pentru compatibilitatea cu
implementrile TCP/IP mai vechi.
mtu
-> Urmat de o valoare n bytes, acest argument seteaz
dimensiunea unitii maxime de transmitere (numrul de octei pe care
interfaa i poate accepta ntr-o datagram). Valorile implicite ale
sistemului sunt de obicei precise.(Ethernet 1500, SLIP 296)
netmask
-> Urmat de o valoare a mtii, acest argument seteaz masca
subnet.
pointopoint -> Este folosit pentru interfeele point-to-point IP (PLIP),
conectnd dou maini printr-un port paralel.
promisc
->
Seteaz
interfaa
n
modul
promiscuu
(primete
toate
pachetele, chiar dac suntpentru adresa IP a mainii sau nu). Folosit
pentru analizarea traficului n reea, acest argument seteaz flag-ul
caracteristic PROMISC.
-promisc
-> Dezactiveaz modul promiscuu.
up
-> Implicat cnd este dat o adres, face interfaa disponibil
software-ului IP. Cnd este activ, interfaa are caracteristicile UP i
RUNNING.
Majoritatea acestor argumente pot fi folosite cu comanda ifconfig, dei
multe nu sunt necesare pentru o reea bine configurat.

Demonul inetd
Cnd o main Linux a reelei pornete, activeaz TCP/IP i accept
imediat conexiuni la porturile sale, crend un proces pentru fiecare. Pentru
a controla mai bine procesele, programul inetd a fost dezvoltat s se ocupe
singur de conexiunile la porturi, lund aceast sarcin de la server. O
diferen important este aceea c inetd creeaz un proces pentru fiecare
conexiune stabilit, pe cnd serverul creeaz un proces pentru fiecare port
(ceea ce duce la prea multe procese nefolosite). Pe multe sisteme, unele
dintre programele test i faciliti pentru informaiile de stare sunt rulate
cu inetd.
Programul inetd folosete fiierul de configurare etc/inetd.conf. Codul
urmtor este un extras dintr-o mostr a fiierului etc/inetd.conf. Prima
coloan arat numele serviciului (care corespunde unei intrri n fiierul de

servicii,
ca
/etc/services),
tipul
socket-ului
(flux,
brut
sau
datagram),numele protocolului, dac inedt mai poate accepta alte conexiuni
la acelai port imediat (nowait) sau trebuie s atepte s termine server-ul
(wait), al cui este serviciul, numele programului serverului i parametrii
opionali de care este nevoie pentru programul serverului.
#inetd.conf
ftp stream tcp nowait NOLUID /etc/ftpd ftpd
telnet stream tcp nowait NOLUID /etc/telnetd telnetd
shell stream tcp nowait NOLUID /etc/rshd rshd
login stream tcp nowait NOLUID /etc/rlogind rlogind
exec stream tcp nowait NOLUID /etc/rexecd rexecd
finger stream tcp nowait nouser /etc/fingerd fingerd
comsat dgram udp wait root /etc/comsat comsat

ntalk dgram udp wait root /etc/talkd talkd


echo stream tcp nowait root internal
discard stream tcp nowait root internal
chargen stream tcp nowait root internal
daytime stream tcp nowait root internal
time stream tcp nowait root internal
echo dgram udp wait root internal
discard dgram udp wait root internal
chargen dgram udp wait root internal
daytime dgram udp wait root internal
time dgram udp wait root internal
Fiierul /etc/inetd.conf poate fi mult mai mare, dar extrasul de mai
sus ne arat formatul general al fiierului. Fiierul /etc/inetd.conf este
citit la bootarea serverului i de fiecare dat cnd un semnal de nchidere
este primit de la o aplicaie. Acest lucru permite schimbri dinamice ale
fiierului, orice modificare fiind citit i nregistrat la urmtoarea
citire a fiierului.

Comanda netstat
Programul netstat ofer informaii despre sistemul local i sistemul
su TCP/IP. Administratorii folosesc de obicei acest program pentru a
diagnostica rapid o problem laTCP/IP. Dei formatul netstat i informaiile
specifice difer la versiunile de Linux, netstat ofer de obicei urmtoarele
sumare, fiecare fiind discutat n detaliu mai trziu:
* Comunicri end points
* Statistici despre interfea reelei
* Informaii despre tabelele de rutare
* Statistici de protocol
La o versiune urmtoare vor fi probabil adugate i informaii despre
comunicarea ntre procese i alte stive de protocol. Informaia afiat poate
fi modificat cu o optiune din linia de comand. Urmtoarele sunt opiuni
valide pentru majoritatea versiunilor de netstat:
-a Arat informaii despre toate interfeele
-c Informaiile apar continuu, actualizate la fiecare cteva secunde
-i Arat informaii despre interfee
-n Arat adresa IP n locul denumirilor simbolice
-o Arat informaii suplimentare despre starea cronometrului, timpii de
expirare i
timpii backoff
-r Arat informaii despre tabela de rutare nucleu
-t Arat informaii numai despre socket-urile TCP
-u Arat informaii numai despre socket-urile UDP
-v Arat informaii despre versiune
-w Arat informaii numai despre socket-urile brute
-x Arat informaii despre socket-uri
Output-ul unei instalri Linux tipice ce folosete comanda netstat este
artat n urmtoarele cteva seciuni, care discut comanda netstat i
output-ul ei mai detaliat. Cum am menionat deja, output-ul i semnificaia
pot fi diferite la unele versiuni, dar scopul general al instrumentului de
diagnostic rmne acelai.

Comunicri End Points


Comanda netstat cu nici o opiune ofer informaii despre toate
comunicaiile end points active. Pentru a afia despre un tip particular de
end point (punct terminal), folosii litera tipului din urmtoarea list:
-a Toate conexiunile
-t Numai conexiunile TCP
-u Numai conexiunile UDP
-w Numai conexiunile RAW
-x Numai conexiunile socket
Pentru afiarea tuturor end point-urilor care ateapt o conexiune (pe
lng socket-urile specificate de unul dintre flag-urile de mai sus), netstat
folosete opiunea a. Opiunea a singur va afia toate socket-urile.
Output-ul este formatat n dou coloane care ne arat protocolul
(Proto), cantitatea de date din cozile de primire i trimitere (Recv-Q and
Send-Q), adresele local i remote i starea curent a conexiunii. Urmeaz un
exemplu tiat de output:

$ netstat -ta
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
ip 0 0 *.* *.*
tcp 0 2124 tpci.login merlin.1034 ESTABL.
tcp 0 0 tpci.1034 prudie.login ESTABL.
tcp 11212 0 tpci.1035 treijs.1036 ESTABL.
tcp 0 0 tpci.1021 reboc.1024 TIME_WAIT
tcp 0 0 *.1028 *.* LISTEN
tcp 0 0 *.* *.* CLOSED
tcp 0 0 *.6000 *.* LISTEN
tcp 0 0 *.listen *.* LISTEN
tcp 0 0 *.1024 *.* LISTEN
tcp 0 0 *.sunrpc *.* LISTEN
tcp 0 0 *.smtp *.* LISTEN
tcp 0 0 *.time *.* LISTEN
tcp 0 0 *.echo *.* LISTEN
tcp 0 0 *.finger *.* LISTEN
tcp 0 0 *.exec *.* LISTEN
tcp 0 0 *.telnet *.* LISTEN
tcp 0 0 *.ftp *.* LISTEN
tcp 0 0 *.* *.* CLOSED
n exemplul precedent, sunt active trei conexiuni care au fost
identificate de starea ESTABL. Uneia i s-au transmis date (cum s-a artat n
coloana Sent-Q), n timp ce datele trimise alteia sunt n coad. Numele de
reea i numerele porturilor ce fac parte din conexiune sunt afiate cnd
este posibil. Asteriscurile arat c nici un end point nu a fost nc asociat
acelei adrese.
O conexiune ateapt s fie nchis i este identificat de TIME_WAIT
n coloana de stare. Dup treizeci de secunde, aceste sesiuni sunt terminate
i conexiunile eliberate. Fiecare rnd ce are LISTEN n coloana de stare nu
are nici o conexiune n acest moment i ateapt.

Poate fi folosit numai opiunea a pentru a afia o list complet a


tuturor conexiunilor. Output-ul, care este destul de mare, arat la fel, dar
include toate conexiunile (active i pasive):
$ netstat -a
Conexiunile Internet active(inclusiv serverele)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
ip 0 0 *.* *.*
tcp 0 2124 tpci.login merlin.1034 ESTABL.
tcp 0 0 tpci.1034 prudie.login ESTABL.
tcp 11212 0 tpci.1035 treijs.1036 ESTABL.
tcp 0 0 tpci.1021 reboc.1024 TIME_WAIT
tcp 0 0 *.1028 *.* LISTEN
tcp 0 0 *.* *.* CLOSED
tcp 0 0 *.6000 *.* LISTEN
tcp 0 0 *.listen *.* LISTEN
tcp 0 0 *.1024 *.* LISTEN
tcp 0 0 *.sunrpc *.* LISTEN
tcp 0 0 *.smtp *.* LISTEN
tcp 0 0 *.time *.* LISTEN
tcp 0 0 *.echo *.* LISTEN
tcp 0 0 *.finger *.* LISTEN
tcp 0 0 *.exec *.* LISTEN
tcp 0 0 *.telnet *.* LISTEN
tcp 0 0 *.ftp *.* LISTEN
tcp 0 0 *.* *.* CLOSED
udp 0 0 *.60000 *.*
udp 0 0 *.177 *.*
udp 0 0 *.1039 *.*
udp 0 0 *.1038 *.*
udp 0 0 localhost.1036 localhost.syslog

10

udp 0 0 *.1034 *.*


udp 0 0 *.* *.*
udp 0 0 *.1027 *.*
udp 0 0 *.1026 *.*
udp 0 0 *.sunrpc *.*
udp 0 0 *.1025 *.*
udp 0 0 *.time *.*
udp 0 0 *.daytime *.*
udp 0 0 *.chargen *.*
udp 0 0 *.route *.*
udp 0 0 *.* *.*
Output-ul este similar cu cel pentru opiunile ta prezentate anterior,
n afar de faptul c au fost adugate conexiunile UDP (User Datagram
Protocol). Sesiunile UDP nu au coloana de stare pentru c ele nu au o
conexiune end-to-end.

Statistici ale interfeei reelei


Comportamentul interfeei de reea (cum ar fi interfaa plcii de reea)
poate fi artat folosind opiunea i a comenzii netstat. Aceste informaii
arat imediat dac exist o problem major la conexiunile reelei.
Comanda netstat i afieaz numele interfeei (Iface), numrul maxim de
caractere pe care l poate conine un pachet (MTU), valoarea metric (nu este
folosit de Linux) i un set de coloane pentru numrul de pachete primite
fr probleme (RX-OK), primite cu erori (RX-ERR), primite dar aruncate (RXDRP) i primite, dar pierdute datorit overrun-ului(RX-OVR). Pachetele
transmise au coloane asemntoare. Ultima coloan conine o list de flag-uri
setate pentru interfa. Urmeaz o mostr de output a comenzii netstat i:
$ netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flags
lo 2000 0 231 0 0 0 231 0 0 0 BLRU
eth0 1500 0 1230 2 9 12 1421 3 2 1 BRU
Acest extras arat c sunt folosite dou interfee: un dispozitiv
Ethernet (/dev/eth0) i driver-ul loopback (lo0). n acest caz, se poate

11

vedea c interfaa Ethernet a recepionat cteva pachete rele. Acest lucru


este normal datorit naturii sistemului Ethernet, dei dac acest numr de
pachete reprezint un procentaj prea mare din numrul total de pachete
trimise, ar trebui folosite metode de diagnosticare pentru aflarea
problemei.
Se pot obine mai multe informaii specifice despre o interfa
folosind opiunea
i cu un nume de dispozitiv i un interval de timp,
specificat n secunde, cum ar fi netstat i eth0 30, pentru a obine
informaii specifice despre comportarea interfeei eth0 (Ethernet) n
ultimele 30 de secunde. De exemplu, output-ul de mai jos arat activitatea
interfeei Ethernet n ultimele 30 de secunde:
$ netstat -i eth0 30
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flags
eth0 1500 0 2341 3 5 112 2111 5 8 8 BRU
Coloana Flags din output-ul lui netstat evideniaz tipurile de flaguri pe care
le-am vzut cu comanda ifconfig. Semnificaia flag-urilor este
artat n lista urmtoare:
B
L
M
N
O
P
R
U

Adresa de broadcast a fost trimis


Driver-ul loopback
Modul promiscuu
Trailer-urile sunt evitate
ARP dezactivat
Conexiune point-to-point
Running
Interfaa e activ

Cum se vede din extrasul


combinate ntr-un singur bloc.

de

mai

sus,

mai

multe

flag-uri

pot

fi

Buffere de date
Versiunile de netstat care sunt bazate pe System V UNIX (n loc de BSD
UNIX) permit afiarea statisticilor buffer-elor de date. Informaiile despre
buffer-ele de date TCP/IP pot fi obinute cu opiunea m a comenzii netstat.
Monitorizarea comportamentului buffer-elor este important pentru c ei au un
impact direct asupra performanelor TCP/IP. Output-ul comenzii netstat m
difer n funcie de versiunea soft-ului de reea Linux care este folosit,
reflectnd implementarea diferit a codului TCP/IP.
Output-ul comenzii netstat m este prezentat mai jos. n aceast
versiune, sunt oferite intrri pentru capul fluxului, coad, tabela
descriptorilor de mesaje (mblks), tabela descriptorilor de date (dblks), i
diferite clase de tabele de descriptori de date. Coloanele arat numrul de
blocuri alocate curent (alloc), numrul de coloane libere (free), numrul
total de blocuri care sunt folosite (total), numrul maxim de blocuri care
sunt folosite n acelai timp (max), i de cte ori un bloc a fost
nedisponibil (fail).

12

$ netstat -m
streams allocation:
config alloc free total max fail
streams 292 79 213 233 80 0
queues 1424 362 1062 516 368 0
mblks 5067 196 4871 3957 206 0
dblks 4054 196 3858 3957 206 0
class 0, 4 bytes 652 50 602 489 53 0
class 1, 16 bytes 652 2 650 408 4 0
class 2, 64 bytes 768 6 762 2720 14 0
class 3, 128 bytes 872 105 767 226 107 0
class 4, 256 bytes 548 21 527 36 22 0
class 5, 512 bytes 324 12 312 32 13 0
class 6, 1024 bytes 107 0 107 1 1 0
class 7, 2048 bytes 90 0 90 7 1 0
class 8, 4096 bytes 41 0 41 38 1 0
total configured streams memory: 1166.73KB
streams memory in use: 44.78KB
maximum streams memory used: 58.57KB
Coloana fail este important i ar trebui s arate mereu zero. Dac
aici apare un numr mare, nseamn c resursa respectiv a fost suprataxat
i numrul de blocuri pentru aceast resurs trebuie crescut (aciune urmat
de recompilarea nucleului i rebootarea sistemului pentru ca schimbrile s
aib efect).

Informaii despre tabela de rutare


Tabelele de rutare sunt actualizate continuu pentru a reflecta
conexiunile la alte maini. Pentru a obine informaii despre tabela de
rutare, sunt folosite opiunile r i rs ale comenzii netstat (ultima
genereaz statistici despre tabelele de rutare).
Output-urile comenzilor netstat r i netstat rs sunt artate mai jos.
Coloanele arat maina destinaie, adresa porii care va fi folosite (un
asterisc nseamn c nu va fi folosit nici o poart), coloana Genmask
specific generalitatea rutei (ce adres IP se potrivete cu ea), un set de
flag-uri, o valoare metric (nu este folosit), un contor de referine (Refs)

13

care specific cte conexiuni active pot folosi simultan aceast rut,
numrul de pachete care au fost trimise pe aceast rut (Use), i numele
interfeei.
$ netstat -r
Tabela de rutare nucleu
Destination Gateway Genmask Flags Metric Ref Use Iface
loopback * 255.0.0.0 U 0 0 21 lo
big_system * 123.23.1.0 UGN 1 0 321 eth0
small_system * 165.213.14.0 UN 1 0 1213 eth0
Flag-urile sunt folosite pentru a arta diferite caracteristici ale
rutei. Flag-uri valide:
D Generat de ICMP
G Folosete o poart
H Doar o singur gazd poate fi gsit pe aceast cale (cum ar fi
loopback)
M Modificat de ICMP
U Interfaa e activ
Opiunile r i rs pot fi combinate cu opiunea n pentru a afia
adresele IP ale intrrilor n tabela de rutare, n loc de denumirile
simbolice (cum s-a artat mai sus). Aezarea pe ecran i informaiile afiate
de comanda netstat pot varia n funcie de implementrile Linux, ca n
exemplul urmtor:
$ netstat -nr
Kernel routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
127.0.0.1 * 255.0.0.0 U 0 0 21 lo
123.23.1.2 * 123.23.1.0 UGN 1 0 321 eth0
165.213.14.1m * 165.213.14.0 UN 1 0 1213 eth0
Folosind acest flag nu trebuie s mai facei traducerea adreselor IP.

Statistici de protocol
Versiunile de netstat bazate pe System V (opuse majoritii versiunilor
Linux bazate pe BSD) v permit s afiai statistici de protocol.
Statisticile despre comportarea protocoalelor de reea pot fi obinute cu
ajutorul comenzii netstat s. Aceasta ofer de obicei sumare pentru IP
(Internet
Protocol),
ICMP
(Internet
Control
Message
Protocol),
TCP
(Transmission Control Protocol), i UDP (User Datagram Protocol). Output-ul
acestei comenzi este util pentru a determina unde a fost localizat o eroare

14

ntr-un pachet primit, i apoi a ajuta utilizatorul s afle dac eroarea s-a
datorat unei probleme de software sau de reea.
Comanda netstat s ofer un output interactiv, cum se arat mai jos:
$ netstat -s
ip:
183309 total packets received
0 bad header checksums
0 with size smaller than minimum
0 with data size < data length
0 with header length < data size
0 with data length < header length
0 with unknown protocol
13477 fragments received
0 fragments dropped (dup or out of space)
0 fragments dropped after timeout
0 packets reassembled
0 packets forwarded
0 packets not forwardable
75 no routes
0 redirects sent
0 system errors during input
309 packets delivered
309 total packets sent
0 system errors during output
0 packets fragmented
0 packets not fragmentable
0 fragments created
icmp:
1768 calls to icmp_error
0 errors not generated because old message was icmp

15

Output histogram:
destination unreachable: 136
0 messages with bad code fields
0 messages < minimum length
0 bad checksums
0 messages with bad length
Input histogram:
destination unreachable: 68
0 message responses generated
68 messages received
68 messages sent
0 system errors during output
tcp:
9019 packets sent
6464 data packets (1137192 bytes)
4 data packets (4218 bytes) retransmitted
1670 ack-only packets (918 delayed)
0 URG only packets
0 window probe packets
163 window update packets
718 control packets
24 resets
9693 packets received
4927 acks (for 74637 bytes)
37 duplicate acks
0 acks for unsent data
5333 packets (1405271 bytes) received in-sequence
23 completely duplicate packets (28534 bytes)

16

0 packets with some dup. data (0 bytes duped)


38 out-of-order packets (5876 bytes)
0 packets (0 bytes) of data after window
0 window probes
134 window update packets
0 packets received after close
0 discarded for bad checksums
0 discarded for bad header offset fields
0 discarded because packet too short
0 system errors encountered during processing
224 connection requests
130 connection accepts
687 connections established (including accepts)
655 connections closed (including 0 drops)
24 embryonic connections dropped
0 failed connect and accept requests
0 resets received while established
5519 segments updated rtt (of 5624 attempts)
5 retransmit timeouts
0 connections dropped by rexmit timeout
0 persist timeouts
0 keepalive timeouts
0 keepalive probes sent
0 connections dropped by keepalive
0 connections lingered
0 linger timers expired
0 linger timers cancelled
0 linger timers aborted by signal
udp:

17

0 incomplete headers
0 bad data length fields
0 bad checksums
68 bad ports
125 input packets delivered
0 system errors during input
268 packets sent
Din nou, aezarea exact a output-ului se schimb n funcie de
versiunea codului de reea. Oricum, se pot folosi informaiile de baz n
orice format.

Comanda ping
Capitolul 30, Configurarea TCP/IP, ne arta cum s folosim comanda
ping pentru a verifica dac interfeele funcionau corespunztor. Putem
folosi programul ping (Packet Internet Groper)pentru a verifica dac
conexiunea este nc activ.
Programul ping lucreaz trimind o cerere echo Internet Control
Message Protocol (ICMP). Dac software-ul IP al mainii destinaie primete
cererea ICMP, va trimite imediat napoi un rspuns echo. Maina iniial va
continua s trimit cereri echo pn cnd programul ping se termin cu o
secven break (Ctrl-c sau DEL n UNIX). Dup terminare, ping afieaz un set
de statistici. Urmeaz o mostr a unei sesiuni ping:
$ ping merlin
PING merlin: 64 data bytes
64 bytes from 142.12.130.12: icmp_seq=0. time=20. ms
64 bytes from 142.12.130.12: icmp_seq=1. time=10. ms
64 bytes from 142.12.130.12: icmp_seq=2. time=10. ms
64 bytes from 142.12.130.12: icmp_seq=3. time=20. ms
64 bytes from 142.12.130.12: icmp_seq=4. time=10. ms
64 bytes from 142.12.130.12: icmp_seq=5. time=10. ms
64 bytes from 142.12.130.12: icmp_seq=6. time=10. ms
--- merling PING Statistics --7 packets transmitted, 7 packets received, 0% packet loss
round-trip (ms) min/avg/max = 10/12/20

18

O metod alternativ de a folosi ping este de a da numrul de cte ori


dorii s interogai maina de la distan (remote). Deasemenea, putei da
lungimea pachetului ca test. Comanda urmtoare instruiete ping-ul s
foloseasc pachete de date de 256 bytes i s ncerce de cinci ori:
$ ping merlin 256 5
PING merlin: 256 data bytes
256 bytes from 142.12.130.12: icmp_seq=0. time=20. ms
256 bytes from 142.12.130.12: icmp_seq=1. time=10. ms
256 bytes from 142.12.130.12: icmp_seq=2. time=10. ms
256 bytes from 142.12.130.12: icmp_seq=3. time=20. ms
256 bytes from 142.12.130.12: icmp_seq=4. time=10. ms
--- merling PING Statistics --5 packets transmitted, 5 packets received, 0% packet loss
round-trip (ms) min/avg/max = 10/13/20
Folosirea comenzii ping pentru a trimite pachete mari este o metod de
a determina comportamentul reelei cu pachetele de dimensiuni mari, mai ales
cnd trebuie s apar fragmentarea. Deasemenea, programul ping este folositor
pentru monitorizarea timpului de rspuns al reelei, observnd timpul de
rspuns la pachetele trimise cnd reeaua (sau maina) ncarc schimbrile.
Aceast informaie poate fi foarte folositoare n optimizarea TCP/IP. Cteva
implementri mai vechi ale ping-ului pur i simplu rspund cu un mesaj c
sistemul de la cellalt capt este activ (mesajul este de forma X is
alive). Pentru a rula programul interactiv, trebuie folosit opiunea s.
Programul ping este util pentru diagnosticri deoarece ne spune dac
software-ul TCP/IP funcioneaz corect, dac un dispozitiv local de reea
poate fi adresat (validndu-I adresa), i dac maina de la distan poate fi
accesat ( din nou validnd adresa i testnd rutarea). Deasemenea verific
software-ul mainii de la distan.

Comanda arp
Programul arp manipuleaz intrrile n tabelele ARP (Address Resolution
Protocol) ale sistemului. ARP ofer legtura dintre adresa IP i adresa
fizic. Cu arp putem creea, modifica, sau terge intrrile din tabela ARP.
Aceste operaiuni trebuiesc efectuate cnd adresa unei maini din reea se
schimb (fie din cauza unei schimbri n hardware-ul reelei, fie din cauza
unei schimbri fizice).
Pentru a folosi programul arp, trebuie respectat unul dintre formatele
urmtoare:
arp [-v] [-t tip] -a [numele_gazdei]
arp [-v] [-t tip] -s numele_gazdei adresa_fizic
arp [-v] -d numele_gazdei [numele_gazdei...]

19

Cnd specificm numele gazdei putem folosi numele simbolic sau adresa
IP.
Pentru a afia intrarea pentru o gazd sau o adres IP, folosim primul
format artat mai sus. Dac nu dm numele gazdei, sunt artate toate gazdele.
De exemplu, pentru a verifica intrarea ARP pentru maina de la distan
darkstar, folosim comanda urmtoare:
$ arp -a darkstar
IP address HW type HW address
147.12.32.1 10Mbps Ethernet 00:00:C0:5A:3F:C2
Aceast comand arat c maina darkstar are adresa IP 147.12.32.1 i
este gsit print-o conexiune Ethernet cu 10Mbps. Putem modifica puin
output-ul folosind opiunea t cu un tip specific de interfa. Valorile
valide sunt ax25 (AMPR AX .25 networks), ether
(10Mbps Ethernet), i pronet
(IEEE 802.5 Token Ring). De exemplu, pentru a arta numai toate conexiunile
Ethernet, folosim urmtoarea comand:
arp -t ether -a
Pentru a aduga o intrare n tabele ARP, folosim al doilea format al
comenzii, utiliznd opiunea s. Cnd adugm o intrare, adresa_fizic face
referire la adresa fizic a adapter-ului (de obicei ase seturi de cifre
hexazecimale separate pe coloane). De exemplu, pentru a aduga o intrare
pentru maina de la distan big_cat, folosim comanda
arp -s big_cat 00:00:c0:10:A1
unde se specific adresa fizic a reelei (placa de reea).
n cele din urm, ultimul format al comenzii arp artat mai sus este
folosit pentru a terge intrri din tabela ARP. Acest format poate fi necesar
cnd am adugat incorect o intrare n tabel sau reeaua s-a modificat.
Pentru a terge o intrare pentru maina x-wing, folosim aceast comand:
arp -d x-wing
Multe alte opiuni sunt valide n multe versiuni de arp, dar probabil
nu va trebui s folosim deloc comanda arp (cu att mai puin aceste opiuni).
Dac avei nevoie de mai multe informaii, paginile man conin o list de
opiuni valide i funciile lor.

Comanda traceroute
Majoritatea sistemelor Linux au o facilitate numit traceroute, care
trimite o serie de datagrame UDP (User Datagram Protocol) spre o main
destinaie. Datagramele sunt construite puin diferit n funcie de locaia
lor n fluxul trimis mainii de la distan. Primele trei datagrame au un
cmp numit Time to Live (TTL) setat pe valoarea unu, cu semnificaa c prima
dat cnd un router ntlnete mesajul l trimite napoi cu un mesaj de
expirare (datagrama a fost ignorat). Urmtoarele trei mesaje au cmpul TTL
setat pe valorile doi, trei, patru i aa mai departe, astfel nct fiecare

20

router prin care trec masajele s returneze un mesaj de expirare pn cnd


maina destinaie este gsit cu succes.
Output-ul comenzii traceroute arat timpul rotunjit de cltorie a
fiecrui mesaj (care este util pentru identificarea gtuiturilor din reea)
i eficiena algoritmilor de rutare (printr-un numr de routere care pot s
nu constituie ruta cea mai bun). Urmeaz o mostr dintr-un output al
comenzii traceroute:
$ traceroute black.cat.com
1 TPCI.COM (127.01.13.12) 51ms 3ms 4ms
2 BEAST.COM (143.23.1.23) 60ms 5ms 7ms
3 bills_machine.com (121.22.56.1) 121ms 12ms 12ms
4 SuperGateway.com (130.12.14.2) 75ms 13ms 10ms
5 black.cat.com (122.13.2.12) 45ms 4ms 6ms
Acest output arat fiecare router care a primit mesajele pn cnd a
fost gsit maina destinaie. Comanda traceroute are multe opiuni ce i
modeleaz comportarea, acestea fiind explicate n paginile din man. Comanda
traceroute este folosit de obicei de ctre administratorii de sistem sau de
reea cnd se ivesc probleme de livrare a mesajelor sau cnd reeaua pare s
se comporte foarte ncet. Deoarece majoritatea sistemelor Linux sunt pe
reele locale mici sau independente, este posibil s nu folosim niciodat
comanda traceroute.

Comanda rpcinfo
Pentru serviciile RPC (Remote Procedure Call), o facilitate numit
rpcinfo poate determina ce servicii RPC sunt active pe maina local sau
orice sistem de la distan ce ofer suport pentru RPC. Opiunile comenzii
rpcinfo variaz n funcie de implementare, dar toate implementrile permit
flag-uri pentru a decide ce tip de serviciu s fie activat.
De exemplu, opiunea p afieaz portmapper-ul local. Urmtorul exemplu
ne arat opiunile comenzii rpcinfo n versiunea din Slackware Linux, precum
i output-ul portmapper-ului.
merlin:~# rpcinfo
Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]
rpcinfo [ -n portnum ] -t host prognum [ versnum ]
rpcinfo -p [ host ]
rpcinfo -b prognum versnum
rpcinfo -d prognum versnum
merlin:~# rpcinfo -p
program vers proto port

21

100000 2 tcp 111 portmapper


100000 2 udp 111 portmapper
100005 1 udp 650 mountd
100005 1 tcp 652 mountd
100003 2 udp 2049 nfs
100003 2 tcp 2049 nfs
La fel ca i n cazul comenzii traceroute, cei mai muli administratori
de sistem nu vor trebui niciodat s foloseasc rpcinfo. Dac suntei
programator sau administrator de reea, acestea sunt totui faciliti despre
care ar trebui s tii.

22

S-ar putea să vă placă și