Отключаем ipv6 в приложениях

Надоело каждый раз вспоминать, как отключить 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.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

10 комментариев

  1. mobiservice19

    Пожалуйста дополните статью информацией о том как выключить ipv6 для squid

  2. Для глобального отключения нужно в /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.

  3. Почему-бы просто не настроить файерволл на непропуск 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

  4. aaaaaaaaaaaaa

    Зачем ставить netstat, когда из коробки есть ss, который является его потомком

    • Предлагаю ввести в консоли две команды и сравнить вывод:
      netstat -tulnp
      ss -tulnp
      Думаю, после этого не будет вопроса, зачем использовать netstat.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar