Отключение ipv6. Не обрабатывается sysctl.conf

SLAX, Deep Style, ZenWalk

Модератор: Модераторы разделов

Аватара пользователя
sunny1983
Сообщения: 355
ОС: GNU/Linux 4.x (Fedora, Debian)

Отключение ipv6. Не обрабатывается sysctl.conf

Сообщение sunny1983 »

Не использую ipv6, решил его отключить. Создал файл /etc/sysctl.conf, записал в него:

Код: Выделить всё

net.ipv6.conf.all.disable_ipv6 = 1

ipv6 не отключается. Хотя смотрел в скриптах, файл обрабатываться должен, в скрипте /etc/rc.d/rc.S содержатся строки:

Код: Выделить всё

# Configure runtime kernel parameters:
if [ -x /sbin/sysctl -a -r /etc/sysctl.conf ]; then
  /sbin/sysctl -e -p /etc/sysctl.conf
fi

Отдельно вводил команду "sysctl -e -p /etc/sysctl.conf". ipv6 отключается. В чём тогда дело?
Спасибо сказали:

Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

Re: Отключение ipv6. Не обрабатывается sysctl.conf

Сообщение Hephaestus »

Похоже, что условие в скрипте rc.S по каким-то причинам возвращает false

Код: Выделить всё

if [ -x /sbin/sysctl -a -r /etc/sysctl.conf ]; then
Проверяйте.
Так-то по идее здесь сразу две проверки, между ними вроде должна быть логическая связка.
Попробуйте временно закомментировать строки, описывающие условный блок, чтобы команда выполнялась без условий.

Как-нибудь вот так

Код: Выделить всё

# Configure runtime kernel parameters:
# if [ -x /sbin/sysctl -a -r /etc/sysctl.conf ]; then
  /sbin/sysctl -e -p /etc/sysctl.conf
#fi
Если выполнится, значит, точно с условием что-то не того.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:

Аватара пользователя
bormant
Сообщения: 1337

Re: Отключение ipv6. Не обрабатывается sysctl.conf

Сообщение bormant »

Условие [ -x /sbin/sysctl -a -r /etc/sysctl.conf ] означает:
/sbin/sysctl имеет атрибут исполнения
и (and)
/etc/sysctl.conf существует и доступен для чтения.

Для проверки можно, например, изменить rc.S так:

Код: Выделить всё

# Configure runtime kernel parameters:
if [ -x /sbin/sysctl -a -r /etc/sysctl.conf ]; then
  /sbin/sysctl -a | /usr/bin/grep -F net.ipv6.conf.all.disable_ipv6 > /var/log/testsysctl.log 2>&1
  /sbin/sysctl -e -p /etc/sysctl.conf
  /sbin/sysctl net.ipv6.conf.all.disable_ipv6 >> /var/log/testsysctl.log 2>&1
fi
и по завершении загрузки проверить содержимое /var/log/testsysctl.log и вывод sysctl net.ipv6.conf.all.disable_ipv6.

На что обратить внимание:
1) создался ли файл журнала /var/log/testsysctl.log;
2) имеется ли на тот момент параметр net.ipv6.conf.all.disable_ipv6;
3) чему равен net.ipv6.conf.all.disable_ipv6 после выполнения sysctl -e -p.
Спасибо сказали:

Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

Re: Отключение ipv6. Не обрабатывается sysctl.conf

Сообщение Hephaestus »

А ещё возможно такое, что rc.S отрабатывает как надо, выставляя net.ipv6.conf.all.disable_ipv6 = 1, а потом, где-то на более позднем шаге значение этого параметра снова выставляется как было.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:

Аватара пользователя
bormant
Сообщения: 1337

Re: Отключение ipv6. Не обрабатывается sysctl.conf

Сообщение bormant »

Проверил на Slackware64-14.1. Файл /var/log/testsysctl.log содержит сообщение об отсутствии запрошенного ключа, то есть на момент выполнения rc.S параметр net.ipv6.conf.all.disable_ipv6 пока ещё отсутствует и, следовательно, не может быть установлен в какое-либо значение.
Подъем сети инициируется из rc.M вызовами rc.inet1 для подъема сетевых устройств и rc.inet2 для подъема сетевых сервисов. Последними выполняются rc.sysvinitscripts и rc.local.

Если правильно путаю, причина в том, что модуль ipv6 на тот момент не загружен. Исправить ситуацию с sysctl можно, загрузив модуль ipv6 явно из rc.modules, а лучше из вызываемого из rc.modules rc.netdevice, они выполнятся раньше, чем sysctl.

Но проще всего передать ядру ipv6.disable=1 при загрузке, для чего добавить в /etc/lilo.conf указанный параметр в append (если для всех вариантов загрузки) или в addappend конкретных вариантов. Затем не забыть вызвать lilo.
Спасибо сказали: