Canivete Suíço para Redes

Este é um “Guia de referência rápida” dos principais comandos para detecção de problemas de rede. Fiz um pequeno resumo de um conjunto de ferramentas para Linux, estas somadas, formam um belo canivete Suíço para a administração de redes mas é claro que não adianta ter um grande canivete e não saber utilizar. :)

Os aplicativos que fazem parte deste “Canivete Suíço” são:

  • Ping
  • traceroute / mtr
  • nslookup
  • nmap
  • tcpdump
  • iptraf / iftop
  • Alguns websites

Todas estas ferramentas, exceto os websites, são utilizadas através do próprio terminal do linux, sem exigir, interface gráfica e/ou web. Gostaria de reforçar que escrevi apenas sobre os parâmetros mais utilizados de cada uma delas, e que todas possuem uma grande variedade de opções (e em alguns casos funções) adicionais. Para maiores informações consulte o manual.

Se achar que eu esqueci de algum comando/parâmetro importante(ou se encontrar alguma informação errada/incompleta), sinta-se a vontade para informar no campo dos comentários.

Ping
Obrigatório aparecer na lista pela sua grande importância, mas não entrarei em detalhes pois parto do pré suposto que você já conhece ao menos o básico sobre o ping e o protocolo icmp.

traceroute/mtr
O traceroute, serve para mostrar o caminho que um pacote percorre até o seu destino final, ajuda a identificar problemas de conectividade.

$ traceroute 192.168.100.148
traceroute to 192.168.100.148 (192.168.100.148), 30 hops max, 40 byte packets
1 192.168.4.254 (192.168.4.254) 0.982 ms 1.919 ms 2.312 ms
2 10.254.0.5 (10.254.0.5) 5.378 ms 5.543 ms 5.945 ms
3 172.22.187.3 (172.22.187.3) 6.121 ms 6.317 ms 6.523 ms
4 192.168.100.148 (192.168.100.148) 8.383 ms 8.581 ms 8.778 ms

Uma outra dica é utilizar o mtr (my traceroute) que apresenta as informações do traceroute de uma forma mais organizada e permanece pingando todos os hops do caminho.

nslookup
Para consultar servidores DNS, as duas principais ferramentas são o nslookup e dig.
A minha preferência é pelo nslookup, mas isso varia de pessoa para pessoa.
Para utilizar o nslookup:

$ nslookup
> set q=mx (mx para mail exchanger, outras possibilidades seriam: A,ANY,CNAME,MX,NS,PTR,SOA,SRV)
> eduardosilva.eti.br
Server: 192.168.5.254
Address: 192.168.5.254#53

Non-authoritative answer:
eduardosilva.eti.br mail exchanger = 10 aspmx.l.google.com.
eduardosilva.eti.br mail exchanger = 15 alt1.aspmx.l.google.com.
eduardosilva.eti.br mail exchanger = 20 alt2.aspmx.l.google.com.
eduardosilva.eti.br mail exchanger = 30 aspmx2.googlemail.com.
eduardosilva.eti.br mail exchanger = 35 aspmx3.googlemail.com.
eduardosilva.eti.br mail exchanger = 40 aspmx4.googlemail.com.
eduardosilva.eti.br mail exchanger = 45 aspmx5.googlemail.com.
>
> server ns1.terra.com.br (este comando permite realizar consultas DNS no servidor informado)

NMAP
O nmap é uma ferramenta muito útil para obter informações sobre hosts e/ou redes. A sintaxe dele é simples, basicamente “nmap host|rede opções”
Exemplos:
$ nmap 192.168.1.123 Lista as principais portas abertas do host
$ nmap 192.168.1.123 -sV Lista as principais portas abertas do host e tenta descobrir a versão do software que está rodando.

$ nmap 192.168.100.90 -sV
Interesting ports on ispconfig.exemplo.com.br (192.168.100.90):
Not shown: 1669 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD 1.3.1
22/tcp open ssh OpenSSH 4.3 (protocol 2.0)
25/tcp open smtp Postfix smtpd
53/tcp open domain
80/tcp open http Apache httpd 2.2.3 ((CentOS))
81/tcp open http Apache httpd
110/tcp open pop3 Dovecot pop3d
111/tcp open rpcbind 2 (rpc #100000)
143/tcp open imap Dovecot imapd
772/tcp open status 1 (rpc #100024)
3306/tcp open mysql MySQL (unauthorized)
MAC Address: 00:11:85:XX:XX:XX (Hewlett Packard)
Service Info: Host: ispconfig.exemplo.com.br; OS: Unix

$ nmap 192.168.1.123 -O Tenta identificar o sistema operacional do host, caso o nmap não retorne uma informação satisfatória, pode adicionar o parâmetro –osscan-guess para obter uma lista de possíveis possibilidades.

$ nmap 192.168.4.254 -O
Interesting ports on 192.168.5.254:
Not shown: 1711 closed ports
PORT STATE SERVICE
22/tcp open ssh
53/tcp open domain
80/tcp open http
MAC Address: 00:1C:10:BF:7A:0C (Cisco-Linksys)
Device type: broadband router
Running: Linux 2.4.X
OS details: Linksys WRT54G v2, WRT54GL, or WRT54GS v4; or Buffalo AirStation WZR-RS-G54 running OpenWrt w/Linux kernel 2.4
Network Distance: 1 hop

$ nmap 192.168.1.0/24 -sP Lista todos os hosts ativos da rede
$ nmap 192.168.1.123 -p1-1024 Testa todas as portas do host no intervalo especificado

Em resumo, o nmap é um aplicativo bem completo, para analisar hosts e redes. As opções que eu listei aqui, são apenas uma pequena parte do que este comando pode realizar. Para maiores informações, experimente ler a documentação, nmap –help, man nmap, info nmap.

tcpdump
O tcpdump é uma poderosa ferramenta para análise de tráfego de rede. Com ele é possível acompanhar que tipo de tráfego um host está gerando.

Antes de começar a explicar o comando, vou explicar o output dele.

# tcpdump -i eth0 host 192.168.137.21 -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
16:40:04.393666 IP 192.168.135.9.50982 > 192.168.137.21.22: S 785432192:785432192(0) win 5840 mss 1460,sackOK,timestamp 6838194 0,nop,wscale 7
16:40:04.394038 IP 192.168.137.21.22 > 192.168.135.9.50982: S 4235380316:4235380316(0) ack 785432193 win 5792 mss 1460,sackOK,timestamp 19613521 6838194,nop,wscale 5
16:40:04.395373 IP 192.168.135.9.50982 > 192.168.137.21.22: . ack 1 win 46 nop,nop,timestamp 6838194 19613521
16:40:04.416829 IP 192.168.137.21.22 > 192.168.135.9.50982: P 1:41(40) ack 1 win 181 nop,nop,timestamp 19613527 6838194
16:40:04.418099 IP 192.168.135.9.50982 > 192.168.137.21.22: . ack 41 win 46 nop,nop,timestamp 6838200 19613527
16:40:09.105214 IP 192.168.135.9.50982 > 192.168.137.21.22: F 1:1(0) ack 41 win 46 nop,nop,timestamp 6839372 19613527
16:40:09.106982 IP 192.168.137.21.22 > 192.168.135.9.50982: F 41:41(0) ack 2 win 181 nop,nop,timestamp 19614700 6839372
16:40:09.108212 IP 192.168.135.9.50982 > 192.168.137.21.22: . ack 42 win 46 nop,nop,timestamp 6839373 19614700

Dissecando o resultado, vamos cortar os detalhes dos pacotes e ficar só com o que nos interessa, todo o texto antes dos “:”
16:40:04.393666 IP 192.168.135.9.50982 > 192.168.137.21.22
16:40:04.394038 IP 192.168.137.21.22 > 192.168.135.9.50982
Podemos verificar que o IP 192.168.135.9 enviou um pacote com porta de origem (SPORT) 50982 para 192.168.137.21 na porta (DPORT) 22. Já na linha seguinte, podemos observar que o IP 192.168.137.21 enviou um pacote com porta de origem (SPORT) 22 para 192.168.135.9 na porta (DPORT) 50982, ou seja, uma resposta ao pacote enviado anteriormente, quando uma conexão é estabelecida, o correto é todo o pacote enviado, receba um pacote de volta. No caso as 3 primeiras linhas deste exemplo fazem parte do “3 Way Handshake”.

No exemplo abaixo, podemos observar que o host 192.168.135.9 está enviando um pacote para o host 192.168.137.22 na porta 999, entretanto este não está respondendo ou o pacote não está chegando até lá corretamente.

# tcpdump -i eth0 host 192.168.137.22 -nn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
17:16:53.530172 IP 192.168.135.9.60081 > 192.168.137.22.999: S 1050953147:1050953147(0) win 5840 mss 1460,sackOK,timestamp 7390505 0,nop,wscale 7
17:16:56.526250 IP 192.168.135.9.60081 > 192.168.137.22.999: S 1050953147:1050953147(0) win 5840 mss 1460,sackOK,timestamp 7391255 0,nop,wscale 7
17:17:02.526092 IP 192.168.135.9.60081 > 192.168.137.22.999: S 1050953147:1050953147(0) win 5840 mss 1460,sackOK,timestamp 7392755 0,nop,wscale 7
17:17:14.525388 IP 192.168.135.9.60081 > 192.168.137.22.999: S 1050953147:1050953147(0) win 5840 mss 1460,sackOK,timestamp 7395755 0,nop,wscale 7

Uma outra opção seria monitorar o tráfego de uma porta ao invés de um host ex:
# tcpdump -i eth0 port 1234 -nn
Para hosts que produzem muito tráfego, você pode dizer para o tcpdump ignorar algumas portas, exemplo:
# tcpdump -i eth0 host 192.168.137.22 -nn and not port 10050 and not port 1863 and not port 80

Estas são as opções mais básicas do tcpdump, entretanto entendendo o funcionamento delas já ajuda e muito a diagnosticar problemas.

iptraf / iftop
iptraf e iftop, são duas ferramentas com a mesma finalidade, monitorar o tráfego de rede em tempo real. Com estas duas ferramentas, é possível obter em tempo real, estatísticas de acesso à rede, quais hosts estão consumindo maior banda, protocolos utilizados, pacotes transferidos, etc..
O iptraf, ferramenta mais conhecida, oferece um melhor overview do tráfego que está circulando, já o iftop, tem a vantagem de mostrar de uma forma bem clara (através de gráficos com barras), quais hosts que são os responsáveis pelo maior tráfego de uma rede

Websites
Já que estou falando de ferramentas úteis para a resolução de problemas, citarei alguns serviços online que podem ajudar em alguns casos:

DNSstuff – De todo o dinheiro que eu já torrei online, este é sem dúvidas o mais bem empregado. A anuidade custa em torno de U$70,00 mas acredito que vale a pena. A maioria dos seus testes possuem versões gratuitas na internet, entretanto este mantem todas as ferramentas no mesmo site e ainda possui o DNSreport que faz um checkup completo nos seus domínios.

Subnetmask – Uma ótima calculadora para redes. Principalmente se você for meio preguiçoso como eu :)

MacAddress Vendor Codes – Para ter alguma pista sobre “aquele ip estranho que apareceu na rede”, além do nmap, descubra o seu macaddress (com o comando arp) e consulte nesta lista quem é o seu fabricante. Os seis primeiros dígitos de um Mac, correspondem ao fabricante do equipamento.

Para contribuições, dúvidas, sugestões ou críticas, utilize o campo dos comentários, eu procuro responder sempre :)

14 Responses to Canivete Suíço para Redes

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*


*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>