Me gustaría desactivar la descarga de segmentación tcp en un servidor CentOS5. Con ethtool, el comando es ethtool -K eth0 tso off
Sin embargo, esta configuración solo persiste para esta sesión. ¿Cómo puedo hacer que persista durante los reinicios?
centos
linux-networking
ethtool
Gus E
fuente
fuente
Respuestas:
Desde esta página web :
Puede ingresar los comandos ethtool en
/etc/rc.local
(o el equivalente de su distribución) donde los comandos se ejecutan después de que se complete el nivel de ejecución actual, pero esto no es lo ideal. Los servicios de red pueden haberse iniciado durante el nivel de ejecución y los comandos ethtool tienden a interrumpir el tráfico de red. Sería más preferible tener los comandos aplicados a medida que se abre la interfaz.El servicio de red en CentOS tiene la capacidad de hacer esto. El script
/etc/sysconfig/network-scripts/ifup-post
verifica la existencia de/sbin/ifup-local
, y si existe, lo ejecuta con el nombre de la interfaz como parámetro (por ejemplo:/sbin/ifup-local eth0
)Podemos crear este archivo con tacto,
/sbin/ifup-local
hacerlo ejecutable conchmod +x /sbin/ifup-local
establecer su contexto SELinux conchcon --reference /sbin/ifup /sbin/ifup-local
y luego abrirlo en un editor.Un script simple para aplicar la misma configuración a todas las interfaces sería algo así como
Tenga en cuenta que esto intentará aplicar la configuración a TODAS las interfaces, incluso al bucle invertido.
Si tenemos diferentes interfaces a las que queremos aplicar diferentes configuraciones o queremos omitir el loopback, podemos hacer una declaración de caso
Ahora, la configuración de ethtool se aplica a las interfaces a medida que comienzan, todas las interrupciones potenciales a la comunicación de red se realizan a medida que se abre la interfaz, y su servidor puede continuar arrancando con capacidades de red completas.
fuente
Para RHEL7 en / etc / sysconfig / network-scripts / ifcfg- * puede tener:
ETHTOOL_OPTS = "- K $ {DISPOSITIVO} gso off gro off tso off"
si hay más opciones, use like
ETHTOOL_OPTS = "- K $ {DISPOSITIVO} desactivado; -K $ {DISPOSITIVO} desactivado; -K $ {DISPOSITIVO} desactivado"
tienes que tener DISPOSITIVO naturalmente definido en tu archivo ifcfg.
No se necesitan scripts rc.local ni ifup adicionales. Fácil para usted en sistemas de implementación genéricos.
fuente
Si está en RHEL7 (o similar) y usa Network Manager en lugar de /etc/init.d/network para controlar sus interfaces, la respuesta propuesta no funcionará, ya que / sbin / ifup-local (así como ifdown-pre-local y ifdown-local ) nunca se ejecutarán.
En su lugar, coloque sus scripts en /etc/NetworkManager/dispatcher.d/ y asegúrese de que el servicio NetworkManager-dispatcher esté habilitado
Sugerencia: el despachador solo se activará una vez que NetworkManager realice cambios en una interfaz, no es necesario que se esté ejecutando ni nada, por lo que si el estado se lee
eso está completamente bien!
También asegúrese de que su script sea:
Ahora NetworkManager pasará dos (2) variables al despachador:
y permite encadenar los scripts (al igual que / etc / rc ...) para tener cierto control sobre el orden en que el despachador los ejecutará:
El orden será ascendente en una conexión
y descendiendo en una desconexión
y así.
Entonces, para lograr lo que OP estaba buscando, podría poner algo como esto:
en /etc/NetworkManager/dispatcher.d/20-ethtool
Y llámalo un día.
Salud
fuente
if [ "$1" = "eth0" ] && [ "$2" = "up" ]; then
Me encontré con problemas con la respuesta aceptada (que, me apresuré a agregar, me pareció muy útil) porque estaba usando interfaces enlazadas.
Me llevó un tiempo descubrir lo que estaba sucediendo, pero descubrí que al abrir un enlace, o incluso al abrir un esclavo de enlace individualmente, el
ifup-local
script no se llamaría para las interfaces esclavas. Supongo que esto se debe a que las interfaces esclavas no tenían ninguna dirección IP asignada.Para solucionar esto, modifiqué mi
ifup-local
para analizar el contenido de/proc/bonding/bondX
la interfaz que se había presentado, si era un enlace, para obtener los nombres de la interfaz esclava, y luego hice lo necesario con ellos.Al final mi
ifup-local
parecía lo siguiente:Advertencia: el contenido de / proc / net / bonding / bondX puede ser diferente para diferentes versiones de RedHat / Fedora / CentOS a la que estaba usando cuando escribí el script, por lo que el comando para extraer los nombres de la interfaz esclava puede no funcionar .
fuente
Fuera de tema, para los usuarios de Ubuntu que vinieron aquí, como yo, esto como una nota:
En Ubuntu, el libro de texto de manera de hacerlo es editar el etc / / network / interfaces de archivos que a su vez es leído por el init.d / pre-up -up, etc. guiones. Entonces, un archivo / etc / network / interfaces podría verse así:
Eso es lo que dicen los documentos, pero no funciona . Es posible que la lógica de análisis en los scripts anteriores y posteriores esté un poco anticuada y no analice la configuración requerida del archivo de interfaces. No se Al menos, no estaba funcionando para mí.
Entonces, la solución hack-ish pero que funciona por ahora es crear / editar un archivo local /etc/rc.local e indicar el comando que se emitirá allí (pero tenga en cuenta que esto puede interrumpir la conexión de red durante unos segundos después de que la interfaz ya haya sido activada) trajo). Entonces teniendo esto:
en /etc/rc.local es la solución de trabajo para ralentizar una interfaz como se esperaba anteriormente.
En Ubuntu 17.04 y superior
Ubuntus más reciente utiliza Systemd y, por lo tanto, el archivo rc.local no se ejecuta necesariamente al alcanzar el nivel de ejecución 'inicio', por ejemplo. El servicio "rc-local" debe estar habilitado. Aunque parece ser por defecto, probablemente por razones de compatibilidad con versiones anteriores, asegúrese de verificar su estado con
sudo systemctl status rc-local
fuente
pre-up
directiva funcionó para mí en Linux Mint 17.3 para configurar el indicador TSO, gracias :)Descubrí que establecer este tipo de configuración en
/etc/network/interfaces
realidad funciona para Ubuntu (dado que lo usé para apagarlarge-receive-offload
, pero eso realmente no debería importar):fuente
Para Ubuntu, puede hacer esto agregando la siguiente línea en
/etc/network/interfaces
:la publicación posterior aquí realizará la operación dada después de abrir la interfaz específica.
fuente
Sí, no se puede hacer usando archivos de configuración por el momento. Puede poner el comando
/etc/init.d/rc.local
y debe hacerse.Ese archivo se ejecuta en la última secuencia de arranque y, por lo tanto, también se desactivaría para la interfaz.
fuente