Capturas de paquetes: filtrado en RX vs TX

8

Tengo un problema de red en el que las tramas con un MAC de origen que coincide con uno de los MAC de origen de mi host están llegando al host: un aparente MAC o bucle duplicado u otro problema L2.

Creo que esta es la situación porque las tablas MAC (tablas CAM) de mi puente de Linux registran un MAC local (para una máquina virtual alojada) como en el puerto ascendente, y los registros del kernel muestran errores:

bridgename: received packet on bond0.2222 with own address as source address

Me gustaría obtener más detalles sobre estos paquetes / tramas "deshonestas", pero no puedo entender cómo concentrarnos en ellas. Con tcpdump puede filtrar en una fuente MAC particular ('ether src MAC'), pero esto se basa en los bytes en la trama, no si la trama fue "enviada" versus "recibida". Por lo general, suponemos que un marco con nuestra fuente MAC significa que lo estamos enviando, pero si se recibiera un marco duplicado, el contenido se vería exactamente igual para el filtro.

¿Cómo se puede observar si se recibió una trama versus se transmitió en una captura de paquetes?

Joshua Miller
fuente
1
¿No funciona tcpdump -i <interface> inbound(o "saliente")?
La página del manual parece indicar que se limita a SLIP. Cuando lo intento en cualquiera de mis interfaces (loopback, eth / em, bond, vlan, tap ...) tcpdump dice: "tcpdump: entrante / saliente no es compatible con el tipo de enlace 1"
Joshua Miller
2
No responde a su pregunta, pero usando iptables y ulogd podría obtener un pcap con solo los paquetes interesantes.
lsmooth
utilizar tcpdump -Lpara ver interfaces compatibles,
PersianGulf
usongrep -d dev
PersianGulf

Respuestas:

7

Use la --directionopción para tcpdump:

-Q direction
--direction=direction
       Choose send/receive direction direction for which packets should be
       captured. Possible values are `in', `out' and `inout'. Not available on
       all platforms.
abacabadabacaba
fuente
1
Esta opción solo parece estar disponible con la versión estable más reciente de tcpdump - 4.6.2. Pero después de compilarlo en ubuntu, parece diferenciar con éxito entre los marcos entrantes y salientes. Huzzah!
Joshua Miller el
1
@JoshuaMiller Acabo de revisar la tcpdumppágina del manual en Ubuntu 14.04, y existe una opción con la misma descripción exacta, pero se llama en -Plugar de -Q(y no se menciona la forma larga).
kasperd
@kasperd Tienes razón! tcpdump 4.5.1 en realidad tiene -P. Quizás la funcionalidad no sea tan nueva como originalmente pensé.
Joshua Miller
0

Con iptables, tiene diferentes 'cadenas' para paquetes entrantes y salientes. Desde la página del comando man iptables (8):

... the chains INPUT and OUTPUT are only traversed for packets coming into 
the local host and originating from the local host  respectively.   Hence 
every  packet  only  passes  through one of the three chains (except 
loopback traffic, which involves both INPUT and OUTPUT chains) ...

iptables puede hacer algunos registros (-l), lo que puede mostrarle lo que necesita. Presumiblemente también puede reenviar copias de paquetes a una interfaz para iniciar sesión con otras herramientas, pero no he tenido motivos para hacerlo.

mc0e
fuente