EdgeMAX - como capturar pacotes em várias interfaces de EdgeRouter para fins de depuração

Parabéns ao nosso membro da Comunidade esprosenx para fornecer este artigo!  

Recentemente tive um problema de comunicação do meu laptop em uma rede privada por trás de um roteador de borda para fora à Internet para um endereço IP específico.

Aqui estão os passos que tomei a fim de capturar os pacotes que ajudou a solucionar o problema:

No meu caso eu estava tendo problemas para obter acesso à www.ups.com e então a primeira coisa que fiz foi uma pesquisa de DNS.  Observe que eu corri o comando "dig" meu MacBook Pro linha de comando, já que não é (atualmente) incluído no EdgeRouter código de distribuição.

Erics-MacBook-Pro-2:~ erosenbe$ dig www.ups.com @4.2.2.1
; <<>> DiG 9.8.3-P1 <<>> www.ups.com @4.2.2.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14300
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.ups.com.INA
;; ANSWER SECTION:
www.ups.com.254INCNAMEwww.ups.com.akadns.net.
www.ups.com.akadns.net.254INCNAMEwww.upsprodcidr2.com.akadns.net.
www.upsprodcidr2.com.akadns.net. 30 INCNAMEorigin.www.ups.com.
origin.www.ups.com.2149INA153.2.224.50
origin.www.ups.com.2149INA153.2.228.50
;; Query time: 170 msec
;; SERVER: 4.2.2.1#53(4.2.2.1)
;; WHEN: Fri Apr 19 09:09:26 2013
;; MSG SIZE rcvd: 149
Erics-MacBook-Pro-2:~ erosenbe$ 

Observe que neste caso é resolvido para dois diferentes um registros, mas para efeitos de meus testes, ambos foram quebrados, então eu escolhi um dos dois.

Em seguida configurar uma captura do meu MacBook para realmente pegar todos os pacotes IP indo para ou a partir do IP específico em questão:

Erics-MacBook-Pro-2:~ erosenbe$ tcpdump -i en0 -s 0 -w UPSCapMac.cap host 153.2.224.50
tcpdump: listening on en0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C11 packets captured
1607 packets received by filter
0 packets dropped by kernel
Erics-MacBook-Pro-2:~ erosenbe$ 

O -i bandeira acima identifica qual interface no meu mac eu queria usar (você pode usar o ifconfig) comando para descobrir qual é qual para você) e o "-s 0" configuração é muito importante como diz tcpdump para "snarf" o * inteiro * quadro em vez de apenas o primeiro "x" número de bytes (porque eles fizeram isso o padrão, não sei...).  A -w Especifica um nome de arquivo de saída (por padrão deixa cair o arquivo no diretório atual, você executá-lo de).  E, finalmente, o comando "acolhimento x.x.x. x" é uma definição de filtro que capta somente o tráfego para que único IP.  Isso é ótimo, pois evita todos os outros pacotes que estão voando pela minha interface durante a captura.

Da mesma forma, configurar outro captura no próprio roteador borda sobre o * fora * da interface (eth0 no meu caso).  Isso foi em uma sessão SSH para o dispositivo que executa-lo.

ubnt@plunger:~$ sudo tcpdump -i eth0 -s 0 -w UPSCapPlungerETH0.cap host 153.2.224.50
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C29 packets captured
29 packets received by filter
0 packets dropped by kernel
ubnt@plunger:~$ 

Além disso criei outra sessão SSH para o roteador de borda e configurar uma captura sobre o * interior * interface (eth1) para que eu pudesse ver que modificações de NAT, etc... o roteador de borda tinha feito para o pacote.

ubnt@plunger:~$ sudo tcpdump -i eth1 -s 0 -w UPSCapPlungerETH1.cap host 153.2.224.50
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
^C26 packets captured
26 packets received by filter
0 packets dropped by kernel
ubnt@plunger:~$ 

Note-se que para simplificar isto para o caso de teste mínimo possível, só queria abrir uma sessão TCP do meu mac para este www.ups.com endereço IP na porta 80 (porta da web).  A melhor maneira de conseguir isso era com o aplicativo "telnet".

Erics-MacBook-Pro-2:~ erosenbe$ telnet 153.2.224.50 80
Trying 153.2.224.50...
telnet: connect to address 153.2.224.50: Operation timed out
telnet: Unable to connect to remote host
Erics-MacBook-Pro-2:~ erosenbe$  

Uma vez que eu tinha gerado os pacotes que eu queria capturar, cancelei todas as capturas de três pacotes (usinc Ctrl-C) e então eu copiei os do roteador de borda para baixo para o meu laptop:

Erics-MacBook-Pro-2:~ erosenbe$ scp ubnt@192.168.0.1:/home/ubnt/UPSCapPlungerETH0.cap .
Welcome to EdgeOS
By logging in, accessing, or using the Ubiquiti product, you
acknowledge that you have read and understood the Ubiquiti
License Agreement (available in the Web UI at, by default,
http://192.168.1.1) and agree to be bound by its terms.
ubnt@192.168.0.1's password:
UPSCapPlungerETH0.cap 100% 2100 2.1KB/s 00:00
Erics-MacBook-Pro-2:~ erosenbe$
Erics-MacBook-Pro-2:~ erosenbe$ scp ubnt@192.168.0.1:/home/ubnt/UPSCapPlungerETH1.cap .
Welcome to EdgeOS
By logging in, accessing, or using the Ubiquiti product, you
acknowledge that you have read and understood the Ubiquiti
License Agreement (available in the Web UI at, by default,
http://192.168.1.1) and agree to be bound by its terms.
ubnt@192.168.0.1's password:
UPSCapPlungerETH1.cap 100% 2100 2.1KB/s 00:00
Erics-MacBook-Pro-2:~ erosenbe$ 

Uma vez que esses arquivos são para baixo no meu computador, então eu era capaz de passar por eles com WireShark e ver qual era o problema.

Pensei que essa informação pode ser útil para um artigo do KnowledgeBase.

 

-Eric

Powered by Zendesk