В чем разница между «all», «default» и «eth *» в / proc / sys / net / ipv [46] / conf /?

Я обнаружил анимацию «цветных букв» (в Вход -> Умеренный), которая делает по крайней мере одну букву за раз, что немного лучше, чем горизонтальное стирание.

Как говорит @grochmal, svg-анимация будет единственным способом получить «мазки», но на данный момент это достойный промежуточный пункт.

Бонусные баллы для всех, кто может придумать, как получить что-то, отдаленно напоминающее эффект «стирания доски», заставляющий текст исчезать!

37
23.05.2018, 06:08
2 ответа

Я собираюсь дать новый ответ на этот вопрос, так как многие результаты поиска Google ведут сюда, а в Интернете много устаревшей информации и дезинформации по этому поводу.

net.ipv4.conf.default.*

@Martin von Wittich прав относительно поведения default--, оно применяется только к новым интерфейсам. Для интерфейсов хоста параметр defaultбудет применяться только при создании новых устройств, а интерфейсы хоста традиционно создаются только во время загрузки. Поэтому, если вы просто измените параметр default, значение не будет применено к интерфейсам хоста до тех пор, пока хост не будет перезагружен.

Поведение отличается для контейнеров , Kubernetes и CNI. Новые интерфейсы контейнеров создаются постоянно. Поэтому, если вы просто измените параметр default, он будет применяться к новым интерфейсам, созданным новыми контейнерами, но не к существующим интерфейсам контейнеров и не к хост-интерфейсам. Это может быть очень запутанным!

net.ipv4.conf.all.*противnet.ipv4.conf.<net device>.*

Поведение net.ipv4.conf.all.*различается в зависимости от того, какой параметр изменяется, как указали @gaia и @odivlad. Настоящий ответ содержится в документации ядра и со временем менялся (, как и параметр rp_filter, который является популярным параметром для многодомных -систем ). Ответ Мартина выше был на правильном пути, но сейчас устарел.

Поведение этой функции описано в документации ядра, которую можно найти по адресуhttps://www.kernel.org/doc/Documentation/networking/ip-sysctl.txtили https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/Documentation/networking/ip-sysctl.txt?h=linux-4.15.y(. Выберите конкретную версию ядра в верхнем правом -углу руки ).

Например, значение дляrp_filterбудет MAX (, а не AND, как указано ранее ):

.
The max value from conf/{all,interface}/rp_filter is used
when doing source validation on the {interface}.

arp_filter, с другой стороны, объединяется по ИЛИ:

arp_filter for the interface will be enabled if at least one of
conf/{all,interface}/arp_filter is set to TRUE,
it will be disabled otherwise

А как же accept_ra? Что ж, документация по ядру 4.15 не указывает поведение в этом случае, и на самом деле это больше не разрешено для каждого -интерфейса на основе IIRC. Раньше это было разрешено в Kernel 2.6 (CentOS 6 и т. д. ).

2
30.08.2021, 20:15

Обработчик для accept_ra в net / ipv6 / addrconf.c - это proc_dointvec . Таким образом, общий интерфейсный код ранее сгенерировал массив из всех и специфичных для интерфейса записей, и запись в них с помощью sysctl или procfs просто помещает в массив указанное вами значение.

Нас интересует, как затем используются эти значения.

Вы увидите, что каждый вызывающий абонент функции ipv6_accept_ra () в include / net / ipv6.h использует специальный интерфейс для вызова этой функции.

Таким образом, насколько я могу судить, в ядре нигде не используется net.ipv6.conf.all.accept_ra , кроме как для хранения записи в procfs.

Если вы хотите изменить accept_ra каждого интерфейса с помощью одной команды, вы можете сделать это:

for TUNABLE in $(sysctl -aN --pattern "accept_ra$")
do
    sysctl -w "$TUNABLE=0"
done

Я опоздал примерно на 4 года, но это правильный ответ: P

{{ 1}}
5
27.01.2020, 19:36

Теги

Похожие вопросы