Рейтинг:0

Почему api.nuget.org не разрешается в моем контейнере разработки docker-compose?

флаг ru

Я использую подсистему Windows для Linux v2 с Ubuntu 20.04. В моем WSL я запускаю контейнер разработки VS Code на основе контейнер docker-from-docker-compose. Из моего контейнера разработки я не могу разрешить api.nuget.org, но везде он работает нормально. Я также могу пинговать другие домены в моем контейнере разработки, но только этот не работает. Я в значительной степени новичок, когда дело доходит до сети, поэтому я ищу помощь в том, как это отлаживать.Я много читал за последний день, чтобы попытаться сузить круг вопросов, и у меня только что возникло больше вопросов. Вот некоторые из вещей, которые я посмотрел:

  • Обсуждалось много решений эта проблема GitHub, но ни один из них не работает для меня
  • Я пробовал выполнять запросы с помощью различных инструментов командной строки, таких как копать землю, нслукап, хозяин... вот где все становится немного странно: Когда я бегу копать + трассировка api.nuget.org из моей оболочки WSL bash я получаю следующее:
$ копать + трассировка api.nuget.org

; <<>> DiG 9.16.1-Ubuntu <<>> +trace api.nuget.org
;; глобальные параметры: +cmd
. 165287 В NS g.root-servers.net.
. 165287 В NS h.root-servers.net.
. 165287 В NS a.root-servers.net.
. 165287 В NS i.root-servers.net.
. 165287 В NS j.root-servers.net.
. 165287 В NS k.root-servers.net.
. 165287 В NS l.root-servers.net.
. 165287 В NS m.root-servers.net.
. 165287 В NS b.root-servers.net.
. 165287 В NS c.root-servers.net.
. 165287 В NS d.root-servers.net.
. 165287 В NS e.root-servers.net.
. 165287 В NS f.root-servers.net.
;; Получено 811 байт от 172.24.176.1#53(172.24.176.1) за 20 мс

орг. 172800 В NS a0.org.afilias-nst.info.
орг. 172800 В NS a2.org.afilias-nst.info.
орг. 172800 В NS b0.org.afilias-nst.org.
орг. 172800 В NS b2.org.afilias-nst.org.
орг. 172800 В NS c0.org.afilias-nst.info.
орг. 172800 В NS d0.org.afilias-nst.org.
орг.                   86400 В ДС 26974 8 2 4FEDE294C53F438A158C41D39489CD78A86BEB0D8A0AEAFF14745C0D 16E1DE32
орг. 86400 IN RRSIG DS 8 1 86400 20220608050000 20220526040000 47671 . DcP0H0m+uUbKqzYeO8vmGSeU4Ax1AzmdFTBvZl2PmrbkwFLoZTIP79Jn e4S4IIw9zAb2ZBwg5MOC634Q02HJW9znOMPclnT3T0OYbxQZumUZhcJK 3hw2Nf0fuYCzDgau72J8kXQU10CYgpRfY0chh21L11yaWn7m9Allwv9a fn2+FU6O6JhvHW8N+bOjVocqwLsPoUwqTSV/YtxAqKR00fAwaNhUT2lx BFdd3aZpYqNnypcYb96kVCX9eF81z53Bu8hOZDzr7p5IazzF+qFxGB1u G0Pi+WPFR5qOYu0d+7kHQ5HDnraDD7QEGX5kx5RmO7r1lKIX8DYiYAjt IPN3+w==
;; Получено 779 байт от 192.58.128.30#53(j.root-servers.net) за 80 мс

nuget.org. 86400 В NS ns4-205.azure-dns.info.
nuget.org. 86400 В NS ns1-205.azure-dns.com.
nuget.org. 86400 В NS ns2-205.azure-dns.net.
nuget.org. 86400 В NS ns3-205.azure-dns.org.
1i870vj5h429vj9pci7ar6e9gki74tr7.org. 86400 IN NSEC3 1 1 10 332539EE7F95C32A 1I87R64GAJU4O91MHKBU7I9EKBS7K8UT NS SOA RRSIG DNSKEY NSEC3PARAM
1i870vj5h429vj9pci7ar6e9gki74tr7.org. 86400 IN RRSIG NSEC3 8 2 86400 20220616154216 20220526144216 15843 орг. juD6urMvH8mrHHkmAX7sFcQOs3ffqjJ2m5TppBSxCMFlSCHOEyEQT/Hg KpqL3TeoLBmvUi89Z3xSH78EQZGcWXNW5Rq2j5fIRNDMt9t2ePjftEPC 2lIiR4CkHgSGjTlfvaHvnCGUVJ2oXTEtu4Jgjh7Mm3GYXn9dqszel1wA 4BI=
pnnukt76t98parmvalihebtso9erf6p.org. 86400 IN NSEC3 1 1 10 332539EE7F95C32A PNNSJA6RL8J0AOQQ1NMHT3IUVLTC4CEN NS DS RRSIG
pnnukt76t98parmvalihebtso9erf6p.org. 86400 IN RRSIG NSEC3 8 2 86400 20220615152234 20220525142234 15843 орг. rjaBgwKLles40lIIDm+K3iN49tFJ5gFRMLW5WMAjzN9dMDFj/Hribwxi ZMmt6L1GOgDxwBEA9SX0TVQb9RbGztyoeEiIIMytcx4dah5QnuaSKTOg cVCv+U6G6Hvix8+/yE1vSbDKcE8/RvDI2L8v0s=mI9dKcE8/RvDI2L8v0s=mI9e2L8v0s+
;; Получено 697 байт от 199.19.54.1#53(b0.org.afilias-nst.org) за 210 мс.

api.nuget.org. 300 В CNAME nugetapiprod.trafficmanager.net.
;; Получено 87 байт от 13.107.24.205#53(ns3-205.azure-dns.org) за 50 мс.

Это почти идентично тому, что я получаю, когда запускаю его внутри своего контейнера разработки:

$ копать + трассировка api.nuget.org

; <<>> DiG 9.16.1-Ubuntu <<>> +trace api.nuget.org
;; глобальные параметры: +cmd
. 165234 В NS k.root-servers.net.
. 165234 В NS l.root-servers.net.
. 165234 В NS m.root-servers.net.
. 165234 В NS b.root-servers.net.
. 165234 В NS c.root-servers.net.
. 165234 В NS d.root-servers.net.
. 165234 В NS e.root-servers.net.
. 165234 В NS f.root-servers.net.
. 165234 В NS g.root-servers.net.
. 165234 В NS h.root-servers.net.
. 165234 В NS a.root-servers.net.
. 165234 В NS i.root-servers.net.
. 165234 В NS j.root-servers.net.
;; Получено 811 байт от 127.0.0.11#53(127.0.0.11) за 20 мс.

орг. 172800 В NS a0.org.afilias-nst.info.
орг. 172800 В NS a2.org.afilias-nst.info.
орг. 172800 В NS b0.org.afilias-nst.org.
орг. 172800 В NS b2.org.afilias-nst.org.
орг. 172800 В NS c0.org.afilias-nst.info.
орг. 172800 В NS d0.org.afilias-nst.org.
орг. 86400 В ДС 26974 8 2 4FEDE294C53F438A158C41D39489CD78A86BEB0D8A0AEAFF14745C0D 16E1DE32
орг.                   86400 IN RRSIG DS 8 1 86400 20220608050000 20220526040000 47671 . DcP0H0m+uUbKqzYeO8vmGSeU4Ax1AzmdFTBvZl2PmrbkwFLoZTIP79Jn e4S4IIw9zAb2ZBwg5MOC634Q02HJW9znOMPclnT3T0OYbxQZumUZhcJK 3hw2Nf0fuYCzDgau72J8kXQU10CYgpRfY0chh21L11yaWn7m9Allwv9a fn2+FU6O6JhvHW8N+bOjVocqwLsPoUwqTSV/YtxAqKR00fAwaNhUT2lx BFdd3aZpYqNnypcYb96kVCX9eF81z53Bu8hOZDzr7p5IazzF+qFxGB1u G0Pi+WPFR5qOYu0d+7kHQ5HDnraDD7QEGX5kx5RmO7r1lKIX8DYiYAjt IPN3+w==
;; Получено 779 байт от 192.5.5.241#53(f.root-servers.net) за 20 мс

nuget.org. 86400 В NS ns1-205.azure-dns.com.
nuget.org. 86400 В NS ns4-205.azure-dns.info.
nuget.org. 86400 В NS ns2-205.azure-dns.net.
nuget.org. 86400 В NS ns3-205.azure-dns.org.
1i870vj5h429vj9pci7ar6e9gki74tr7.org. 86400 IN NSEC3 1 1 10 332539EE7F95C32A 1I87R64GAJU4O91MHKBU7I9EKBS7K8UT NS SOA RRSIG DNSKEY NSEC3PARAM
1i870vj5h429vj9pci7ar6e9gki74tr7.org. 86400 IN RRSIG NSEC3 8 2 86400 20220616154354 20220526144354 15843 орг. J6jAHAorvmIVRWSZ0ew21ooNKkUhCsaMowR5qs+1uqJeCVAZEESSP9RW r7UiYCxXctu2dYIu2QRhypmvhIy4Ek3NXyOrIw3Cc8Ie3ndmG6wp+Ny3 T/IB7KolSZk755VzQJd13dmbPSyzeifpd8OkUR18mCUP=OkUR18mC
pnnukt76t98parmvalihebtso9erf6p.org. 86400 IN NSEC3 1 1 10 332539EE7F95C32A PNNSJA6RL8J0AOQQ1NMHT3IUVLTC4CEN NS DS RRSIG
pnnukt76t98parmvalihebtso9erf6p.org. 86400 IN RRSIG NSEC3 8 2 86400 20220615152234 20220525142234 15843 орг. rjaBgwKLles40lIIDm+K3iN49tFJ5gFRMLW5WMAjzN9dMDFj/Hribwxi ZMmt6L1GOgDxwBEA9SX0TVQb9RbGztyoeEiIIMytcx4dah5QnuaSKTOg cVCv+U6G6Hvix8+/yE1vSbDKcE8/RvDI2L8v0s=mI9dKcE8/RvDI2L8v0s=mI9e2L8v0s+
;; Получено 697 байт от 199.19.56.1#53(a0.org.afilias-nst.info) за 190 мс.

api.nuget.org. 300 В CNAME nugetapiprod.trafficmanager.net.
;; Получено 87 байт от 40.90.4.205#53(ns1-205.azure-dns.com) за 50 мс.

Однако, когда я бегу nslookup-debug api.nuget.org в моем WSL я получаю это:

$ nslookup-debug api.nuget.org
Сервер: 172.24.176.1
Адрес: 172.24.176.1#53

------------
    ВОПРОСЫ:
        api.nuget.org, тип = A, класс = IN
    ОТВЕТЫ:
    -> api.nuget.org
        Каноническое имя = nugetapiprod.trafficmanager.net.
        ттл = 0
    -> nugetapiprod.trafficmanager.net
        каноническое имя = apiprod-mscdn.azureedge.net.
        ттл = 0
    -> apiprod-mscdn.azureedge.net
        каноническое имя = apiprod-mscdn.afd.azureedge.net.
        ттл = 0
    -> apiprod-mscdn.afd.azureedge.net
        Каноническое имя = star-azureedge-prod.trafficmanager.net.
        ттл = 0
    -> звезда-azureedge-prod.trafficmanager.net
        каноническое имя = dual.part-0043.t-0009.t-msedge.net.
        ттл = 0
    -> двойная.часть-0043.t-0009.t-msedge.net
        каноническое имя = часть-0043.t-0009.t-msedge.net.
        ттл = 0
    -> часть-0043.t-0009.t-msedge.net
        Интернет-адрес = 13.107.213.71
        ттл = 0
    -> часть-0043.t-0009.t-msedge.net
        интернет-адрес = 13.107.246.71
        ттл = 0
    ОФИЦИАЛЬНЫЕ ЗАПИСИ:
    ДОПОЛНИТЕЛЬНЫЕ ЗАПИСИ:
------------
Неавторитетный ответ:
Каноническое имя api.nuget.org = nugetapiprod.trafficmanager.net.
Каноническое имя nugetapiprod.trafficmanager.net = apiprod-mscdn.azureedge.net.
apiprod-mscdn.azureedge.net каноническое имя = apiprod-mscdn.afd.azureedge.net.
apiprod-mscdn.afd.azureedge.net каноническое имя = star-azureedge-prod.trafficmanager.net.
star-azureedge-prod.trafficmanager.net каноническое имя = dual.part-0043.t-0009.t-msedge.net.
каноническое имя dual.part-0043.t-0009.t-msedge.net = part-0043.t-0009.t-msedge.net.
Имя: часть-0043.t-0009.t-msedge.net
Адрес: 13.107.213.71
Имя: часть-0043.t-0009.t-msedge.net
Адрес: 13.107.246.71
------------
    ВОПРОСЫ:
        часть-0043.t-0009.t-msedge.net, тип = AAAA, класс = IN
    ОТВЕТЫ:
    -> часть-0043.t-0009.t-msedge.net
        имеет адрес AAAA 2620:1ec:46::71
        ттл = 0
    -> часть-0043.t-0009.t-msedge.net
        имеет адрес AAAA 2620:1ec:bdf::71
        ттл = 0
    ОФИЦИАЛЬНЫЕ ЗАПИСИ:
    ДОПОЛНИТЕЛЬНЫЕ ЗАПИСИ:
------------
Имя: часть-0043.t-0009.t-msedge.net
Адрес: 2620:1ec:46::71
Имя: часть-0043.t-0009.t-msedge.net
Адрес: 2620:1ec:bdf::71

Принимая во внимание, что это то, что я получаю из контейнера dev:

$ nslookup-debug api.nuget.org
Сервер: 127.0.0.11
Адрес: 127.0.0.11#53

------------
    ВОПРОСЫ:
        api.nuget.org, тип = A, класс = IN
    ОТВЕТЫ:
    ОФИЦИАЛЬНЫЕ ЗАПИСИ:
    ДОПОЛНИТЕЛЬНЫЕ ЗАПИСИ:
------------
Неавторитетный ответ:
------------
    ВОПРОСЫ:
        api.nuget.org, тип = AAAA, класс = IN
    ОТВЕТЫ:
    ОФИЦИАЛЬНЫЕ ЗАПИСИ:
    ДОПОЛНИТЕЛЬНЫЕ ЗАПИСИ:
------------
*** Не удается найти api.nuget.org: нет ответа
  • Единственная разница в /etc/nsswitch.conf между моим WSL и моим контейнером разработки находится системад записей, но выглядит это так:
$ кошка /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Пример конфигурации функциональности переключателя службы имен GNU.
# Если у вас установлены пакеты `glibc-doc-reference' и `info', попробуйте:
# `info libc "Name Service Switch"' для получения информации об этом файле.

пароль: файлы systemd
группа: файлы systemd
тень: файлы
тень: файлы

хосты: файлы dns
сети: файлы

протоколы: файлы БД
услуги: файлы БД
эфиры: файлы db
rpc: файлы БД

сетевая группа: nis
  • Это /и т.д./хосты на моем WSL:
$ кошка /etc/hosts
# Этот файл был автоматически сгенерирован WSL. Чтобы остановить автоматическое создание этого файла, добавьте следующую запись в /etc/wsl.conf:
# [сеть]
# генерировать хосты = ложь
127.0.0.1 локальный хост
127.0.1.1 <УДАЛЕНО - имя компьютера>
я"
74.121.<УДАЛЕНО> <УДАЛЕНО - корпоративный сервер>
192.168.0.170 хост.докер.внутренний
192.168.0.170 шлюз.докер.внутренний
127.0.0.1 кубернетес.докер.внутренний

# Следующие строки желательны для хостов с поддержкой IPv6
::1 ip6-localhost ip6-loopback
fe00::0 ip6-локальная сеть
ff00::0 префикс ip6-mcast
ff02::1 ip6-все узлы
ff02::2 ip6-все маршрутизаторы

и это мой /и т.д./хосты в моем контейнере разработки:

$ кошка /etc/hosts
127.0.0.1 локальный хост
::1 локальный хост ip6-localhost ip6-loopback
fe00::0 ip6-локальная сеть
ff00::0 префикс ip6-mcast
ff02::1 ip6-все узлы
ff02::2 ip6-все маршрутизаторы
172.19.0.2 1376e18baa2d
  • Это мое /etc/resolv.conf на моем WSL:
$ кошка /etc/resolv.conf
# Этот файл был автоматически сгенерирован WSL. Чтобы остановить автоматическое создание этого файла, добавьте следующую запись в /etc/wsl.conf:
# [сеть]
# generateResolvConf = false
сервер имен 172.24.176.1

и это мой /etc/resolv.conf в моем контейнере для разработчиков:

$ кошка /etc/resolv.conf 
сервер имен 127.0.0.11
параметры ndots:0
  • Как уже упоминалось, я могу разрешать другие домены, такие как google.com, в моем контейнере разработки:
$ копать +следить google.com

; <<>> DiG 9.16.1-Ubuntu <<>> +trace google.com
;; глобальные параметры: +cmd
. 164561 В NS d.root-servers.net.
. 164561 В NS e.root-servers.net.
. 164561 В NS f.root-servers.net.
. 164561 В NS g.root-servers.net.
. 164561 В NS h.root-servers.net.
. 164561 В NS a.root-servers.net.
. 164561 В NS i.root-servers.net.
. 164561 В NS j.root-servers.net.
. 164561 В NS k.root-servers.net.
. 164561 В NS l.root-servers.net.
. 164561 В NS m.root-servers.net.
. 164561 В NS b.root-servers.net.
. 164561 В NS c.root-servers.net.
;; Получено 811 байт от 127.0.0.11#53(127.0.0.11) за 20 мс.

ком. 172800 В NS l.gtld-servers.net.
ком. 172800 В NS b.gtld-servers.net.
ком. 172800 В NS c.gtld-servers.net.
ком. 172800 В NS d.gtld-servers.net.
ком. 172800 В NS, например, gtld-servers.net.
ком. 172800 В NS f.gtld-servers.net.
ком. 172800 В NS g.gtld-servers.net.
ком. 172800 В NS a.gtld-servers.net.
ком. 172800 В NS h.gtld-servers.net.
ком. 172800 В NS i.gtld-servers.net.
ком. 172800 В NS j.gtld-servers.net.
ком. 172800 IN NS k.gtld-servers.net.
ком. 172800 В NS m.gtld-servers.net.
ком. 86400 В ДС 30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
ком. 86400 IN RRSIG DS 8 1 86400 20220608050000 20220526040000 47671 . U/z96yxHnZx3nwEda11jaJom4DJC7fOBt4zsn8fC5ep60RfzAwMj1q8Y 4E4jRlSI28vFuiamNG2uuMAPO/lEUUYuHtYtNsHXnzBKcaDDVK1B3wCA VzEKAQwfh9knPSaD9vCRFfi7nGJWALJbKO3488gz1uBywWu7YQPDDfPp FB/whBsl7/yQihidbbNTbCfQ/oAd88bAq1eFt9tGSL6Wyf0jwp1aeWMd DuM+HcLjyR/7rtBa4YCKob3XniEn+NoavFuikKFJU1Nie1V83ZRU1Xcs OevXYQgT53P857tldjpEM/Lyp70+XgFMJXLoPCe0MfsMqoabiuIiDxyQ vUA5Mg==
;; Получено 1170 байт от 192.203.230.10#53(e.root-servers.net) за 20 мс

google.com. 172800 В NS ns2.google.com.
google.com. 172800 В NS ns1.google.com.
google.com. 172800 В NS ns3.google.com.
google.com. 172800 В NS ns4.google.com.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com.86400 В NSEC3 1 1 0 — CK0Q2D6NI4I7EQH8NA30NS61O48UL8G5 NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20220530082513 20220523071513 37269 ком. rGFmb7KWfFWLa2wdegU/hcqoDHxSKwJUkbj6DMSYfkHrwKot/T2EROZQ RF5KJtD3Ae6u7xRPIqGft5rvKOPQD40klXtYrMmMv23rCwXaHjGkdtez HLFl8//cjwFArN7MQZlUdGqDiFDHRIFP7gj9vJ/f+E9wrZs5zmsGy/We J+5hwjAyDh+GDCvNxTnJcmsRGOVJsdPmSlL7KrTiWOMRBA==
S84BKCIBC38P58340AKVNFN5KR9O59QC.com. 86400 IN NSEC3 1 1 0 - S84BUO64GQCVN69RJFUO6LVC7FSLUNJ5 NS DS RRSIG
S84BKCIBC38P58340AKVNFN5KR9O59QC.com. 86400 IN RRSIG NSEC3 8 2 86400 20220601051858 20220525040858 37269 ком. hM5qmz0t0spOwBlaXh4fROrcKNjN3urcmJ3AnAA/NCMGyMJEOKS/r+LF R3Qf3hNRB6dgCN0sL3LAfH9QDMHPbLhfgsga1jBCEjP25fvjb7QW43ey yVOSeQzBaVFdV86vhalBhkANzDNXtsnaSGuWVAbsGcXjalBa3EhcXAE2 Fnlvzyu+nRavl0R6iJEjY2hV1kJxXSJ+RWOw/HVlSWvgWQ==
;; Получено 836 байт от 192.12.94.30#53 (например, gtld-servers.net) за 30 мс.

google.com. 300 В А 142.250.68.14
;; Получено 55 байт от 216.239.38.10#53(ns4.google.com) за 80 мс.
  • Когда я запускаю тот же контейнер разработки из Docker для Windows с использованием драйвера Hyper-V (т. е. не из докера WSL), домен api.nuget.org разрешается очень хорошо. Кроме того, когда я запускаю контейнер разработки docker-for-docker из того же репозитория в моем докере WSL, все работает нормально. Наконец, (и это относительно очевидно), если я настроил свою сеть для создания докеров на использование сетевого режима «хост», все работает нормально.

Извините за длинное сообщение, просто хочу предоставить как можно больше информации. Любая помощь в том, что исследовать дальше, будет высоко оценена!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.