Настройка сетевых параметров в Debian
В текущей статье я расскажу об очень популярной теме, с которой начинается практически любая первоначальная работа с сервером. Настройка основных параметров сети в Debian — ip адрес, dhcp, ipv6, dns, hostname, статические маршруты, сетевые карты и другие network параметры. Двигаться по теме будем шаг за шагом от простого к сложному, разбирая все нюансы по порядку и отвечая на наиболее популярные вопросы.
Сетевые настройки на сервере Debian
Первоначальная настройка сети начинается во время установки сервера . Если у вас есть сетевой интерфейс и dhcp сервер в сети, то сеть сконфигурируется автоматически на основе полученных настроек и будет готова к работе. В последствии вы можете выполнить настройку сети в Debian через консоль с помощью программ ip или ifconfig . Наиболее популярным и современным средством на текущий момент является ip, поэтому в дальнейшем рассмотрим вопрос конфигурации сетевых интерфейсов с ее помощью. Про ifconfig тоже не забудем. Рассмотрим ее позже отдельно.
Отдельно стоит такой инструмент управления сетевыми подключениями как Network manager . Он используется в сочетании с графическими оболочками, которых на сервере обычно нет, поэтому вопрос его настройки я не буду рассматривать. Мне просто не на чем это делать, да и не вижу смысла.
Есть 2 различные возможности изменить сеть в Debian:
- Настройка сети из консоли с помощью указанных ранее консольных программ.
- С помощью редактирования конфигурационного файла сетевых интерфейсов /etc/network/interfaces .
Рассмотрим оба этих варианта. Вводная теоретическая часть окончена, приступаем к практике.
Настройка статического IP
Вы установили сервер и во время установки указали какие-то сетевые параметры, или не указали, не важно. Но сейчас вы решили, что вам нужно назначить статический ip (static ip) адрес. Воспользуемся для этого утилитой ip . Сначала посмотрим список всех сетевых интерфейсов:
Отключить IPv6 в Ubuntu/Debian
Во всех современных дистрибутивах Linux протокол IPv6 включен по-умолчанию. Если вы используете в вашей сети только IPv4 адрессацию, вы можете отключить протокол IPv6 в Linux. В этой статье, мы покажем, как отключить IPv6 в Ubuntu и Debian Linux.
Проверьте, что на хосте доступен IPv6 интерфейс:
inet6 ::1/128 scope host inet6 fe80::7cd3:2e4f:d06e:3ee6/64 scope link noprefixroute
Проверьте, есть ли в Linux активные прослушиватели, который ожидают подключения на IPv6 интерфейсах.
Чтобы отключить поддержку IPv6 сразу для всех интерфейсов, отредактируйте файл sysctl.conf:
$ sudo mcedit /etc/sysctl.conf
Добавьте в конец файла строки:
# disable IPv6 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 net.ipv6.conf.ens33.disable_ipv6 = 1
В последней строке укажите имя сетевого интерфейса, на котором нужно отключить IPv6 в нашем примере это ens33 (вывести список сетевых интерфейсов можно с помощью команды ip a ).
Чтобы применить изменения в sysctl.conf, нужно выполнить команду:
Выполните следующую команду и проверьте, что в Linux отсутствуют сетевые интерфейсы с включенным протоколом IPv6.
Также вы можете проверить, что IPv6 отключен командой (должна вернуть 1):
Этот способ отключения IPv6 работает в современных версиях Ubuntu LTS 22.04 и Debian Bullseye 11.2.
Если нужно временно отключить IPv6 до следующей перезагрузки, выполните команды:
$ sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
$ sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
Также можно отключить IPv6 с помощью параметров ядра в GRUB. Отредактируйте файл конфигурации GRUB:
$ sudo mcedit /etc/default/grub
Добавьте в конец файла строки:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash ipv6.disable=1" GRUB_CMDLINE_LINUX="ipv6.disable=1"
Сохраните файл и обновите конфигурацию GRUB:
Это отключит IPv6 при загрузке Linux.
Вики IT-KB
Относительно IPv6 есть такой тезис «Включенный и ненастроенный протокол IPv6 хуже, чем выключенный протокол IPv6». Если использование IPv6 не планируется, то можно выключить поддержку IPv6 глобально на уровне системы.
Убедимся в том, что в системе действительно присутствуют IPv6 интерфейсы:
Также можно увидеть, что некоторые приложения имеют активные TCP-прослушиватели на интерфейсах IPv6. Посмотреть все прослушиваемые в системе порты можно командой:
Чтобы выключить поддержку IPv6 на всех сетевых интерфейсах сразу, открываем на редактирование файл sysctl.conf
В конец файла добавляем строки:
# Turn off IPv6 # net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 net.ipv6.conf.eth0.disable_ipv6 = 1
Для выключения IPv6 на всех интерфейсах системы достаточно параметра net.ipv6.conf.all.disable_ipv6 . Прочие параметры указаны в качестве примера отключения на уровне отдельных интерфейсов. При этом, если необходимо, изменяем имя сетевого интерфейса eth0 на тот, который используется у нас.
Для вступления изменений в силу, заставим sysctl перечитать файл /etc/sysctl.conf :
Cнова проверяем список интерфейсов, где IPv6 интерфейсов уже не должно остаться:
Дополнительные источники информации:
Проверено на следующих конфигурациях:
Версия ОС |
---|
Debian GNU/Linux Stretch 9.2.1 |
Debian GNU/Linux Buster 10.0 |
Debian GNU/Linux Bullseye 11.2 |
Debian GNU/Linux Bookworm 12.0 |
Автор первичной редакции:
Алексей Максимов
Время публикации: 25.11.2017 11:33
Обсуждение
На дебиан 10, в котором настройка сетевой карты проведена через gui (advanced network manager) такой способ не прокатывает, и отключение в самом графическом интерфейсе не проходит.
Алексей Максимов , 14.12.2019 18:49
Описанное здесь было проверено на Debian Buster без графического интерфейса, и в таком случае это работает. Систем подобного класса с графическим интерфейсом не имеем, поэтому прокомментировать это никак не смогу.
Откуда в buster такое именование сетевых интерфейсов? Зачем перезагружать сервер, если достаточно сервис перезапустить?
Отлично работает, за исключением ошибки
bash: sysctl: command not found
так как в чистом дебиане 10 не настроено окружение на
/sbin
Решением будет использовать
/sbin/sysctl -p
заместо
/sbin
Благодарю автора за эту заметку, сервера теперь нормально и быстро обновляются. Пива и мяса в ваш дом.
Зачем каждый интерфейс указывать, если первой строкой (net.ipv6.conf.all.disable_ipv6 = 1) стоит отключение ipv6 на всех интерфейсах?
Алексей Максимов , 09.06.2023 17:25
Это больше для наглядности. Что отключить можно не только глобально, но и на уровне отдельного интерфейса.
unix-linux/debian/how-to-turn-off-ipv6-in-debian-linux.txt · Последнее изменение: 20.06.2023 14:16 — Алексей Максимов
Как отключить IP версии 6 в Linux
Обновлено: 16.05.2020 Опубликовано: 23.03.2019
IPv6 далеко не всегда может использоваться в системе. Более того, он может вызвать некоторые проблемы при обращении к локальной петле (127.0.0.1) — запросы могут пойти на адрес ::1, что может привести к тому, что некоторые приложения будут работать не корректно.
В данной инструкции используются универсальные методы, которые подойдут для различных систем, например, Ubuntu, CentOS, Debian, Red Hat и так далее.
Отключение через ядро Linux
Быстрее всего отключить IPv6 через настройку ядра. Это универсальный способ и он подойдет для многих дистрибутивов на базе Linux.
Глобально (для всех интерфейсов)
Создаем или открываем файл:
* 99-sysctl.conf является основным конфигурационным файлом, а 10-ipv6-privacy.conf в каталоге sysctl.d — дополнительным. Для удобства лучше использовать последний.
Добавляем следующие строки:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
Если вносили изменения в файл /etc/sysctl.d/99-sysctl.conf:
Если вносили изменения в файл /etc/sysctl.d/10-ipv6-privacy.conf:
sysctl -p /etc/sysctl.d/10-ipv6-privacy.conf
Проверяем — должны остаться только адреса IPv4:
Для определенного интерфейса
Если нужно отключить IPv6 только для одного интерфейса, например, для eth0, также открываем настройку ядра.