У меня случалось так — интернет есть, но не работает, виноват оказывался провайдерский
DNS-сервер, тогда я прописывал другие сервера, гугла например (8.8.8.8, 8.8.4.4), но от них бывало приходилось ждать ответ
40+ms, конечно это неособо долго, но все же влияло на скорость загрузки страницы. И когда я начал использовать
Arch, подумал, а почему бы и не установить собственный кеширующий
DNS-сервер.
По началу я ставил
named, но, что-то пошло не так, и у меня с ним ничего не вышло, мой взгляд пал на
pdns, небольшой, быстрый и на [
http://habrahabr.ru/post/159013] его рекомендуют.
1. Устанавливаем
pacman -S pdnsd
2. Настраиваем:
/etc/pdnsd.conf
global {
perm_cache=2048; #Размер кэша, 2-3мб вполне достаточно, но никто не мешает сделать больше, например 10мб
cache_dir="/var/cache/pdnsd"; #Местоположение кеша
pid_file = /var/run/pdnsd.pid;
run_as="pdnsd"; #имя пользователя от кого будет работать служба
server_ip = any; #Сетевой интерфейс с которого можно будет получать запросы
status_ctl = on; #разрешить управление через pdnsd-ctl
# paranoid=on; #уменьшает шанс инъекций в запросах к dns
query_method=udp_tcp; #на каких протоколах слушать tcp и udp
min_ttl=60m; #минимальное время для хранения записи в кеше.
max_ttl=1w; #максимальная (1 неделя).
timeout=10; #таймаут запроса.
neg_domain_pol=on; #отрицательный кеш
udpbufsize=1024; #ограничение размера udp запроса
}
# The following section is most appropriate if you have a fixed connection to
# the Internet and an ISP which provides good DNS servers.
server {
label= "myisp"; #Название DNS серверов провайдера и интернета
ip = 80.64.109.227, 8.8.4.4, 8.8.8.8; # Put your ISP's DNS-server address(es) here.
# proxy_only=on; # Do not query any name servers beside your ISP's.
# This may be necessary if you are behind some
# kind of firewall and cannot receive replies
# from outside name servers.
timeout=4; # Server timeout; this may be much shorter
# that the global timeout option.
uptest=if; # Проверять ли жив сетевой интерфейс.
interface=eth0; # Интерфейс с которого будут посылаться запросы на следующие DNS
interval=10m; # Проверять каждый 10 минут.
purge_cache=off; # Оставлять в кеше, даже когда днс сервера ушли в офлайн
edns_query=yes; # Разрешает запросы свыше 512 байт
# exclude=.thepiratebay.org, # If your ISP censors certain names, you may
# .thepiratebay.se, # want to exclude them here, and provide an
# .piratebay.org, # alternative server section below that will
# .piratebay.se; # successfully resolve the names.
}
# This section is meant for resolving from root servers.
server {
label = "root-servers";
root_server = discover; # опрашивать root сервера для получения полного списка
randomize_servers = on; # давать равные шансы каждому серверу быть опрошенными
ip = 198.41.0.4,
192.228.79.201; #2х серверов достаточно для получения полного списка
timeout = 5;
uptest = query; # Вид теста для проверки сервера
# query_test_name = .; # To be used if remote servers ignore empty queries.
interval = 30m; # Проверять каждые полчаса
ping_timeout = 300; # Пинг проверять каждые 30 секуд
purge_cache = off; #сбрасывать кеш dns'a при достижение времени указанной в записи
# edns_query = yes; # Use EDNS for outgoing queries to allow UDP messages
# larger than 512 bytes. May cause trouble with some
# legacy systems.
exclude = .localdomain;
policy = included;
preset = off;
}
source {
owner=localhost;
# serve_aliases=on;
file="/etc/hosts";
}
/*
include {file="/etc/pdnsd.include";} # Read additional definitions from /etc/pdnsd.include.
*/
rr {
name=localhost;
reverse=on;
a=127.0.0.1;
owner=localhost;
soa=localhost,root.localhost,42,86400,900,86400,86400;
}
/*
neg {
name=doubleclick.net;
types=domain; # This will also block xxx.doubleclick.net, etc.
}
*/
/*
neg {
name=bad.server.com; # Badly behaved server you don't want to connect to.
types=A,AAAA;
}
*/
/* */ — все что находится внутри, считается закоментированным.
Включаем и запускаем службу
systemctl enable pdnsd.service && systemctl start pdnsd.service
Настраиваем все службы на использование нашего нового кеширующего
DNS-сервера.
/etc/resolvconf.conf
# Configuration for resolvconf(8)
# See resolvconf.conf(5) for details
resolv_conf=/etc/resolv.conf
# If you run a local name server, you should uncomment the below line and
# configure your subscribers configuration files below.
name_servers=127.0.0.1
/etc/resolv.conf можно обнулить, он все равно по умолчанию будет использовать 127.0.0.1.
nameserver 127.0.0.1
Быстрых вам ответов и правильных запросов.
Комментарии ()