無効にしたいTCP オフロード(TOE) を Debian サーバーで使用します。次のようなものを使用します:
ethtool -K …
ただし、いくつか希望があります。Debian にきれいに統合することは可能でしょうか?
これは、いいえrc.local
、疑似 RC スクリプトも避けたいということです。
おそらく、ethtool
のオプションを使用して TOE を構成解除する pre-up.d/hook をインストールして使用しているのでしょう/etc/network/interfaces
。
FAI を使用して、一般的な方法ですべての (将来の) サーバーを構成解除したいと思います (FAI はすでに導入されており、必要であるため)。
一部のハードウェアでサポートされていない toe オプションについてはどうでしょうか? 存在しないオプションを無効にすると、ネットワークは失敗しますか? そうしない方が堅牢だと思いますが、これも私が望んでいる解決策ではないようです。
現時点ではオプションが 11 個あるため、設定が非常に乱雑になります。複数の NIC を使用すると、エラーが発生しやすくなるようです。
もっと一般的な解決策はないでしょうか? 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