Cómo capturar todos los paquetes entrantes en la NIC, incluso esos paquetes no me pertenecen

13

AFAIK, la NIC recibe todos los paquetes del cable en una red de área local pero rechaza aquellos paquetes cuya dirección de destino no es igual a su ip.

Quiero desarrollar una aplicación que monitoree el uso de internet de los usuarios. Cada usuario tiene una dirección IP fija.

Yo y otras personas estamos conectados a un conmutador de escritorio no administrado Fast Ethernet de 8 puertos DES-108

Como dije anteriormente, quiero capturar todos los tráficos de todos los usuarios, no solo los paquetes que me pertenecen.

¿Cómo debo forzar a mi NIC u otros componentes a recibir todos los paquetes?

m.r226
fuente
1
Compre un switch económico y administrado por unos 30 € y habilite la duplicación de puertos en el enlace a la puerta de enlace.
Max Ried

Respuestas:

27

AFAIK, la NIC recibe todos los paquetes del cable en una red de área local pero rechaza aquellos paquetes cuya dirección de destino no es igual a su ip.

Corrección: rechaza aquellos paquetes cuya dirección MAC de destino no es igual a su dirección MAC (o multidifusión o cualquier dirección adicional en su filtro.

Las utilidades de captura de paquetes pueden poner trivialmente al dispositivo de red en modo promiscuo, es decir que se omite la comprobación anterior y el dispositivo acepta todo lo que recibe. De hecho, esto suele ser el valor predeterminado: con tcpdump, debe especificar la -popción para no hacerlo.

La cuestión más importante es si los paquetes que le interesan incluso se llevan por el cable a su puerto de rastreo. Dado que está utilizando un conmutador de Ethernet no administrado, es casi seguro que no. El conmutador está decidiendo eliminar los paquetes que no le pertenecen desde su puerto antes de que su dispositivo de red pueda esperar verlos.

Para hacerlo, debe conectarse a un puerto de monitorización o duplicación especialmente configurado en un conmutador Ethernet administrado.

Celada
fuente
1
O un concentrador Ethernet ... si puede encontrar uno oxidado en el ático :) Sin embargo, dudo que haya alguno para 1000Base-T, Wikipedia dice que los concentradores gigabit solo admitían enlaces half duplex y ahora están en desuso.
chx
1
@chx, todos los hubs verdaderos solo admiten half duplex. Personalmente, nunca he visto uno 1000Base-T.
Celada
Creo que esto tuvo que ver con la lenta absorción de Gigabit Ethernet, aunque el estándar 802.3ab salió en 1999, la absorción fue muy lenta hasta 2003/2004 cuando Intel lanzó por primera vez el chipset 875P con el bus CSA dedicado para Gigabit Ethernet y luego en 2004 PCI Express se hizo cargo con finalmente suficiente ancho de banda para Gigabit Ethernet. Y para entonces, los interruptores eran lo suficientemente baratos.
chx
El conmutador Ethernet no siempre transmitirá los marcos. Tiene su propia tabla de conmutación (contiene el mapa del puerto del conmutador y la dirección MAC) para unidifundir la trama. Si la tabla no tiene una entrada para el MAC en el Marco, entonces transmite / inunda el marco. Su escritorio nunca recibirá otros marcos. Como en la respuesta, debe usar un interruptor especial para capturar todos los cuadros que llegan a su interruptor.
Valarpirai
8

Al principio se dice que los hubs de ethernet (no los switches), los paquetes enviados están disponibles para todos los hosts en la subred, pero los hosts que no son el destinatario deben ignorar.

Obviamente, las subredes no tardaron mucho en saturarse, por lo que la tecnología de conmutación nació para resolver los problemas, y una de las cosas que hicieron fue hacer que el conmutador de red solo enrutara los paquetes destinados para ese host a ese puerto (más el tráfico de difusión de Andy )

Esto complica la supervisión / detección de redes porque solo puede detectar paquetes que son para su host. Esto se consideró algo bueno desde el punto de vista de la seguridad, pero desde el punto de vista de la supervisión de la red no fue tan bueno. Para que la supervisión de la red funcione, los proveedores implementan una función llamada duplicación de puertos. Esto debe configurarse en el conmutador de red, y el enlace a continuación debe orientarlo en la dirección correcta para los productos D-link. Lo encontrará en algún lugar de su software de administración de conmutadores o interfaz de administración web. Si no encuentra estas características, es posible que la funcionalidad no se proporcione en ese dispositivo específico.

http://www.dlink.com/uk/en/support/faq/switches/layer-2-gigabit/dgs-series/es_dgs_1210_como_monitorear_trafico_de_un_puerto_port_mirroring

Thomas Carlisle
fuente
2

Primero debe cambiar su NIC al modo promiscuo. Supongamos que su interfaz NIC es eth0.

root@linux#ifconfig eth0 promesc

Si está en una red de conmutadores, su detección se reduce al dominio de colisión que se conecta a su puerto de conmutador. Puede correr macofpara abrumar la tabla de reenvío del conmutador.

root@linux#macof -i eth0

Luego puede usar wiresharko tcpdumpcapturar todo el tráfico.

root@linux#tcpdump -i eth0 -w outputfile

Si no está en una red conmutada, habilite el modo promiscuo y úselo tcpdump.

Ahmed Chiboub
fuente
1
tcpdumphabilitará el modo promiscuo para ti. No es necesario que lo haga (y recuerde deshacerlo cuando haya terminado) manualmente.
Celada
0

Estás reinventando la rueda.

Suponiendo que tiene una red simple con clientes que se conectan a conmutadores, con una puerta de enlace predeterminada a Internet, solo necesita monitorear en ese dispositivo de puerta de enlace predeterminado. Este será un punto de estrangulamiento para mostrar todo el tráfico entre un cliente LAN e Internet.

Supongo que el tráfico del cliente LAN al cliente LAN no es de interés, porque con todas las direcciones IP dentro de la misma subred IP, el tráfico local no toca la puerta de enlace predeterminada.

Si realmente desea ver todo el tráfico, cada usuario debe estar en su propia red IP y el tráfico a las otras redes es a través de la puerta de enlace predeterminada. Puede asignar un / 28 a cada persona y pueden tener 14 IP para sí mismos.

Su enrutador de nivel doméstico promedio no manejará mucho de esto, tendrá que explorar una distribución de firewall dedicada. Personalmente, pfsense sería mi opción, pero hay muchas opciones.

Criggie
fuente