У локальной песочницы есть список доменов, который добавляется к вашему собственному в одном из режимов работы сети. Понимать его устройство важнее, чем помнить содержимое: он существует, чтобы обычная разработка не требовала ручного перечисления десятков адресов - реестров пакетов, зеркал дистрибутивов, хранилищ артефактов и площадок исходного кода. Без такого набора первая же установка зависимостей превращалась бы в отдельную задачу по настройке сети.
Режимы отличаются принципиально. В одном к вашему списку добавляется набор по умолчанию, в другом действует только ваш список, в третьем ограничения по доменам не применяются вовсе. Выбор между ними - это выбор между удобством и точностью: набор по умолчанию экономит настройку и покрывает типовую сборку, ваш собственный список даёт контроль и объяснимость, а отключение ограничений снимает вопрос вместе с самой защитой.
Полезно один раз посмотреть на состав по категориям, а не по алфавиту. Ниже такая карта: реестры пакетов основных экосистем, зеркала операционных систем, площадки исходного кода, облачные хранилища и вспомогательные сервисы инструментов. Категории показывают, что именно считается обычной потребностью сборки, и помогают понять, чего вашему проекту не хватает: если в списке нет вашей экосистемы, значит её адреса придётся описать самому.
| Категория | Примеры | Зачем в списке |
|---|---|---|
| Реестры пакетов | registry.npmjs.org, crates.io, pypi.org, cpan.org, cocoapods.org | Установка зависимостей без ручного перечисления |
| Зеркала дистрибутивов | archive.ubuntu.com, debian.org, alpinelinux.org, centos.org, archlinux.org | Системные пакеты в контейнерах и на сборочных машинах |
| Площадки исходного кода | codeload.github.com, bitbucket.org, шаблон *.githubusercontent.com | Получение исходников и вложений |
| Облачные хранилища | шаблоны *.cloudflarestorage.com, *.public.blob.vercel-storage.com | Артефакты и бинарные зависимости |
| Инструменты и среды | шаблоны *.docker.com и *.docker.io, awscli.amazonaws.com, binaries.prisma.sh | Загрузка инструментов сборки и их компонентов |
| Служебные сервисы |
| шаблоны *.googleapis.com, *.gvt1.com, apt.llvm.org |
| Вспомогательные загрузки и обновления инструментов |
Запись бывает трёх видов: точный домен, шаблон поддоменов и диапазон адресов в нотации CIDR. Разница та же, что и в любых сетевых политиках: шаблон охватывает всё поддерево имён, включая узлы, о которых вы никогда не слышали и которые могут появиться завтра, а точный домен - только себя. При составлении собственного списка стоит предпочитать точные записи и добавлять шаблон только там, где поддомены действительно используются - например, у хранилищ артефактов с динамическими именами узлов.
Признак сетевого ограничения в реальной работе редко выглядит как сетевая ошибка. Чаще падает менеджер пакетов на разрешении зависимостей, зависает загрузка образа или молча пустеет кэш инструмента, а в выводе видна только неудача верхнего уровня. Поэтому первым делом ищут конкретный узел, к которому не удалось обратиться, и только потом принимают решение. Этот узел - и есть недостающая запись; всё остальное в выводе обычно следствие.
Главное ограничение, которое нужно помнить: список адресов управляет тем, куда можно обратиться, но не тем, что оттуда придёт. Разрешённый реестр может отдать пакет, содержащий что угодно, а разрешённая площадка исходного кода - репозиторий с враждебным содержимым. Сетевая политика сокращает поверхность, но не проверяет смысл, и работает как один слой из нескольких, а не как замена остальным.
Пробел закрывают другие механизмы, и их полезно назвать рядом. Файл блокировки версий и контрольные суммы отвечают за то, что пришло именно ожидаемое содержимое, а не подмена под тем же именем. Внутреннее зеркало реестра сужает источник до одного адреса, который вы контролируете, и заодно делает сборку воспроизводимой при недоступности внешнего мира. В чувствительных средах короткий список плюс собственное зеркало почти всегда лучше длинного списка чужих адресов.
Есть и практический приём: начинать с набора по умолчанию, наблюдать реальные отказы и добавлять недостающее точечно. Так вы получаете список, отражающий вашу реальную сборку, а не чьи-то представления о ней. И, что важнее, каждая добавленная запись объяснима: она появилась в ответ на конкретную потребность, а не на всякий случай, и её можно удалить, когда потребность исчезнет.
Инженерный вывод простой: список по умолчанию - удобная база для разработки, а не политика безопасности. Для чувствительных сред собирают собственный набор, для обычной работы пользуются базовым и добавляют своё. В обоих случаях помнят, что открытый домен - это разрешение обратиться, а не гарантия содержимого.
Типичные провалы предсказуемы. Считать список по умолчанию политикой безопасности. Открыть режим без ограничений домена, чтобы не разбираться. Писать шаблоны там, где хватило бы точных записей. Читать верхнюю ошибку сборки вместо того, чтобы найти отклонённый узел. И добавлять адреса впрок вместо реакции на конкретный отказ.