Функции для работы с DNS
DNS (Domain Name Service, Domain Name Space, Domain Name System - в разных источниках по-разному) - это служба доменных имён, хранящая соответствия IP-адресов и имён узлов. Фактически, когда Вы вводите в бразуер, например, "myrusakov.ru" браузер не знает, к чему подключаться, и обращается к DNS-серверу, который, зная имя узла, передаёт IP-адрес. Также сервер занимается и обратной операцией, то есть по IP-адресу он выдаёт имя узла. В PHP есть функции для работы с DNS, и о них мы поговорим прямо сейчас.
Впервую очередь, необходимо понять, что на одном IP-адресе может находиться сразу много доменных имён, поэтому какое именно доменное имя Вам, в конечном итоге, вернёт сервер, зависит только от него. Верно и обратное утверждение о том, что одному доменному имени может соответствовать сразу несколько IP-адресов.
В связи с этим, не всегда функции для работы с DNS будут вести себя корректно, но всё-таки знать их полезно:
<?php
$ip = gethostbyname("vk.com");
echo $ip;
echo "<br />";
echo gethostbyaddr($ip);
echo "<br />";
print_r(gethostbynameL("vk.com"));
?>
Функция gethostbyname() принимает имя узла и возвращает IP-адрес. А функция gethostbyaddr() принимает IP-адрес и возвращает имя узла (имя сервера). Как я уже говорил, у одного имени узла может быть много IP-адресов, и чтобы получить список всех IP-адресов у данного узла, существует функция gethostbynameL(). В примере весь массив выводится через отладочную функцию print_r().
Таким образом, использовать функции для работы с DNS не составит никакого труда. Использовать же их можно, например, для защиты от ddos-атак, когда программно можно заблокировать все IP-адреса злоумышленников, а не 1 конкретный адрес.
-
- Михаил Русаков
Комментарии (6):
Пригодится, спасибо !
Ответить
Здравствуйте, Михаил. Напишите пожалуйста статью про Ddos-атаки и как от них защититься.
Ответить
Постараюсь написать к среде.
Ответить
Огромное спасибо.
Ответить
Здравствуйте Михаил! можете подсказать мне нужно подключиться к базе DNSBL-серверов, с своего сайта и осуществлять проверку IP адреса, есть ли он в этой базе и если нету то добавить его как это можно сделать?
Ответить
может эту функцию сюда прилепить "checkdnsrr"?
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.