我想禁用tcp 卸载(TOE)在我的 Debian 服务器上。我会使用类似的东西:
ethtool -K …
不过,我有一些愿望:是否可以将它干净地集成到 Debian 中?
内容如下:不rc.local
,我还想避免伪 rc 脚本。
我猜测,它正在安装ethtool
并使用 pre-up.d/hook,它使用来自的选项解除 TOE 的配置/etc/network/interfaces
。
我想使用 FAI 以通用方式解除我所有(未来)服务器的配置(因为 FAI 已经到位 - 并且是我们需要的!)。
如果某些硬件不支持 toe-options 怎么办?如果禁用不存在的选项,网络会失败吗?我想不这样做应该是可靠的,但这似乎也不是我想要的解决方案。
这让配置变得非常混乱,因为目前有 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-offloading。
作为奖励,我添加了一个/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