DNS кеш и DNS кеширане

DNS кешът (понякога наричан DNS resolver cache) е временна база данни, поддържана от операционната система на компютъра, която съдържа DNS записи от всички последно посетени уебсайтове и други интернет домейни.

С други думи, DNS кешът е само спомен за последните търсения в DNS, на които компютърът може бързо да се позове, когато се опитва да разбере откъде да зареди даден уебсайт.

Повечето потребители свързват фразата DNS кеш само с изчистването на DNS кеша при отстраняването на проблем с интернет връзката.

В тази статия ще се убедите колко важен елемент от работата на DNS системата е кеширането.

Как работи DNS без кеширане?

Интернет разчита на системата за домейни (DNS), за да поддържа индекс на всички сайтове и техните съответни IP адреси. Много удачно е популярното сравнение с телефонния указател.

Телефонният указател ни избавя от нуждата да запомняме всеки номер, с който желаем да се свържем, тъй като телефоните комуникират само чрез номера.

По същия начин DNS ни помага да се свързваме с произволни сайтове, без да е необходимо да помним IP адреса на всеки сайт, тъй като интернет устройствата комуникират чрез IP адреси.

Ето какво се случва когато се свързвате с уебсайт през Вашия браузър:

  • Въвеждате домейна superhosting.bg като URL и уеб браузърът пита DNS резолвера на операционната система за IP адреса на сайта.
  • DNS резолверът пита рутера.
  • Рутерът пита DNS сървъра на интернет доставчика.
  • Запитването се препраща към root сървърите.
  • Някой от root сървърите отговаря с TLD неймсървърите на .bg зоната.
  • TLD неймсървърите посочват към Authoritative неймсървърите на superhosting.bg
  • DNS резолверът връща IP адреса на браузъра, HTTP заявката за ресурс се изпраща към сървъра и сайтът superhosting.bg се зарежда на монитора или дисплея на устройството.

Този дълъг ритуал би се повтарял всеки път, когато един интернет потребител желае да посети един уебсайт. Представете си на какво натоварване би била подложена DNS системата от стотици милиони потребители, денонощно търсещи информация в милиарди уеб страници и допълнителни интернет услуги.

Как работи DNS кеширането?

На всяка стъпка от описания процес DNS софтуерът има възможност да записва получените отговори в собствен кеш. Само ако няма кеширан запис или TTL времето на съществуващия запис е изтекло, тогава запитването се предава към следващия DNS сървър.

Ето как изглежда процесът на резолване, след като DNS сървърът на интернет доставчика изпрати запитване към root сървърите:

dig +trace @4.2.2.1 superhosting.bg

;; global options: +cmd
.            80472   IN  NS      a.root-servers.net.
.            80472   IN  NS      b.root-servers.net.
.            80472   IN  NS      c.root-servers.net.
.            80472   IN  NS      d.root-servers.net.
.            80472   IN  NS      e.root-servers.net.
.            80472   IN  NS      f.root-servers.net.
.            80472   IN  NS      g.root-servers.net.
.            80472   IN  NS      h.root-servers.net.
.            80472   IN  NS      i.root-servers.net.
.            80472   IN  NS      j.root-servers.net.
.            80472   IN  NS      k.root-servers.net.
.            80472   IN  NS      l.root-servers.net.
.            80472   IN  NS      m.root-servers.net.

;; Received 525 bytes from 4.2.2.1#53(4.2.2.1) in 64 ms

bg.         172800  IN  NS      a.nic.bg.
bg.         172800  IN  NS      b.nic.bg.
bg.         172800  IN  NS      c.nic.bg.
bg.         172800  IN  NS      d.nic.bg.
bg.         172800  IN  NS      e.nic.bg.
bg.         172800  IN  NS      p.nic.bg.

;; Received 743 bytes from 192.5.5.241#53(f.root-servers.net) in 19 ms

superhosting.bg.  86400  IN  NS  pns1.superhosting.bg.
superhosting.bg.  86400  IN  NS  pns2.superhosting.bg.

;; Received 611 bytes from 192.92.129.99#53(a.nic.bg) in 30 ms

superhosting.bg.  60      IN  A       91.196.125.21
superhosting.bg.  3600    IN  NS      pns2.superhosting.bg.
superhosting.bg.  3600    IN  NS      pns1.superhosting.bg.

;; Received 263 bytes from 195.191.149.253#53(pns2.superhosting.bg) in 14 ms

Към общото време 127 ms трябва да прибавим и времената на първите три запитвания между резолвера, рутера и ISP, които поради близостта си и по-малкия брой записи вероятно отнемат значително по-кратко време и можем да приемем, че в рамките на 150-200 ms завършва целия процес на резолване.

Сега нека изпълним същата заявка без да питаме резолвера 4.2.2.1, като по този начин се възползваме от възможно кеширане по пътя на запитванията:

dig superhosting.bg

;; QUESTION SECTION:
;superhosting.bg.        IN      A

;; ANSWER SECTION:
superhosting.bg.    30   IN      A       91.196.125.21

;; Query time: 21 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)

Общо време за връщане на резултат 21 msec и получихме отговор от локалния DNS кеш SERVER: 192.168.1.1#53.

В конкретния пример DNS кеширането върна резултата 6 пъти по-бързо спестявайки и процесорен ресурс, и време, тъй като заявката не измина всички описани по-горе стъпки в резолването на търсения IP адрес, а върна отговор от наличния DNS кеш.

Практически може да си представите ползата от DNS кеширането и по следния начин:

Вие решавате да си проверите профила във Facebook и в момента няма кеширан запис на IP адреса на най-близкия FB сървър, поради което заявката поема дългия протоколен път на резолване.

Вашият браузър получава IP адреса и се логвате в профила си, като същевременно всички останали DNS приложения също са кеширали резултата от Вашето запитване.

Ако сега друг член на Вашето семейство реши да си види FB профила, нейният/неговият браузър ще получи IP адреса на FB от DNS кеша на рутера.

Ако Вашият съсед, който ползва същия интернет доставчик (на практика всички клиенти на интернет доставчика от същата мрежа) ще получи IP адреса на FB от DNS кеша на доставчика.

Времето за кеширане на записите зависи от стойността на параметъра TTL (time-to-live), който се настройва от администраторите на DNS сървъра.

По този начин кеширането позволява резултатът от едно резолване да се ползва като авторитетен отговор за всички (може да са хиляди) запитвания за даден популярен и много посещаван сайт.

Съдържанието на локален DNS кеш може да се види на компютър с Windows OS с помощта на командата ipconfig/displaydns:

play.google.com
    ----------------------------------------
    Record Name . . . . . : play.google.com
    Record Type . . . . . : 5
    Time To Live  . . . . : 95
    Data Length . . . . . : 8
    Section . . . . . . . : Answer
    CNAME Record  . . . . : play.l.google.com

    Record Name . . . . . : play.l.google.com
    Record Type . . . . . : 1
    Time To Live  . . . . : 95
    Data Length . . . . . : 4
    Section . . . . . . . : Answer
A (Host) Record . . . : 216.58.206.206

В DNS A записът съдържа IP адреса (216.58.206.206) на посоченото хост име (play.google.com). При въвеждане в браузър на URL https://play.google.com DNS резолверът проверява и открива търсената информация в локалния DNS кеш и веднага връща отговора на браузъра.

DNS кеш отравяне

DNS кешът се отравя или замърсява, когато в него се вмъкне информация за домейни и уж съответните им IP адреси, която обаче не е получена по стандартния начин на резолване на имената.

Възможно е кеш паметта да се повреди поради технически или административни проблеми, но отравяне на DNS кеш обикновено се свързва с намеса на компютърни вируси или друг тип мрежови атаки, които записват невалидна информация в DNS кеша.

Отровените записи пренасочват заявките към умишлено въведени различни местоназначения, обикновено злонамерени уебсайтове или страници с реклами.

В примера play.google.com има А запис към IPv4 216.58.206.206. В случай на отравяне на кеша, за play.google.com ще има различен IPv4 адрес и Вашият браузър ще бъде пренасочен или към страница двойник, предназначена да събира данни за логване, или към рекламна страница, която в действителност не желаете да посетите.

Ако вместо URL на Google в горния пример, в отровения кеш има пренасочване на Вашата страница за онлайн банкиране и не обърнете внимание на различните URL адрес и SSL сертификат, може да се окажете жертва на фишинг атака, да въведете данните си за логване и да понесете сериозни финансови щети.

Изчистване на DNS кеш (flush dns)

Когато установите отравяне на DNS кеш или други проблеми с интернет връзката, най-добре е да изтриете локалния DNS кеш. Изтривайки целия DNS кеш, Вие изтривате и всички отровени записи в него и компютъра започва да резолва новите хост имена следвайки стандартния name resolution протокол.

Добра практика е веднага след изчистването на кеша да направите профилактика и сканиране на компютъра за вируси и зловреден софтуер.

Вижте подробна информация за изчистването на локалния DNS кеш.

Обновена: 12.10.2022
Беше ли Ви полезна тази статия?

Вижте още