tgoop.com/srv_admin/4652
Last Update:
Уже не первый раз сталкиваюсь с ситуацией, что получаешь арендную VPS, а там по умолчанию уже настроены сетевые интерфейсы и ipv4, и ipv6. Делаешь обновление системы через apt, он подключается по ipv6 и ничего не качает, пишет, что no longer has a Release file. Столкнулся вчера лично с репозиторием от Яндекса:http://mirror.yandex.ru/debian bookworm main
В рунете он популярен. Я и сам всегда его использую. Не знаю, кто тут виноват, сам провайдер или Яндекс (позже выяснилось, что Яндекс, подробности в конце). Не вижу смысла разбираться и тратить время. В данном случае проще отключить ipv6. Это можно сделать разными способами. Можно конкретно apt заставить работать через ipv4. У него есть параметр для этого:# apt -o Acquire::ForceIPv4=true upgrade
Постоянно так писать не будешь, можно добавить в конфигурацию, создав файл /etc/apt/apt.conf.d/disable-ipv
6 следующего содержания:Acquire::ForceIPv4 "true";
Я лично поступил проще. Отключил ipv6 на уровне системы. Добавил в /etc/sysctl.conf
пару параметров:net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
И применил их:# sysctl -p
Настройки ipv6 на сетевом интерфейсе сразу пропали, apt успешно заработал по ipv4.
Более радикальный способ отключения через GRUB, но тогда придётся обновлять загрузчик, пересобирать initramfs. Плюс, понадобится перезагрузка. Для этого в его конфиг /etc/default/grub
, конкретно в параметр GRUB_CMDLINE_LINUX
, нужно добавить значение ipv6.disable=1
. Если там уже указаны другие значения, то перечислены они должны быть через пробел. Примерно так:GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet ipv6.disable=1"
После этого нужно обновить загрузчик. В зависимости от системы выглядеть это может по-разному. В Debian можно так:# dpkg-reconfigure grub-pc
Заметил ещё такую особенность. До того, как отключил ipv6, заметил, что apt работает то по ipv4, то по ipv6. Можно было несколько раз его запустить и получить желаемый результат. Не знаю, с чем это может быть связано. Возможно первый резолв доменного имени идёт на DNS запись AAAA, а если подключение неудачно, то потом на A. Но не уверен, что это так. Просто догадки.
Уже после написания заметки решил повнимательнее разобраться, что реально происходит в apt при обращении по ipv6 и ipv4. Для этого сделал два отдельных запроса по разным протоколам:# apt -o Debug::Acquire::http=true -o Acquire::ForceIPv4=true update
# apt -o Debug::Acquire::http=true -o Acquire::ForceIPv6=true update
Первый нормально отрабатывает и загружает файл InRelease. А во втором случае репозиторий Яндекса отвечает:Answer for: http://mirror.yandex.ru/debian/dists/bookworm/InRelease
HTTP/1.1 404 Not Found
Server: nginx/1.24.0 (Ubuntu)
............................................................
Err:2 http://mirror.yandex.ru/debian bookworm Release
404 Not Found [IP: 2a02:6b8::183 80]
То есть DNS запись для mirror.yandex.ru есть: # dig +short mirror.yandex.ru AAAA
2a02:6b8::183
Но Nginx, который раздаёт контент, не настроен для работы по ipv6. Не знаю, зачем так сделали. Если не настроили Nginx, зачем настроили ipv6? 🤷♂️ Может какие-то временные проблемы.
☝️В целом, с ipv6 такое бывает, поэтому если не используете, лучше сразу отключить.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#linux #network #ipv6
BY ServerAdmin.ru

Share with your friend now:
tgoop.com/srv_admin/4652