Skip to content

Instantly share code, notes, and snippets.

@kirilkirkov
Created September 8, 2015 13:55
Show Gist options
  • Save kirilkirkov/0240037f8df40bf8af46 to your computer and use it in GitHub Desktop.
Save kirilkirkov/0240037f8df40bf8af46 to your computer and use it in GitHub Desktop.
Работа с 'Dig' под Linux
Dig (domain information groper) е програма за Linux също както е nslookup за Windows. Тя е малко по мощна. Тук са описани някои възможности за използването и, заявки към различни nameserver-и, заявки към специфични записи на nameserver (A, AAAA, MX, CNAME, TXT) и други.
Инсталиране на dig
Ако работите с Red Hat базирана дистрибуция (centos, fedora, red hat), може да използвате yum:
yum install bind-utils
За всяка Debian базирана е apt-get:
apt-get install bind-utils
А за тези които използват Gentoo (emerge bind-tools).
Базова работа с dig
Това е базово използване на dig за взимане на записите на nameserver-а на определен домейн. Тази заявка най-вероятно ще бъде направена към nameserver-ите на вашият ISP, или тези които са предвидени за вас от вашата фирма.
Командата е следната: dig ma.ttias.be. Тя ще направи заявка за получаване на записите за домейн "ma.ttias.be".
$ dig ma.ttias.be
; <<>> DiG 9.3.4-P1 <<>> ma.ttias.be
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48084
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;ma.ttias.be. IN A
;; ANSWER SECTION:
ma.ttias.be. 78003 IN CNAME mattiasgeniar.be.
mattiasgeniar.be. 78003 IN A 193.239.210.183
;; AUTHORITY SECTION:
mattiasgeniar.be. 78003 IN NS ns.mattiasgeniar.be.
;; ADDITIONAL SECTION:
ns.mattiasgeniar.be. 78003 IN A 193.239.210.183
;; Query time: 9 msec
;; SERVER: 193.239.211.254#53(193.239.211.254)
;; WHEN: Fri Aug 29 20:06:27 2008
;; MSG SIZE rcvd: 101
Сега е време да анализираме цялата заявка от програмата.
;; QUESTION SECTION:
;ma.ttias.be. IN A
Question Section е копие на нашето искане до namerserver-а. Ние питаме кой A запис принадлежи на хоста "ma.ttias.be". Това е обикновенна заявка която се пуска ако не искаме някакви допълнителни настройки различни от име на хоста.
;; ANSWER SECTION:
ma.ttias.be. 78144 IN CNAME mattiasgeniar.be.
mattiasgeniar.be. 78144 IN A 193.239.210.183
Този отговор ни казва, че "ma.ttias.be" е CNAME запис, който сочи към хоста "mattiasgeniar.be", а неговият A запис води към IP адрес 193.239.210.183.
Този вид конфигурация обикновенно се прави при дефиниране на 1 A запис който води към някакъв IP Адрес и взимане на всички CNAME "*.mattiasgeniar.be" които водят до същото IP. Това ви спестява много време ако решите да преместите сайта си, тогава е неубходимо само да смените IP адреса (дефиниран в A записа), а не няколко отделни A записи.
;; AUTHORITY SECTION:
mattiasgeniar.be. 78003 IN NS ns.mattiasgeniar.be.
NS Записът ни показва коя машина е отговорна за този домейн, в този случей сървърът се намира в "ns.mattiasgeniar.be". Nameserver-ът на този адрес е авторитетният name server и че бъде открит когато някой се опита да намери домейна "ma.ttias.be".
;; ADDITIONAL SECTION:
ns.mattiasgeniar.be. 78003 IN A 193.239.210.183
Това ни казва, че авторитетният nameserver "ns.mattiasgeniar.be" е на IP адрес 193.239.210.183. По подразбиране Additional section ще направи проверка за хоста който е в Aluthority section.
Повече информация, по-малък отговор: +short
Ако този отговор е прекалено голям, ако искате само проста справка може да я съкратите със слагане на +short параметъра.
$ dig +short ma.ttias.be
193.239.210.183
Много хитър трик е да използвате +short +noshort флаговете в едно и също време. Това ще ви даде неубходимата информация на един ред.
$ dig +short +noshort ma.ttias.be
ma.ttias.be. 3134 IN A 31.193.180.217
За да направиме това по лесно за използване, добавете alias в вашият .bashrc файл.
alias dig='dig +short +noshort'
Сега можете просто да използвате dig и да вземете съкратеният резултат.
$ dig ma.ttias.be
ma.ttias.be. 3007 IN A 31.193.180.217
(wink)
Използване на dig за заявка към определен запис
Сега, за по специфични неща. Да кажеме че искате да направите заявка към nameserver-ите за MX записа на домейн ? Това може да стане лесно с дефиниране на типа на записа в dig командата. Просто добавете "MX" на края на заявката, за MX записи.
$ dig ma.ttias.be MX
....
;; ANSWER SECTION:
ma.ttias.be. 77269 IN CNAME mattiasgeniar.be.
mattiasgeniar.be. 17124 IN MX 10 mail.mattiasgeniar.be.
....
Отговорът на заявката лъже в Answer section. Това ви казва, че MX записът води до "mail.mattiasgeniar.be", и че има преоритет от 10. Тъй като има само 1 MX запис преоритетът няма значение тук.
Ако са няколко MX записа, това означава че повече от 1 mailserver е конфигуриран да получава имейли за този домейн. Върнатият преоритет ще определи кой mail сървър ще бъде свързан първи за да се достави email-а. Mailserver-а с най-малък преоритет ще бъде свързан първи.
Ако има няколко MX записа с еднакакъв преоритет връзка ще е на случаен избор. Тази техника се казва Round Robin и често се използва за разпределяне на натоварването на 2 или повече mail сървъра без да е неубходим loadbalancer.
Заявка до определен nameserver
Също може да използвате dig за заявки към други nameserver-и и да видите каква информация те държат за домейн. Това може да ви помогне за да се заобиколят (понякога продължителни) DNS актуализаций на вашият ISP и да се видят дали nameserver-ите са конфигурирани правилно.
$ dig ma.ttias.be @ns1.nucleus.be
....
С използването на @, може да изберете кой nameserver искате да попита вашата заявка. В този случай ние питаме "ns1.nucleus.be" къде сочи "ma.ttias.be".
Това дава възможност за някой комбинаций, какво ще стане ако искаме да видим MX записите на домейн, правиме заявката до различен nameserver от този по подразбиране (дефиниран в /etc/resolv.conf) и искаме кратък отговор ?
$ dig ma.ttias.be @ns1.nucleus.be MX +short
mattiasgeniar.be.
10 mail.mattiasgeniar.be.
Просто сложете всички параметри в ляво един след друг. Тази заявка ще попита nameserver "ns1.nucleus.be" за MX записите на домейна и +short параметъра ще ни върне пълна информация в кратък вариянт.
Reverse DNS с dig
Също може да използвате dig за заявки към reverse DNS записи (PTR записи) на определен IP адрес. За да го направите сложете -x флага.
$ dig -x 31.193.180.217
...
217.180.193.31.in-addr.arpa. 2495 IN PTR ma.ttias.be.
Флагове върнати от резултата на dig
Ако сте забелязали всеки път когато заявка към домейн с dig, имаме допълнителна информация в header-а на резултата (в дясно точно преди отговорът на завката да бъде показан).
$ dig ma.ttias.be @ns1.mattiasgeniar.be
; <<>> DiG 9.3.4-P1 <<>> ma.ttias.be @ns1.mattiasgeniar.be
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21271
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
Тук имаме флагове. Но какво точно означават в DNS термини ?
AA: Authorative Answer: nameserver-ът който отговаря на заявката е authorative (отговорен) nameserver за този домейн. Записите които се виждат от заявката са тези които ще се видят на всякъде.
RD: Recursion Desired: Желана рекурсия (виж в примера долу).
RA: Recursion Available: Имаме рекурсия.
QR: Query Response: отговорът който имаме изглежда разумен и може би е реален.
Заявки към главните nameserver-и
Показването на "recursion" означава на DNS термин , това е nameserver заявката за домейн "mattiasgeniar.be", когато я задъдем към някой от главните сървъри.
$ dig @a.root-servers.net ma.ttias.be
; <<>> DiG 9.3.4-P1 <<>> @a.root-servers.net ma.ttias.be
; (2 servers found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4954
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 9, ADDITIONAL: 10
;; QUESTION SECTION:
;ma.ttias.be. IN A
;; AUTHORITY SECTION:
be. 172800 IN NS BRUSSELS.NS.DNS.be.
be. 172800 IN NS MILANO.NS.DNS.be.
be. 172800 IN NS C.NS.DNS.be.
be. 172800 IN NS AMSTERDAM.NS.DNS.be.
be. 172800 IN NS PRAGUE.NS.DNS.be.
be. 172800 IN NS B.NS.DNS.be.
be. 172800 IN NS LONDON.NS.DNS.be.
be. 172800 IN NS X.DNS.be.
be. 172800 IN NS A.NS.DNS.be.
Информацията тук.. Първо "authority section" ни казва nameserver-ите за домейна от най-горно ниво .BE .Тези namesеrver-и са проверени за правилна nameserver проверка. Флагър "rd" означава "recursion desired", и ни казва, че трябва да попитаме дадените "Authority section" nameserver-и защото root namserver-ите не могат да ни върнат отговор.
@kirilkirkov
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment