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

1
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

2
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

3
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

4
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.

5
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

6
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.

7
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:

8
$ 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.

9
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 (RX-
DRP) 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 flag-


uri pe care le-am vzut cu comanda ifconfig. Semnificaia flag-urilor este
artat n lista urmtoare:

B Adresa de broadcast a fost trimis


L Driver-ul loopback
M Modul promiscuu
N Trailer-urile sunt evitate
O ARP dezactivat
P Conexiune point-to-point
R Running
U Interfaa e activ

Cum se vede din extrasul de mai sus, mai multe flag-uri pot fi
combinate ntr-un singur bloc.

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