Bind9 не перенаправляет TCP запросы

У меня настроен dns-сервер bind.

Вот его конфиг с моими настройками:

zone "lokha.local" {
    type forward;
    forward only;
    forwarders { 116.202.112.23; };
};

options {
        directory "/var/cache/bind";

        dnssec-validation no;

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { none; };
        listen-on port 57 { 127.0.0.1; };

        forwarders {
                8.8.8.8;
                8.8.4.4;
        };

        recursion yes;
        allow-transfer {"none";};
        allow-query { any; };
        allow-recursion { any; };
        forward first;
        querylog yes;
};

В конфиге настроено перенаправление запросов локальной зоны lokha.local на мой dns-сервер 116.202.112.23.

Мой dns-сервер 116.202.112.23 может отвечать только на TCP dns-запросы, потому что UDP трафик закрыт через firewall.

Я тестирую dns-запрос командой:

dig @127.0.0.1 +vc -p 57 host5.lokha.local

Аргумент +vc делает запрос через TCP.

Но bind все равно пытается сделать запрос через UDP:

21:49:13.042919 IP (tos 0x0, ttl 64, id 10022, offset 0, flags [none], proto UDP (17), length 77)
    135.181.112.32.22902 > 116.202.112.23.53: [bad udp cksum 0x29e8 -> 0x5f4c!] 12467+% [1au] A? host5.lokha.local. ar: . OPT UDPsize=512 DO (49)

Как заставить bind9 использовать TCP?


Ответы (1 шт):

Автор решения: Алексей Ковальчук

Чтобы сделать то, что я хочу, надо добавить такую настройку в конфиг bind9:

server 0.0.0.0/0 {
      tcp-only true;
};

Но этой настройки в старых версиях bind9 не было, по этому надо обновить bind9.
Я это сделал такими командами:

service bind9 stop
apt-get remove bind9
wget -O /etc/apt/trusted.gpg.d/bind.gpg https://packages.sury.org/bind/apt.gpg
sh -c 'echo "deb https://packages.sury.org/bind/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/bind.list'
apt-get update
apt-get install bind9
→ Ссылка