Прочистването на локалния DNS кеш може да разреши HTTP грешки и да ви предпази от DNS подправяне. Ето как можете да го направите на Linux.
Когато влезете в уебсайт, използвайки неговото име на домейн, вашата система изпраща заявка до DNS сървър, за да получи IP адреса за този домейн. Тази двойка домейн-IP адрес се запазва в DNS кеша за по-късна употреба, така че не е нужно да изпращате заявки към DNS сървъра всеки път, за да осъществите връзка.
Но понякога локалният DNS кеш се поврежда и причинява HTTP грешки. За щастие изчистването и повторното изграждане на DNS кеша на компютър с Linux е лесно. Ето как да го направите.
Защо да изчистите DNS кеша на Linux?
Има няколко причини, поради които може да искате да възстановите DNS кеша, съхранен във вашата система. Може би имате остарял DNS запис за уебсайт и искате да го изтеглите отново от DNS сървъра. Или може би вашата система е била компрометирана и искате да се уверите, че DNS кеша не е манипулиран също известен като DNS spoofing.
Когато изчистите вашия DNS кеш, системата трябва отново да пингва DNS сървъра и да получи новия запис на IP адрес на домейн от него, премахвайки всички остарели или компрометирани данни в процеса.
Как да видите локалния DNS кеш на Linux
Преди systemd повечето дистрибуции на Linux нямаха DNS кеширане за цялата система, освен ако програма като dnsmasq или nscd не беше настроена ръчно. systemd идва с systemd-resolved, услуга, която преобразува имена на домейни в IP адреси и кешира DNS записите.
Следващите раздели ще ви насочат как да видите съдържанието на DNS кеша, генерирано от systemd-resolved, nscd и dnsmasq, така че да можете да разберете кешираните данни, преди да решите да ги изчистите.
Преглед на DNS кеша за разрешаване на systemd
За да видите записите в кеша, разрешени от systemd, трябва първо временно да затворите услугата, след което да експортирате нейните регистрационни файлове във файл.
Започнете с изпращане на сигнал SIGUSR1, за да убиете услугата, разрешена от systemd:
sudo killall -USR1 systemd-разрешен
Използвайте командата journalctl и стандартния изходен оператор за запазване на изхода в текстов файл:
sudo journalctl -u systemd-resolved > ~/cache.txt
След това можете да видите съдържанието на файла с помощта на текстов редактор като Vim:
vim ~/cache.txt
Във файла потърсете "CACHE:", като натиснете бягство, пишете "/CACHE:“ и удряне Въведете. Всички DNS записи, изброени по-долу КЕШ: са част от локалния DNS кеш. Натиснете н за да преминете към следващия набор от DNS записи, ако използвате Vim.
Вижте локалния DNS кеш за nscd
За да видите локалния кеш, генериран от nscd, трябва да прочетете съдържанието на базата данни с хостове nscd, като използвате командата strings.
В дистрибуции, базирани на Debian и Ubuntu, този файл се намира на /var/cache/nscd/hosts. Изпълнете следната команда, за да видите файла:
sudo низове /var/cache/nscd/hosts | уникален
За да видите обща статистика за nscd DNS кеша, използвайте -g флаг:
sudo nscd -g
Показване на DNS кеша, генериран от dnsmasq
dnsmasq съхранява DNS кеша в паметта, така че не е лесно да получите точните записи. Но можете да изпратите сигнал за изключване на dnsmasq и да регистрирате изхода му, за да получите броя на обработените DNS заявки.
За да направите това, първо се уверете, че dnsmasq е готов и работи с помощта на командата systemctl:
sudo systemctl status dnsmasq
Ако състоянието показва Активен, изпълнете следната команда, за да убиете услугата:
sudo pkill -USR1 dnsmasq
С помощта на командата journalctl извлечете журналите dnsmasq и ги запазете в текстов файл:
sudo journalctl -u dnsmasq > ~/cache.txt
Накрая вижте съдържанието на файла с помощта на помощна програма за преглед на файлове като котка или по-малко:
cat ~/cache.txt
Как да изчистите DNS кеша на Linux
Изчистването на DNS кеша означава премахване на кешираните DNS записи от вашия компютър. Това го принуждава да изпрати заявка до DNS сървъра за извличане на новите DNS записи.
Ето как можете да изчистите DNS кеша на Linux:
Използване на systemd-resolved
Можете да използвате команда resolvectl, за да изчистите DNS кеша, съхраняван от systemd-resolved:
sudo resolvectl флеш-кешове
Ако използвате Ubuntu 17.04 или 18.04, използвайте командата systemd-resolved, за да изчистите кеша:
sudo systemd-resolved --flush-caches
Изчистете nscd DNS кеша на Linux
Най-удобният начин за премахване на DNS кеша за nscd е просто да рестартирате услугата. Можете да го направите, като стартирате:
sudo /etc/init.d/nscd рестартирайте
Ако това не работи, първо проверете дали локалният кеш, съхраняван на вашия компютър, е постоянен. Можете да използвате -g флаг, за да го потвърдите:
sudo nscd -g
Ако случаят е такъв, използвайте -и флаг с командата nscd за изчистване на записите (аз означава обезсилвам):
sudo nscd -i хостове
Премахнете dnsmasq DNS кеша
Прочистването на DNS кеша, генериран от dnsmasq, е лесно. Тъй като кешът се съхранява в паметта, рестартирането на услугата изтрива всички съхранени записи.
За да рестартирате dnsmasq, изпълнете следната команда systemctl:
sudo systemctl рестартирайте dnsmasq
Или издайте следната команда:
рестартиране на услугата dnsmasq
Въведете администраторската парола, ако бъдете подканени. dnsmasq сега ще се рестартира и всички ваши съществуващи DNS записи ще бъдат премахнати от кеша.
След като изчистите DNS кеша, най-добре е да видите записите в локалния кеш и да проверите дали данните са премахнати успешно. Можете да използвате dig, един от много Linux команди за отстраняване на неизправности в мрежатаи проверете стойността за време на заявка в изхода. Ако е повече от 0 msec, кешът е изчистен успешно (0 msec означава, че записът на домейна все още е в кеша).
копайте google.com
Изчистете DNS кеша на Google Chrome
Уеб браузърът, който често използвате, също кешира DNS записите. Когато въведете URL, системата търси запис в кеша в локалния кеш на браузъра. Ако не бъде намерен, той проверява за записите в локалния системен кеш. От решаващо значение е да изчистите DNS кеша на вашия уеб браузър, тъй като той има по-висок приоритет от кеша за цялата система.
За демонстрация нека изчистим DNS кеша в Google Chrome. Има начини да го направите и в други браузъри, така че е най-добре да потърсите в Google как да го направите за браузъра, който използвате.
За да започнете, напишете "chrome://net-internals/#dns“ в URL лентата и натиснете Въведете:
Кликнете Изчистване на кеша на хоста за да изчистите DNS записите, съхранени в Google Chrome.
Linux е най-добрата операционна система за изучаване на работа в мрежа
Linux може да изглежда сложен в началото, но ако инвестирате известно време, за да научите как работи, бързо ще разберете, че е фантастичен и може би дори по-добър от Windows или macOS.
Повечето онлайн сървъри работят с Linux и това е една от причините Linux да е идеален, ако искате да научите работа в мрежа или искате да знаете как работят компютрите като цяло.