ip netns exec и DNS: зашто имена не раде унутар именског простора
Именски простор има своје интерфејсе и руте, али нема своју датотеку разрешивача. Проверите коју resolv.conf види покренути процес и одакле та датотека долази.
Команда стиже до 10.8.0.5 унутар VPN именског простора без икакве жалбе, а иста команда пада у тренутку када употреби име хоста. Именски простор има своје интерфејсе, руте и сокете; нема своју датотеку разрешивача. Ако нешто не стави једну тамо, процес унутра чита /etc/resolv.conf хоста и пита сервер који можда није доступан из тог мрежног стека.
Ово је проблем избора датотеке, а не проблем рутирања, и управо зато нумеричко одредиште и даље ради.
Проверите поглед разрешивача који процес заиста добија
Не претпостављајте да је љуска коју сте користили једнака процесу који отклањате грешке. Графичка апликација, systemd јединица и контејнер могу сваки да уђу у другачији контекст монтирања или мреже. Покрените претрагу истим путем покретања и одштампајте датотеку разрешивача изнутра.
За именски простор направљен помоћу ip netns add, провера само за читање је кратка:
ip netns exec vpn cat /etc/resolv.confОбратите пажњу да ли резултат наводи доступну адресу, loopback stub или симболичку везу која показује на место са другачијом доступношћу.
Шта exec помоћник заправо монтира
Алат ip-netns документује конфигурацију по именском простору под /etc/netns/NAME/. Када покрене процес, помоћник ствара именски простор за монтирање и монтира те датотеке преко њихових уобичајених путања, па процес види копију специфичну за именски простор. То је погодност овог конкретног покретача. Улазак у мрежни именски простор другим путем, попут unshare или контејнерског runtime-а, не репродукује то аутоматски.
Замка је овде разрешивач на loopback-у: 127.0.0.53 значи сопствени loopback именског простора, а не stub хоста. Stub који слуша само у именском простору хоста не постаје услуга у новом.
Изаберите разрешивач до којег именски простор може да стигне
Који год сервер датотека наведе, њему је и даље потребна рута из тог именског простора. Јавни разрешивач може да одговара на јавна имена и ипак падне за интерну зону, јер је приватна услуга доступна само кроз тунел. Проверите руту истовремено са адресом, а не након што је претрага већ пала.
Апликације са сопственим разрешивачем, попут оне која користи DNS over HTTPS, могу потпуно да занемаре датотеку. Ако алат има сопствено DNS подешавање, промена resolv.conf неће на њега утицати, а именски простор никада није био проблем.
Упишите датотеку на право место
Направите датотеку за именски простор под /etc/netns/NAME/resolv.conf и пустите покретач да је представи. Држите је минималном: један или два доступна сервера и домени претраге који задатку требају. Не уређујте генерисану датотеку разрешивача хоста да бисте поправили поглед намењен једној групи процеса, јер то мења сваку апликацију на машини. Ако хост користи менаџер разрешивача, конфигуришите путању именског простора кроз тај менаџер уместо да се борите с њим.
Забележите садржај датотеке у runbook. Иначе ће следећа особа тестирати разрешивач хоста, видети одговор који ради и закључити да је именски простор у реду.
Поново тестирајте целу путању
Тестирајте унутар именског простора са нумеричком адресом, интерним именом и јавним именом. Тај след раздваја доступност од разрешавања и раздваја интерне зоне од јавних. Затим поново направите именски простор и поновите, јер датотека која постоји само у покренутој инстанци нестаје с њом.
Потврдите да датотеку прима процес, а не љуска. Претрага која ради из интерактивне љуске и пада из услуге је налаз о контексту монтирања, и вреди га записати пре следећег инцидента уместо да га поново откривате од нуле.