Определение значений параметров ядра, связанных с sysctl.conf и sysctl.d

На моей машине Ubuntu в файле /etc/sysctl.conf у меня есть параметры фильтрации обратного пути, отмеченные по умолчанию следующим образом:

 #net.ipv4.conf.default.rp_filter=1 #net.ipv4.conf.all.rp_filter=1 

но в /etc/sysctl.d/10-network-security.conf они (опять же, по умолчанию) не закомментированы:

 net.ipv4.conf.default.rp_filter=1 net.ipv4.conf.all.rp_filter=1 

Так включена фильтрация обратного пути или нет? Какое из местоположений конфигурации имеет приоритет? Как проверить текущие значения этих и других параметров ядра?

  • Сеть Intel Skylake + DisplayPort 1.2 MST / Daisy на Linux
  • Доступ UART0 в AM1808 с использованием встроенного Linux
  • Как отобразить все переменные среды, хранящиеся в моем unix?
  • «Протокол не указан» при запуске Xorg через lightdm, но работает при запуске напрямую
  • Получение статистики TCP IPv6
  • Строка Grep с определенным словом из файла в определенном столбце
  • «python-software-properties» не имеет кандидата на установку при установке факела
  • Я не могу установить новые пакеты: «Не удалось получить lock / var / lib / dpkg / lock»
  • 3 Solutions collect form web for “Определение значений параметров ядра, связанных с sysctl.conf и sysctl.d”

    Проверка значения переменной sysctl так же просто, как и

     sysctl <variable name> 

    и, кстати, установка переменной sysctl столь же проста, как и

     sudo sysctl -w <variable name>=<value> 

    но изменения, сделанные таким образом, вероятно, будут сохраняться только до следующей перезагрузки.

    Что касается расположения конфигураций, /etc/sysctl.conf или /etc/sysctl.d/ имеет приоритет, вот что говорит файл /etc/sysctl.d/README :

    Конечные пользователи могут использовать 60 – *. Conf и выше или напрямую использовать /etc/sysctl.conf , что переопределяет что-либо в этом каталоге .

    После редактирования конфигурации в любом из двух местоположений изменения могут быть применены с помощью

     sudo sysctl -p 

    Этот тип материала обычно находится в интерфейсах ядра /proc и / или /sys (во-первых, имейте в виду, что ничего в этих каталогах не является обычным файлом на диске, все они являются прямыми линиями ядра).

    Итак, например:

     »for x in /proc/sys/net/ipv4/conf/*/rp_filter; do echo -ne "$x "`cat $x`"\n"; done /proc/sys/net/ipv4/conf/all/rp_filter 0 /proc/sys/net/ipv4/conf/default/rp_filter 1 /proc/sys/net/ipv4/conf/em1/rp_filter 1 /proc/sys/net/ipv4/conf/lo/rp_filter 0 /proc/sys/net/ipv4/conf/wlan0/rp_filter 1 

    Похоже, у меня установлен rp_filter для em1, wlan0 и "default". Вы можете установить или отключить их, просто записав в дескриптор файла:

     »cd /proc/sys/net/ipv4/conf/lo »echo 1 > rp_filter »cat rp_filter 1 »echo 0 > rp_filter »cat rp_filter 0 

    Как уже упоминалось, это прямая связь с ядром, так что это вступает в силу немедленно. Это не файлы конфигурации. Если вы попытаетесь сделать что-то не так:

     »echo whatever > rp_filter bash: echo: write error: Invalid argument 

    Разумеется, это не означает, что вы не можете это испортить. И обязательно прочитайте комментарии ниже.

    Чтобы завершить принятый ответ , хотя верно, что параметры /etc/sysctl.conf имеют приоритет над параметрами в /etc/sysctl.d/ , в примере, представленном в исходном вопросе, отображаются две закомментированные переменные в /etc/sysctl.conf :

     #net.ipv4.conf.default.rp_filter=1 #net.ipv4.conf.all.rp_filter=1 

    и те же переменные, которые не закомментированы в /etc/sysctl.d/10-network-security.conf :

     net.ipv4.conf.default.rp_filter=1 net.ipv4.conf.all.rp_filter=1 

    Это может ввести в заблуждение, потому что комментарий не является настройкой, а лишь замечанием того, что может быть настройкой.

    В этой ситуации переменные на самом деле оба установлены в 1, несмотря на то, что в более сильном файле конфигурации они закомментированы.

    Если в /etc/sysctl.conf мы имели:

     net.ipv4.conf.default.rp_filter=0 net.ipv4.conf.all.rp_filter=0 

    то в конечном итоге переменные будут установлены на 0.

    Linux и Unix - лучшая ОС в мире.