EdgeMAX - cómo capturar paquetes en múltiples interfaces EdgeRouter para propósitos de depuración

Felicitaciones a nuestros miembros de la comunidad esprosenx para proporcionar este artículo!  

Hace poco tuve un problema de comunicación desde mi laptop en una red privada detrás de un enrutador de borde hacia fuera a Internet a una dirección IP específica.

Aquí están los pasos para capturar los paquetes que ayudaron a solucionar el problema:

En mi caso yo estaba teniendo problemas para acceder a www.ups.com y así que lo primero que hice fue una búsqueda de DNS.  Tenga en cuenta que ejecuté el comando "dig" mi MacBook Pro en línea de comandos ya no está (actualmente) incluido en el EdgeRouter código de distribución.

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$ 

Tenga en cuenta que en este caso resolvió dos diferentes registros, pero para los efectos de mis pruebas, ambos estaban rotos, así que simplemente opté por uno de los dos.

Al configurar una captura en mi MacBook realmente agarrar todos los paquetes IP van a o desde la IP específica en cuestión:

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$ 

El -i bandera anterior identifica qué interfaz en mi mac quería usar (usted puede utilizar el ifconfig) comando para averiguar cuál es cuál para usted) y la "-s 0" ajuste es muy importante como dice tcpdump a "snarf" el * entero * fotograma en lugar de sólo la primera "x" número de bytes (por qué hicieron esto por defecto, no sé...).  -W especifica un nombre de archivo de salida (por defecto baja el archivo en el directorio actual de ejecutar).  Y por último, el comando "host x.x.x.x" es una definición de filtro que sólo captura el tráfico que solo IP.  Esto es genial ya que evita todos los paquetes que están volando a través de mi interfaz durante la captura.

Del mismo modo, configurar otra captura en el Router de borde de sí mismo en el * exterior * interfaz (eth0 en mi caso).  Esto fue en una sesión SSH al dispositivo que lo he ejecutado.

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

Además creé otra sesión SSH al Router de borde y configuración de una captura en el * interior * (eth1) la interfaz por lo que pude ver qué modificaciones de NAT, etc... el Router de borde hizo el paquete.

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

Debo señalar que para simplificar esto hasta el más mínimo caso de prueba posible, quería abrir una sesión de TCP desde mi mac a este www.ups.com dirección IP en el puerto 80 (Puerto web).  La mejor manera de lograr esto era con la aplicación de "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$  

Una vez había generado los paquetes que quise capturar cancelé todo capturas de tres paquetes (usinc Ctrl-C) y luego he copiado los de Edge Router hasta mi 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$ 

Una vez que estos archivos son abajo en mi computadora entonces era capaz de ir a través de ellos con WireShark y ver donde estaba el problema.

Pensé que esta información podría ser de utilidad para un artículo de KnowledgeBase.

 

-Eric