Linux

禁用 TCP 解除安裝 {完全、一般和輕鬆}

  • April 16, 2020

我想在我的 debian 伺服器上禁用 tcp-offloading(“TOE”)。

ethtool -K .....

不過,我有一些願望:

將其乾淨地集成到 debian 中

上面寫著:沒有 rc.local,我也想避免偽 rc 腳本……

我猜,它正在安裝 ethtool 並使用pre-up.d/ -Hook 使用*/etc/network/interfaces*中的選項取消配置 TOE 。

我想使用FAI以通用方式取消配置我的所有(未來)伺服器。(因為 fai 已經到位 - 並且需要!)某些硬體不支持的腳趾選項呢?如果禁用不存在的選項,網路會失敗嗎?我想不這樣做應該是健壯的,但這似乎也不是我想要的解決方案。

它使配置非常混亂,因為 atm 有 11 個選項!使用多個 NIC,這對我來說很容易出錯。

沒有更通用的解決方案嗎?我有一個 sysctl,但還沒有找到。我的願望是:

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

PS:我很驚訝地發現我的“較新的硬體”預設啟用 TOE,因為:http ://www.linuxfoundation.org/collaborate/workgroups/networking/toe

在 Debian 上,該ethtool軟體包現在提供了一個if-up.d腳本,用於實現解除安裝選項(和其他ethtool設置)。

你只需要安裝這個包並在/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

尤里卡!找到“我的”解決方案!

我只是將我自己的disable-toe腳本放在*/etc/network/if-up.d/*中,它完全禁用了 tcp-offloading。

作為獎勵,我添加了一個*/etc/network/interfaces* -Option,它禁用了它。

#!/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

引用自:https://serverfault.com/questions/421995