{完全、一般、輕鬆}禁用 TCP 卸載

{完全、一般、輕鬆}禁用 TCP 卸載

我想禁用TCP 解除安裝(TOE) 在我的 Debian 伺服器上。我會使用類似的東西:

ethtool -K …

不過,我有一些願望:是否可以將其乾淨地整合到 Debian 中?

內容如下:不rc.local,我還想避免偽 rc 腳本。

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

我想使用 FAI 以通用方式取消配置我的所有(未來)伺服器(因為 FAI 已經到位 - 並且需要!)。

某些硬體不支援腳趾選項怎麼辦?如果停用不存在的選項,網路會失敗嗎?我想不這樣做應該是穩健的,但這似乎也不是我想要的解決方案。

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

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

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

聚苯乙烯:我很驚訝地發現我的「新硬體」預設啟用了 TOE,因為

答案1

在 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

答案2

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

我只是簡單地放置我自己的禁用腳趾腳本在/etc/network/if-up.d/這會完全禁用 tcp 卸載。

作為獎勵我添加了一個/etc/網路/接口-選項,停用此功能。

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

答案3

偏離主題(有點),但當我試圖弄清楚如何對某些 RHEL6 伺服器執行相同的操作時,我最終來到了這裡。因此,如果有人正在為 RHEL/CentOS/Fedora 等發行版尋找相同的東西,您會找到答案這裡

答案4

如果您使用的系統使用網路計劃(例如Ubuntu)設定網路然後你可以使用Netplan 後期腳本配置卸載。正如在一篇文章中所提到的回答另一個問題。

您可以在以下目錄中建立腳本,其名稱以數字為前綴,以指示載入順序,例如/etc/networkd-dispatcher/routable.d/40-offloading-config- 該腳本是可執行的並由 root 擁有。例如,要關閉 eth0 上的 TCP 分段卸載:

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

相關內容