Надоело каждый раз вспоминать, как отключить ipv6 в том или ином приложении. Пока ipv6 у нас почти не используется, считаю, что его лучше отключать, чтобы не ловить лишние ошибки или проблемы с безопасностью. Буду вести эту шпаргалку для себя и остальных, если кому-то покажется полезным.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Как отключить ipv6
Я отдельно рассказывал, как отключить ipv6 в Centos 7. На деле, это почему-то не всегда помогает. Надежнее отключить ipv6 у конкретного приложения. Ниже идет пополняемый список приложений, для которых я буду отключать ipv6.
Для того, чтобы проверить, какой интерфейс слушает приложение, можно использовать команду netstat. Если у вас нет соответствующего приложения, ставится оно так:
# yum install net-tools
для Centos, или вот так для Debian и Ubuntu
# apt install net-tools
Проверяем, какие порты и протоколы используют наши приложения:
# netstat -tulnp
Видим, что у нас приложения ntp, ssh и zabbix-client слушают протокол ipv6. Дальше пойдет инструкция по отключению. После того, как у всех приложений отключите ipv6, должна получиться такая картинка:
Ntp
Дальше инструкция, как отключить ipv6 в ntp в системе Ubuntu 16. В файле /etc/default/ntp добавляем в параметры флаг -4:
NTPD_OPTS='-4 -g'
Перезапускаем ntp:
# systemctl restart ntp
Проверяем отключение ipv6 у ntp:
# netstat -tulnp | grep ntp
Chrony
Отключаем ipv6 в chrony в Centos 7. Редактируем конфиг /etc/sysconfig/chronyd.
OPTIONS="-4"
Перезапускаем chrony:
# systemctl restart chronyd
Проверяем, отключился ли ipv6 у chrony:
# netstat -tulnp | grep chronyd
Sshd
Рассказываю, как отключить ipv6 у ssh. В конфигурационном файле /etc/ssh/sshd_config указываем параметр:
ListenAddress 0.0.0.0
Перезапускаем sshd:
# systemctl restart sshd
Проверяем, отключили ли ipv6 у ssh:
# netstat -tulnp | grep ssh
Zabbix-agent
Выключаем ipv6 у агента zabbix. В конфигурационном файле /etc/zabbix/zabbix_agentd.conf указываем параметр:
ListenIP=0.0.0.0
Перезапускаем zabbix-agent:
# systemctl restart zabbix-agent
Проверяем:
# netstat -tulnp | grep zabbix-agent
Zabbix-server
Отключаем ipv6 в zabbix сервере. В конфигурационном файле /etc/zabbix/zabbix_server.conf указываем параметр:
ListenIP=0.0.0.0
Перезапускаем zabbix-server:
# systemctl restart zabbix-server
Проверяем:
# netstat -tulnp | grep zabbix-server
Apache
Рассказываю, как отключить ipv6 у web сервера apache. В основном конфиге указываем параметр:
Listen 0.0.0.0:80
Перезапускаем apache:
# apachectl restart
Смотрим, отключили ipv6 у apache или нет. Если у вас Centos, то служба зовется httpd.
# netstat -tulnp | grep httpd
Если Debian/Ubuntu, то apache.
# netstat -tulnp | grep apache
Postfix
Отключаем ipv6 в postfix. Меняем в конфиге /etc/postfix/main.cf
inet_protocols = ipv4
Перезапускаем postfix:
# systemctl restart postfix
Проверяем отключение ipv6:
# netstat -tulnp | grep master
Dovecot
Отключаем ipv6 в dovecot. Меняем в конфиге /etc/dovecot/dovecot.conf
listen = *
Перезапускаем dovecot:
# systemctl restart dovecot
Проверяем отключение ipv6:
# netstat -tulnp | grep dovecot
Rsync
Отключаем ipv6 в rsync в CentOS 7. В конфигурационном файле /etc/sysconfig/rsyncd указываем параметр:
OPTIONS="-4"
Перезапускаем rsyncd:
# systemctl restart rsyncd
Проверяем, отключился ли ipv6 в rsync:
# netstat -tulnp | grep rsync
Mysql
Рассказываю, как отключить ipv6 в mysql server. В конфигурационный файл добавляем в секцию [mysqld] параметр:
bind-address = 127.0.0.1
Для того, чтобы слушать только локальный интерфейс или параметр:
bind-address = 0.0.0.0
Чтобы слушать все ipv4 адреса на сервере. Для применения настроек по отключению ipv6 в mysql сервере, перезапустите его:
# systemctl restart mysql
или
# systemctl restart mariadb
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Пожалуйста дополните статью информацией о том как выключить ipv6 для squid
Для глобального отключения нужно в /etc/default/grub в строку GRUB_CMDLINE_LINUX добавить ipv6.disable=1
После этого выполнить в CentOS - grub2-mkconfig -o /boot/grub2/grub.cfg,
в Debian - grub-mkconfig -o /boot/grub/grub.cfg.
Ну, и перезагрузить машину.
Спасибо за информацию, попробую. До grub никогда руки не доходили. Не хочется туда лазить без крайней необходимости. А в самой системе надежно и гарантированно отключить не получается.
Попробовал. Да, правка /etc/default/grub решила задачу отключения ipv6 на CetntOS 7.
Не хотел трогать GRUB, но не смог найти способа отключить ipv6 в Nginx.
Дополнение. После отключения ipv6 в системе, Nginx стартовать отказался, сославшись на ошибку в конфигурации. И действительно, в файле /etc/nginx/nginx.conf нашлась заветная строчка:
listen [::]:80 default_server;
которую нужно было закомментировать для отключения ipv6.
Почему-бы просто не настроить файерволл на непропуск IPv6-трафика, раз у Вас он почти не используется?
Ну или не отключить сам протокол, как это делается в Винде?
Можно настроить firewall и закрыть ipv6. Но лично я не сторонник лишних сущностей. Если ipv6 не нужно, то зачем мне лишние правила в фаерволе? К тому же его может вообще не быть в некоторых случаях. Считаю более логичным отключить его в приложении.
В Centos по какой-то причине у меня не получается полностью отключить ipv6. Я не изучал подробно вопрос, но почему-то стандартных вещей в sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
и в /etc/sysconfig/network
NETWORKING_IPV6=no
IPV6INIT=no
оказывается недостаточно.
Так надо же добавить интерфейс и не надо страдать с отключением в приложениях.
Например для интерфейса с именем eth0 так
net.ipv6.conf.eth0.disable_ipv6 = 1
Зачем ставить netstat, когда из коробки есть ss, который является его потомком
Предлагаю ввести в консоли две команды и сравнить вывод:
netstat -tulnp
ss -tulnp
Думаю, после этого не будет вопроса, зачем использовать netstat.