DNS кеширане

Помощен център

DNS кеширане

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

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

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

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

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

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

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

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

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

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

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

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

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

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

dig +trace @4.2.2.1 icn.bg 

.           48114   IN  NS  e.root-servers.net.
.           48114   IN  NS  i.root-servers.net.
.           48114   IN  NS  f.root-servers.net.
.           48114   IN  NS  h.root-servers.net.
.           48114   IN  NS  l.root-servers.net.
.           48114   IN  NS  g.root-servers.net.
.           48114   IN  NS  c.root-servers.net.
.           48114   IN  NS  j.root-servers.net.
.           48114   IN  NS  b.root-servers.net.
.           48114   IN  NS  d.root-servers.net.
.           48114   IN  NS  m.root-servers.net.
.           48114   IN  NS  a.root-servers.net.
.           48114   IN  NS  k.root-servers.net.

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

bg.         172800  IN  NS  ns5.register.bg.
bg.         172800  IN  NS  ns2.register.bg.
bg.         172800  IN  NS  ns.register.bg.
bg.         172800  IN  NS  sns-pb.isc.org.
bg.         172800  IN  NS  ns3.register.bg.
bg.         172800  IN  NS  ns4.register.bg.

;; Received 796 bytes from 192.36.148.17#53(i.root-servers.net) in 63 ms

icn.bg.         345600  IN  NS  ns7.icndns.net.
icn.bg.         345600  IN  NS  ns39.icndns.net.
icn.bg.         345600  IN  NS  ns8.icndns.net.
icn.bg.         345600  IN  NS  ns40.icndns.net.

;; Received 313 bytes from 192.92.129.99#53(ns.register.bg) in 29 ms

icn.bg.         100 IN  A   195.69.164.134
icn.bg.         60  IN  NS  ns39.icndns.net.
icn.bg.         60  IN  NS  ns40.icndns.net.
icn.bg.         60  IN  NS  ns7.icndns.net.
icn.bg.         60  IN  NS  ns8.icndns.net.

;; Received 199 bytes from 79.124.30.8#53(ns8.icndns.net) in 27 ms

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

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

dig  icn.bg 
;; QUESTION SECTION:
;icn.bg.                IN  A
;; ANSWER SECTION:
icn.bg.         100 IN  A   195.69.164.134
;; Query time: 40 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)

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

В конкретния пример DNS кеширането върна резултата близо 5 пъти по-бързо спестявайки и процесорен ресурс, и време, тъй като заявката не измина всички описани по-горе стъпки в резолването на търсения 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 протокол.

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

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