Deshabilite la descarga de TCP {completa, genérica y fácilmente}

Deshabilite la descarga de TCP {completa, genérica y fácilmente}

quiero desactivardescarga tcp(TOE) en mis servidores Debian. Yo usaría algo como:

ethtool -K …

Sin embargo, tengo algunos deseos: ¿es posible integrarlo limpiamente en Debian?

Esto dice: no rc.local, también me gustaría evitar pseudo-rc-scripting.

Supongo que es instalar ethtooly usar pre-up.d/hook que desconfigura TOE usando opciones de /etc/network/interfaces.

Me gustaría desconfigurar todos mis (futuros) servidores de forma genérica usando FAI (ya que FAI ya está implementado, ¡y es necesario!).

¿Qué pasa con las opciones de puntera que no son compatibles con algunos hardware? ¿La red fallará si se deshabilita una opción que no existe? Supongo que debería ser firme no hacerlo, pero esta tampoco parece ser la solución que busco.

¡Desordena mucho la configuración, ya que hay 11 opciones en el cajero automático! Al usar varias NIC, esto me parece propenso a errores.

¿No existe una solución más genérica? Tengo un sysctl en mente, pero todavía no encontré ninguno. Mi deseo era:

echo 0 > /proc/sys/net/core/enable_tcp_offloading

PD: Me sorprende bastante descubrir que mi "hardware más nuevo" tiene TOE habilitado de forma predeterminada, debido aeste.

Respuesta1

En Debian, el ethtoolpaquete ahora proporciona un if-up.dscript que implementa opciones de descarga (y otras ethtoolconfiguraciones).

Sólo tienes que instalar este paquete y agregar líneas como estas a la interfaz en formato /etc/network/interfaces.

auto eth0
iface eth0 inet static
    address 10.0.3.1/255.255.248.0
    gateway 10.0.2.10
    offload-tx  off
    offload-sg  off
    offload-tso off

Respuesta2

¡Eureka! ¡Encontré "mi" solución!

Simplemente estoy colocando el míodedo discapacitadoGuión en/etc/network/if-up.d/lo que deshabilita completamente la descarga de TCP.

Como beneficio adicional, agregué un/etc/red/interfaces-Opción, que desactiva esto.

#!/bin/bash

RUN=true
case "${IF_NO_TOE,,}" in
    no|off|false|disable|disabled)
        RUN=false
    ;;
esac

if [ "$MODE" = start -a "$RUN" = true ]; then
  TOE_OPTIONS="rx tx sg tso ufo gso gro lro rxvlan txvlan rxhash"
  for TOE_OPTION in $TOE_OPTIONS; do
    /sbin/ethtool --offload "$IFACE" "$TOE_OPTION" off &>/dev/null || true
  done
fi

Respuesta3

Fuera de tema (más o menos), pero terminé aquí cuando intentaba descubrir cómo hacer lo mismo para algunos servidores RHEL6. Entonces, si alguien está buscando lo mismo para distribuciones similares a RHEL/CentOS/Fedora, encontrará la respuesta.aquí.

Respuesta4

Si está utilizando un sistema que utilizanetplan(por ejemplo, Ubuntu) para configurar la red, entonces puede usar unScript de publicación de Netplanpara configurar la descarga. Como se menciona en unrespuestaa otra pregunta.

Usted crea una secuencia de comandos en el siguiente directorio con un nombre precedido por un número para indicar el orden de carga, por ejemplo /etc/networkd-dispatcher/routable.d/40-offloading-config, que es ejecutable y propiedad de root. Por ejemplo, para desactivar la descarga de segmentos TCP en eth0:

#!/bin/sh
/sbin/ethtool -K eth0 tso off

información relacionada