Desactivar la aceleración de la tarjeta de red

Wireshark permite comprobar que los datos de los paquetes no estén corruptos. Para ello mira el «checksum» del datagrama TCP.
A día de hoy las tarjetas de red añaden la información de correctitud en el mismo momento de serializar el datagrama, sin intervención del procesador del ordenador. Esto significa que el número resultante de la verificación no es visible para el núcleo y por tanto tampoco para Wireshark. Y también significa que la tarjeta de red puede modificar los datagramas TCP, puede decodificar Ethernet, IP y TCP/UDP. Si queremos que Wireshark tenga acceso a estos valores y pueda decirnos si el paquete está corrompido o no, hay que desactivar la aceleración de la tarjeta de red.



El siguiente script permite desactivar la aceleración de la verificación así como de la fragmentación de las tramas Ethernet, de manera que no aparecerá en Wireshark ninguna trama superior al MTU de 1500 bytes. Suponiendo que el sistema no tenga ningún software malicioso.


for IFACE in eth0 wlan0; do
    for PROP in tx rx sg tso ufo gso gro lro rxvlan txvlan rxhash; do
        echo "ethtool -K ${IFACE} ${PROP} off"
        ethtool -K ${IFACE} ${PROP} off
    done
done
exit 0

eth0 y wlan0 son los nombres de las interfaces de red del ordenador. Con el comando ifconfig o ip link show se puede averiguar qué interfaces hay en el sistema.

Se puede añadir ese bucle en el archivo /etc/rc.local. La interfaz de red no acelerará ningún cálculo, quedando todo en manos del núcleo del sistema operativo.

Comentarios