Pratite DNS upit korak po korak kako biste pronašli pravi izvor
Nametnuta adresa resolvera ne odlučuje koji će izvor resolver vidjeti. Pratite klijenta, prosljeđivač i poslužitelj koji prima, a zatim zapišite put.
Davanje klijentu adrese resolvera određuje kamo se upiti šalju, a ne koji će izvor resolver vidjeti. Usmjeravanje, prosljeđivanje i prevođenje imaju svaki svoj red između dvaju krajeva. Priručnik za pitanja o izvoru prati upit korak po korak i bilježi što je svaki promatrač stvarno vidio. Redoslijed je važan jer je tvrdnja iznesena prije promatranja samo nagađanje u boljem formatu.
Zapišite raspored prije nego što počnete prikupljati dokaze
Četiri mjesta mogu vam reći nešto o DNS izvoru i ne kažu sva isto. Jezgra klijenta zna koji bi izvor koristila, prosljeđivač zna što je poslao prema gore, uređaj koji prevodi zna što je prepisao, a resolver koji prima zna što je stiglo. Zapišite do kojih od njih doista možete doći prije nego što bilo što prikupite.
| Observation point | What it can prove | What it cannot prove | How to read it |
|---|---|---|---|
| client kernel | which source address it would use for that resolver | anything a device in between rewrote | ip route get against the resolver address |
| forwarder | that it sent an upstream query, and from which source | what the client originally asked for | its own log and its cache state |
| translating device | that a source was rewritten, and to what | whether the query was legitimate | NAT policy and its counters |
| receiving resolver | the address that actually arrived | which client behind that address asked | a scoped capture on port 53 |
Zapišite i svoje očekivanje, uključujući resolver za koji mislite da je u uporabi. Razdijeljeni put može poslati upit posve drugamo, a predmemorija može odgovoriti bez ikakve razmjene prema gore, pa pretpostavka držana samo u sjećanju neće preživjeti prvo iznenađenje. Držite navedeni dizajn i promatrani put u odvojenim stupcima iste bilješke; kada se njih dvoje ne slažu, pronašli ste pitanje koje vrijedi slijediti.
Provjerite koji je proces upit stvarno poslao
Počnite kod klijenta: zapišite adresu resolvera, naziv upita i vrijeme, a zatim potvrdite koji ga je proces poslao. Prvi redak u nastavku imenuje proces koji drži UDP utičnicu, i to je provjera koju obećava ovaj naslov. Ako je taj proces pomoćnik preglednika ili runtime kontejnera umjesto sistemskog resolvera, ostatak traga opisuje put koji nitko nije tražio.
ss -tunp 'dport = :53'
dig @10.20.30.53 host.corp.example +noall +answer
ip route get 10.20.30.53
Na hostu s više sučelja najprije saznajte koju izvornu adresu jezgra odabire za to odredište prije nego što pogledate bilo gdje drugdje. To je posljednja točka na kojoj je put potpuno pod vašom kontrolom, i to je vrijednost koju ćete usporediti s onim što resolver izvješćuje. Neusklađenost je signal da je nešto između prepisalo paket ili da su poslana dva različita upita.
Držite testna imena interna, jer interno ime poslano javnom resolveru ne dokazuje ništa o unutarnjem putu i objavljuje ime koje niste trebali objaviti. Preglednik s uključenim sigurnim DNS-om uopće se neće pojaviti na tom popisu utičnica, a ta odsutnost je sama odgovor.
Prosljeđivač čini drugi, odvojeni upit
Prosljeđivač pretvara jednu razmjenu u dvije. Zahtjev odozdo stiže, a zatim prosljeđivač šalje svoj vlastiti upit prema gore s adrese koju odabere. Njegova konfiguracija, a ne klijent, odlučuje što gornji resolver vidi.
Priručnik dnsmasq vrijedi pročitati upravo zato: dokumentira kako prosljeđivač odabire poslužitelje prema gore i veže svoju stranu slušanja, a ništa u tom rasporedu ne nosi izvor klijenta prema gore. Zapis resolvera koji prikazuje adresu pristupnika stoga je normalan, a ne dokaz kvara. Odsutnost je jednako lako pogrešno pročitati jer pogodak u predmemoriji ne stvara nikakav upit prema gore i izgleda identično upitu koji nikada nije stigao. Pročitajte konfiguraciju prosljeđivača i stanje njegove predmemorije prije nego što izvedete bilo koji od tih dvaju zaključaka. Dva pitanja, dva mjesta za pogledati.
Pročitajte izvor na resolveru koji prima
Jedino promatranje koje to rješava uzima se na strani poslužitelja. Sve što se zaključi iz popisa sučelja klijenta ostaje hipoteza dok resolver ne izvijesti što je stvarno stiglo.
tcpdump -ni any port 53 and host 10.20.30.53
Snimite na hostu resolvera, držite snimku kratkom i ograničenom i pohranite je tamo gdje politika dopušta. Ako je promatrani izvor prevedena adresa, sljedeće je pitanje koji je uređaj obavio prijevod i je li njegova politika ona namjeravana. Snimka odgovara što je stiglo; ne objašnjava zašto je politika to dopustila. Imenujte promatrača i korak u bilješci jer se tvrdnja o privatnosti za pristupnik odnosi na taj korak, a ne na cijeli put.
Zapišite nalaz kao put, a ne kao adresu
Zapišite klijenta, resolver, svaki prosljeđivač, promatrani izvor na svakom koraku i politiku koja ga uređuje. Takav zapis odgovara na većinu budućih pitanja bez nove snimke. Nacrtajte ga kao lanac jer popis adresa skriva koji je korak dao koju.
Priložite crtežu datum, verziju klijenta i reviziju konfiguracije kako bi kasniji čitatelj mogao reći vrijedi li još. Odvojite transportni izvor od svega drugoga što usluga obrađuje jer pogled na adresu pristupnika ne govori ništa o tome što se još čuva. Ni lokacija resolvera ne govori ništa o tome koji je klijent pitao. Upravo držanje tih tvrdnji odvojenima čini zaključak obranjivim pri pregledu.