Я хочу отключитьtcp-разгрузка(TOE) на моих серверах Debian. Я бы использовал что-то вроде:
ethtool -K …
Однако у меня есть несколько пожеланий: возможно ли полностью интегрировать его в Debian?
Это звучит так: нет rc.local
, я также хотел бы избежать псевдо-rc-скриптинга.
Я предполагаю, что это установка ethtool
и использование pre-up.d/hook, который деконфигурирует TOE, используя параметры из /etc/network/interfaces
.
Я хотел бы деконфигурировать все мои (будущие) серверы универсальным способом с использованием FAI (поскольку FAI уже реализован — и востребован!).
А как насчет toe-options, которые не поддерживаются на некоторых аппаратных средствах? Будет ли сеть работать некорректно, если несуществующий-option должен быть отключен? Я думаю, что было бы разумно этого не делать, но это также не кажется мне желаемым решением.
Это очень загромождает конфигурацию, так как в ней 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-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 post-upдля настройки разгрузки. Как упоминалось вотвечатьна другой вопрос.
Вы создаете скрипт в следующем каталоге с именем, к которому добавляется номер, указывающий порядок загрузки, например /etc/networkd-dispatcher/routable.d/40-offloading-config
, исполняемый скрипт, принадлежащий пользователю root. Например, чтобы отключить разгрузку сегмента TCP на eth0:
#!/bin/sh
/sbin/ethtool -K eth0 tso off