¿Cómo utilizar una interfaz de red como de solo lectura?

¿Cómo utilizar una interfaz de red como de solo lectura?

Tengo un conmutador en el laboratorio de mi casa con el que quiero realizar algunos experimentos, especialmente con respecto a las VLAN y algunos otros protocolos que quiero comprender mejor. Ahora, este interruptor (unSwitch algo gestionado de 5 puertos TP-Link) permite la duplicación de puertos.

Este tráfico reflejado lo quiero analizar en mi computadora con la menor cantidad posible de tráfico "nuevo" introducido desde la máquina de monitoreo. ¿Cómo puedo lograr eso?

Ya sé que tienes que poner la NIC en modo promiscuo para poder recibir paquetes que no estaban destinados originalmente a mi PC. Como esto normalmente lo hace el propio Wireshark, no tengo que preocuparme por eso.

Sin embargo, quería asegurarme de introducir el menor "ruido" posible en el puerto, para poder observar realmente el tráfico generado en los otros puertos. ya encontréesta respuestaeso sugiere deshabilitar todos los servicios en ejecución (como DHCP et al), lo cual tiene sentido. Pero si bien esto reducirá mucho el ruido, probablemente no podrá evitar la resolución ARP u otras interacciones de red basadas en el kernel.

También aprendí que existen protocolos diseñados específicamente para este propósito (comoSPAN de Cisco), pero mi interruptor no tiene esa capacidad.

Entonces mi pregunta es: ¿cómo puedo usar mi interfaz de red como de solo lectura?

Respuesta1

La forma más sencilla de convertir una interfaz en "solo lectura" en Linux es aplicar una salidatcfiltro que cae todo.

Para aplicar un filtro, unqdisc con clasedebe estar en su lugar. Elprioqdisc es la qdisc con clase más simple, que solo se usa para poder usar filtros en la interfaz, en lugar de para sus propias características.

Al final para configurar la interfaz.eth1"solo lectura":

tc qdisc add dev eth1 root prio
tc filter add dev eth1 matchall action drop

Esto bloquea el tráfico saliente en esta interfaz. Incluso bloquea los sockets RAW (que de otro modo no se ven afectados por los firewalls), por lo que bloqueará un cliente DHCP IPv4 (que de otro modo puede obtener una dirección a pesar de un firewall). Todavía hay maneras de evitarlo, pero eso sólo puede ser muy deliberado. Aquí hay dos que conozco:

Para devolver la interfaz a su estado original, simplemente retire la qdisc:

tc qdisc del dev eth1 root

Notas:

  1. Supongo que un conmutador con un puerto configurado en modo de duplicación probablemente ya haya configurado este puerto en modo de solo lectura.

    Eso es algo para probar. Y si es cierto, usar el filtro de arriba o la viñeta 2. de abajo se vuelven discutibles.

  2. una interfaz que está UP y en la que no se aplica ninguna configuración adicional aún puede intercambiar tráfico

    Sin el filtro anterior, incluso teniendo una interfaz no configurada pero UP puede dejar tráfico. Existen al menos estos dos casos:

    • Configuración automática de IPv6

      usarsysctl -w net.ipv6.conf.eth1.disable_ipv6=1

    • Si ARP no está deshabilitado (con ip link set eth1 arp off)

      Este caso es el mismo que el caso más general de fuga de información en el que un sistema en una LAN puede sondear para comprobar si algunos sistemas también están utilizando otras redes (incluidas las virtuales) con direcciones bien conocidas: de forma predeterminada, en Linux, una interfaz responderá a las solicitudes ARP. paracualquierotra dirección encualquierotra interfaz.Eso es partede los débilesModelo de anfitrión.

      Entonces, por ejemplo, si el sistema de OP ejecuta livbirt QEMU/KVM con la configuración predeterminada, se asigna 192.168.122.1/24 avirbr0, entonces otro sistema Linux solo conectado a una interfaz UP no configurada seguirá obteniendo respuestas ARP a través de él cuando se ejecute:

      arping -I eth0 192.168.122.1
      

      No importa si el sistema de sondeo tiene una ruta a 192.168.122.1. Se trata de ARP (y un comando al que no le importan las rutas). Lo mismo ocurre con LXC y 10.0.3.1, etc.

información relacionada