Клиентэд резолвер хаяг өгөх нь асуулгууд хаашаа явахыг тодорхойлдог, резолвер аль эх сурвалжийг харахыг биш. Чиглүүлэлт, дамжуулалт, орчуулга хоёр үзүүрийн хооронд ээлжлэн ажиллана. Эх сурвалжийн асуултын гарын авлага асуулгыг алхам алхмаар дагаж, ажиглагч бүр үнэхээр юу харсныг тэмдэглэдэг. Дараалал чухал, учир нь ажиглалтын өмнө хэлсэн мэдэгдэл нь зөвхөн илүү сайн форматласан таамаг юм.

Нотолгоо цуглуулахаас өмнө зохицуулалтыг бичээрэй

Дөрвөн газар DNS эх сурвалжийн талаар танд ямар нэг зүйл хэлж чадна, бүгд ижил зүйл хэлдэггүй. Клиентийн цөм аль эх сурвалжийг ашиглахаа мэддэг, форвардер дээшээ юу илгээснээ мэддэг, орчуулагч төхөөрөмж юуг дахин бичсэнээ мэддэг, хүлээн авагч резолвер юу ирснийг мэддэг. Ямар нэг зүйл цуглуулахаас өмнө тэдгээрийн аль руу нь үнэхээр хүрч чадахаа бичээрэй.

Observation pointWhat it can proveWhat it cannot proveHow to read it
client kernelwhich source address it would use for that resolveranything a device in between rewroteip route get against the resolver address
forwarderthat it sent an upstream query, and from which sourcewhat the client originally asked forits own log and its cache state
translating devicethat a source was rewritten, and to whatwhether the query was legitimateNAT policy and its counters
receiving resolverthe address that actually arrivedwhich client behind that address askeda scoped capture on port 53

Хүлээлтээ ч бичээрэй, хэрэглэж байна гэж бодож буй резолверээ оруулан. Хуваагдсан зам асуулгыг огт өөр газар илгээж болно, кэш дээшээ ямар ч солилцоогүйгээр хариулж болно, тиймээс зөвхөн ойд хадгалсан таамаг эхний гэнэтийн зүйлийг давахгүй. Зарласан загвар болон ажиглагдсан замыг нэг тэмдэглэлийн тусдаа баганад байлгаарай; хоёр нь тохирохгүй бол мөрдөх үнэ цэнэтэй асуултыг олсон байна.

Асуулгыг үнэхээр аль процесс илгээснийг шалгаарай

Клиентээс эхлээрэй: резолвер хаяг, асуулгын нэр, цагийг бичээд дараа нь аль процесс илгээснийг баталгаажуулаарай. Доорх эхний мөр UDP сокетыг эзэмшиж буй процессыг нэрлэдэг бөгөөд энэ нь энэ гарчиг амласан шалгалт юм. Хэрэв тэр процесс системийн резолвер биш харин хөтчийн туслах эсвэл контейнерийн гүйцэтгэх орчин бол мөрийн үлдсэн хэсэг хэн ч хүсээгүй замыг дүрсэлнэ.

ss -tunp 'dport = :53'
dig @10.20.30.53 host.corp.example +noall +answer
ip route get 10.20.30.53

Хэд хэдэн интерфейстэй хост дээр өөр газар харахаас өмнө цөм тухайн очих газарт аль эх хаягийг сонгодгийг тодруулаарай. Энэ бол зам бүрэн таны хяналтад байх сүүлчийн цэг бөгөөд резолверийн мэдээлсэнтэй харьцуулах утга юм. Зөрүү нь дунд нь ямар нэг зүйл пакетыг дахин бичсэн эсвэл хоёр өөр асуулга илгээсний дохио.

Тестийн нэрсийг дотоод байлгаарай, учир нь нээлттэй резолверт илгээсэн дотоод нэр дотоод замын талаар юу ч нотлохгүй бөгөөд нийтлэх шаардлагагүй нэрийг нийтэлдэг. Аюулгүй DNS асаалттай хөтөч тэр сокетын жагсаалтад огт харагдахгүй бөгөөд тэр байхгүй байдал нь өөрөө хариулт.

Форвардер хоёр дахь, тусдаа асуулга хийдэг

Форвардер нэг солилцоог хоёр болгодог. Доороос хүсэлт ирээд дараа нь форвардер өөрийн асуулгыг өөрөө сонгосон хаягаас дээшээ илгээдэг. Дээд резолвер юу харахыг клиент биш, түүний тохиргоо шийддэг.

dnsmasq гарын авлага яг энэ шалтгаанаар унших үнэ цэнэтэй: форвардер дээд серверүүдийг хэрхэн сонгож, сонсох талаа хэрхэн холбодгийг баримтжуулдаг бөгөөд энэ зохицуулалтад юу ч клиентийн эх сурвалжийг дээшээ зөөдөггүй. Тиймээс гарцын хаяг харуулсан резолверийн бүртгэл хэвийн, гэмтлийн нотолгоо биш. Байхгүй байдлыг ч мөн адил амархан буруу уншина, учир нь кэшийн цохилт дээшээ ямар ч асуулга үүсгэдэггүй бөгөөд хэзээ ч ирээгүй асуулгатай яг адилхан харагддаг. Хоёр дүгнэлтийн аль нэгийг гаргахаас өмнө форвардерын тохиргоо болон түүний кэшийн төлөвийг уншаарай. Хоёр асуулт, харах хоёр газар.

Эх сурвалжийг хүлээн авагч резолверээс уншаарай

Үүнийг шийдэх цорын ганц ажиглалт серверийн талд авдаг. Клиентийн интерфейсийн жагсаалтаас гаргасан бүхэн резолвер үнэхээр юу ирснийг мэдээлэх хүртэл таамаг хэвээр байна.

tcpdump -ni any port 53 and host 10.20.30.53

Резолвер хост дээр бичээд, бичлэгийг богино, хязгаарлагдмал байлгаж, бодлого зөвшөөрсөн газар хадгалаарай. Хэрэв ажиглагдсан эх сурвалж орчуулагдсан хаяг бол дараагийн асуулт нь орчуулгыг аль төхөөрөмж хийсэн, түүний бодлого нь зорьсон эсэх юм. Бичлэг юу ирснийг хариулна; бодлого яагаад зөвшөөрснийг тайлбарлахгүй. Тэмдэглэлд ажиглагч болон алхмыг нэрлээрэй, учир нь гарцын тухай нууцлалын мэдэгдэл нь тэр алхмын тухай, бүх замын тухай биш.

Олдсон зүйлийг хаяг биш, зам хэлбэрээр бичээрэй

Клиент, резолвер, аливаа форвардер, алхам бүрд ажиглагдсан эх сурвалж болон түүнийг удирдах бодлогыг бичээрэй. Ийм бүртгэл ирээдүйн ихэнх асуултад шинэ бичлэггүйгээр хариулна. Үүнийг гинжин хэлхээ хэлбэрээр зур, учир нь хаягийн жагсаалт аль алхам алийг үүсгэснийг нуудаг.

Зурагт огноо, клиентийн хувилбар, тохиргооны засварыг хавсаргаарай, ингэснээр хожим уншигч энэ нь хүчинтэй эсэхийг хэлж чадна. Тээврийн эх сурвалжийг үйлчилгээ боловсруулдаг бусад бүхнээс тусгаарлаарай, учир нь гарцын хаяг харах нь өөр юу хадгалагдаж байгаа талаар юу ч хэлэхгүй. Резолверийн байршил ч аль клиент асуусан талаар юу ч хэлэхгүй. Эдгээр мэдэгдлийг тусдаа байлгах нь дүгнэлтийг хяналтад хамгаалах боломжтой болгодог.

Холбоотой нийтлэлүүд