Собственный кеширующий DNS-сервер

У меня случалось так — интернет есть, но не работает, виноват оказывался провайдерский 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
Быстрых вам ответов и правильных запросов.

Комментарии ()

    Авторизация

    GitHubGoogleVkontakteYandex
    Есть вопрос или предложение пиши в Telegram @cloudsv

    MTProto прokси для Telegram

    Прямой эфир

    Diego mont 25 мая 2023, 07:04
    Полезные боты в Telegram 2
    cloudsv 24 апреля 2023, 17:56
    Обновление Scala Rider G4 52
    cloudsv 12 ноября 2022, 19:16
    Установка и настройка minidlna 3
    cloudsv 03 ноября 2022, 03:42
    Настройка прокси mtproto для Telegram 52
    cloudsv 03 января 2022, 10:50
    Let's Encrypt это легко и просто 4
    cloudsv 10 сентября 2020, 13:17
    MySQL Workbench падает при подключении 2
    cloudsv 05 августа 2020, 11:57
    Мне вчера стукнуло 34 4
    cloudsv 07 августа 2023, 22:56
    Linux Asus ROG x13 flow 2022 GV301RE и Linux 0
    cloudsv 15 апреля 2023, 16:23
    Linux Уведомление о смены workspace в X11 Linux 0
    cloudsv 17 октября 2020, 09:55
    Linux Отключить DHCP IPv6 в systemd 0
    cloudsv 30 июля 2020, 21:54
    О жизни Мне вчера стукнуло 34 4
    cloudsv 15 апреля 2020, 15:45
    Linux Основные hotkeys редактора Vim 0
    cloudsv 01 октября 2019, 08:00
    Linux Локальный редирект порта в Linux 0
    cloudsv 25 августа 2019, 16:14
    О жизни Социальная сеть от Яндекса Aura 0
    cloudsv 30 июля 2019, 21:34
    О жизни 33 year old 0
    cloudsv 25 июня 2019, 18:29
    Telegram Полезные боты в Telegram 2