TG Telegram Group & Channel
ServerAdmin.ru | United States America (US)
Create: 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-ipv6 следующего содержания:

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

Уже не первый раз сталкиваюсь с ситуацией, что получаешь арендную 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-ipv6 следующего содержания:

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
3👍188👎8


>>Click here to continue<<

ServerAdmin.ru






Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)