Зачем отключать IPv6?
IPv6 – это новая версия протокола IP, отличающаяся от предыдущей версии (IPv4) длиной адреса в 128 бит (вместо 32 бит в IPv4). В настоящее время использование IPv6 в интернете постепенно набирает обороты, но пока ещё не получило столь широкого распространения, как IPv4.
Как правило
- в локальной сетке используется только ipv4
- наши "пост-советские" провайдеры не используют ipv6
Поэтому, зачастую, в использовании этого протокола просто нет необходимости, ибо не только бесполезно, но и тратит ценные системные ресурсы. Поэтому, чтобы не грузить проц, отключаем ipv6
МЕСТА, В КОТОРЫХ МОЖНО РАЗРЕШИТЬ/ЗАПРЕТИТЬ IPv6
Список мест очень прост (см. статью «Порядок загрузки Linux» вслева в меню):
- параметры ядра, передаваемые с загрузчиком (LILO, GRUB, и т.д.)
- при загрузке ядра: подгружаемые модули (MODPROBE)
- при загрузке ядра: параметры ядра системы (SYSCTL)
- система инициализации userspase (SysV Init-скрипты)
В каждое из этих мест мы можем добавить свои настройки (запрет IPv6).
НО(!) вендору дистриба (при апгрейде) ничто не помешает переписать поверх (первые три) способа своими настройками, поэтому логично было бы использовать для наших настроек только последний вариант – скрипт /etc/rc.local
С другой стороны, апгрейд не известно когда будет, а нам нужно чтобы система уже сегодня грузилась быстро, и лишние запуски (модули, службы что стартуют от IPv6, и т.д.) нам ни к чему (даже если мы в конце концов прибиваем IPv6).
Поэтому мы будем добавлять настройку IPv6 во все эти четыре места.
ИСПОЛЬЗУЕТСЯ ЛИ IPv6 В СИСТЕМЕ ?
Загружены ли модули (MODPROBE -> ipv6.ko)
- ls /proc/sys/net | grep ipv6
- lsmod | grep ipv6
Ядро настроено и поддерживает IPv6 (SYSCTL, GRUB):
- cat /proc/sys/net/ipv6/conf/all/disable_ipv6
- cat /proc/sys/net/ipv6/conf/default/disable_ipv6
- cat /proc/sys/net/ipv6/conf/lo/disable_ipv6
Настроены ли интерфейсы для этого протокола?
- ifconfig | grep inet6
Установлены ли какие-либо сетевыек соединения по этому протоколу:
- netstat -npl | grep -E "tcp6|udp6" | wc -l0
СКРИПТ ДЛЯ ЗАПРЕЩЕНИЯ ПРОТОКОЛА IPv6
ЗАМЕЧАНИЯ:
- Порядок раположения конфиг.файлов и каталогов /etc/modprobe* и /etc/sysctl* и их «парсинга» системой при старте одинаковый (см. маны – man sysctl && man sysctl.conf && man modprobe && man modprobe.conf)
- В некоторых релизах/дистрибутивах расширения ".conf" для файлов не пишут...
- В современных дистрибутивах используют только каталоги /etc/*.d/, а файлы /etc/*.conf уже не актуальны.
- Приведенный ниже скрипт предназначен для DEB-дистрибутивов. Особенности для RPM-дистрибутивов - см.здесь http://centos.name/?page/FAQ/centos5
Пишем скрипт, который в существующие конфиг.файлы добавит строчки, отключающие протокол (ДЛЯ DEB-ДИСТРИБУТИВОВ !!!) и запускаем его. Содержимое скрипта смотрим здесь (win-1251) здесь
Доступны скрипты в таких кодировках:
- UTF-8 http://ibuntu.narod2.ru/files/disable-ipv6.utf-8.sh
- w1251 http://ibuntu.narod2.ru/files/disable-ipv6.win-1251.sh
- koi8-ru http://ibuntu.narod2.ru/files/disable-ipv6.koi8-ru.sh
ВЫБИРАЕМ НУЖНЫЙ И В КОНСОЛИ ВЫПОЛНЯЕМ:
- server@root> wget -O disable-ipv6.sh "http://ibuntu.narod2.ru/files/disable-ipv6.utf-8.sh"
- server@root> chmod 755 disable-ipv6.sh
- server@root> sudo ./disable-ipv6.sh
И ребут системы, чтобы изменения вступили в силу (одно из…):
- reboot
- shutdown –r 0