[Pdns-users] Trouble with TCP requests and recursor

Sergey Belyaev sb at iskratelecom.ru
Fri Nov 4 09:39:31 UTC 2005


Hello.


I use PowerDNS 2.9.18 and I have problems with TCP queries.

When I make a query through UDP, PowerDNS gives me the zone. For example, I 
have the zone binary.ru which is hosted on this server:

binary at ns:/home/binary> nslookup
> set type=any
> binary.ru
Server:         localhost
Address:        127.0.0.1#53

binary.ru       mail exchanger = 20 relay1.iskratelecom.ru.
binary.ru       mail exchanger = 10 mail.binary.ru.
Name:   binary.ru
Address: 82.199.96.133
binary.ru
        origin = ns.binary.ru
        mail addr = postmaster.ns.binary.ru
        serial = 2005102000
        refresh = 3600
        retry = 6000
        expire = 864000
        minimum = 86400
binary.ru       nameserver = ns2.binary.ru.
binary.ru       nameserver = ns.binary.ru.

When I query the same zone over TCP I receive the following:

binary at ns:/home/binary> nslookup -vc
> set type=any
> binary.ru
Server:         127.0.0.1
Address:        127.0.0.1#53

Non-authoritative answer:
binary.ru
        origin = ns.binary.ru
        mail addr = postmaster.ns.binary.ru
        serial = 2005102000
        refresh = 3600
        retry = 6000
        expire = 864000
        minimum = 86400
binary.ru       nameserver = ns2.binary.ru.
Name:   binary.ru
Address: 82.199.96.133
binary.ru       mail exchanger = 20 relay1.iskratelecom.ru.
binary.ru       mail exchanger = 10 mail.binary.ru.
binary.ru       nameserver = ns.binary.ru.

Authoritative answers can be found from:
ns.binary.ru    internet address = 82.199.96.131
relay1.iskratelecom.ru  internet address = 82.199.108.4
ns2.binary.ru   internet address = 82.199.108.4
mail.binary.ru  internet address = 82.199.96.133

That is making the query over TCP, PowerDNS immediately transmits it to 
recursor omitting the query to the database (gmysql).


Switching on debug I see that the query to the database  is performed only 
at attempt to receive the zone over UDP but at attempt to do the same
over TCP the db query isn't performed.



If I switch off recursor everything is all right but recursor is necessary 
to me. 


System: FreeBSD 5.4, PowerDNS 2.9.18, gmysql backend.
Servers: 82.199.96.131, 82.199.108.4



Config:

#################################
# allow-axfr-ips        If disabled, DO allow zonetransfers from these IP addresses
#
allow-axfr-ips=82.199.108.4

#################################
# allow-recursion       List of netmasks that are allowed to recurse
#
allow-recursion=82.199.96.0/19, 10.0.0.0/8, 11.11.11.0/24, 127.0.0.1

#################################
# cache-ttl     Seconds to store packets in the PacketCache
#
cache-ttl=20

#################################
# chroot        If set, chroot to this directory for more security
#
# chroot=

#################################
# config-dir    Location of configuration directory (pdns.conf)
#
config-dir=/usr/local/etc

#################################
# config-name   Name of this virtual configuration - will rename the binary image
#
# config-name=

#################################
# control-console       Debugging switch - don't use
#
# control-console=no

#################################
# daemon        Operate as a daemon
#
daemon=yes

#################################
# default-soa-name      name to insert in the SOA record if none set in the backend
#
# default-soa-name=a.misconfigured.powerdns.server

#################################
# disable-axfr  Disable zonetransfers but do allow TCP queries
#
# disable-axfr=no

#################################
# disable-tcp   Do not listen to TCP queries
#
disable-tcp=no

#################################
# distributor-threads   Default number of Distributor (backend) threads to start
#
# distributor-threads=3

#################################
# fancy-records Process URL and MBOXFW records
#
# fancy-records=no

#################################
# guardian      Run within a guardian process
#
guardian=yes

#################################
# launch        Which backends to launch and order to query them in
#
launch=gmysql

#################################
# lazy-recursion        Only recurse if question cannot be answered locally
#
lazy-recursion=yes

#################################
# load-modules  Load this module - supply absolute or relative path
#

#################################
# local-address Local IP address to which we bind
#
local-address=0.0.0.0

#################################
# local-ipv6    Local IP address to which we bind
#
# local-ipv6=

#################################
# local-port    The port on which we listen
#
local-port=53

#################################
# log-dns-details       If PDNS should log failed update requests
#
log-dns-details=yes

#################################
# log-failed-updates    If PDNS should log failed update requests
#
log-failed-updates=yes

#################################
# logfile       Logfile to use
#
logfile=/var/log/pdns.log

#################################
# logging-facility      Log under a specific facility
#
# logging-facility=

#################################
# loglevel      Amount of logging. Higher is more. Do not set below 3
#
loglevel=2

#################################
# master        Act as a master
#
master=yes

#################################
# max-queue-length      Maximum queuelength before considering situation lost
#
# max-queue-length=5000

#################################
# max-tcp-connections   Maximum number of TCP connections
#
max-tcp-connections=10

#################################
# module-dir    Default directory for modules
#
# module-dir=/usr/local/bin/../lib

#################################
# negquery-cache-ttl    Seconds to store packets in the PacketCache
#
negquery-cache-ttl=60

#################################
# only-soa      Make sure that no SOA serial is less than this number
#
# only-soa=org

#################################
# out-of-zone-additional-processing     Do out of zone additional processing
#
# out-of-zone-additional-processing=no

#################################
# query-cache-ttl       Seconds to store packets in the PacketCache
#
query-cache-ttl=20

#################################
# query-logging Hint backends that queries should be logged
#
#query-logging=yes

#################################
# queue-limit   Maximum number of milliseconds to queue a query
#
queue-limit=1500

#################################
# receiver-threads      Number of receiver threads to launch
#
# receiver-threads=1

#################################
# recursive-cache-ttl   Seconds to store packets in the PacketCache
#
recursive-cache-ttl=10

#################################
# recursor      If recursion is desired, IP address of a recursing nameserver
#
recursor=127.0.0.1:5053

#################################
# setgid        If set, change group id to this gid for more security
#
setgid=nogroup

#################################
# setuid        If set, change user id to this uid for more security
#
setuid=nobody

#################################
# skip-cname    Do not perform CNAME indirection for each query
#
# skip-cname=no

#################################
# slave Act as a slave
#
slave=yes

#################################
# slave-cycle-interval  Reschedule failed SOA serial checks once every .. seconds
#
slave-cycle-interval=60

#################################
# smtpredirector        Our smtpredir MX host
#
# smtpredirector=a.misconfigured.powerdns.smtp.server

#################################
# soa-minimum-ttl       Default SOA mininum ttl
#
# soa-minimum-ttl=3600

#################################
# soa-serial-offset     Make sure that no SOA serial is less than this number
#
# soa-serial-offset=0

#################################
# socket-dir    Where the controlsocket will live
#
# socket-dir=/var/run

#################################
# strict-rfc-axfrs      Perform strictly rfc compliant axfrs (very slow)
#
# strict-rfc-axfrs=no

#################################
# urlredirector Where we send hosts to that need to be url redirected
#
# urlredirector=127.0.0.1

#################################
# use-logfile   Use a log file
#
use-logfile=yes

#################################
# webserver     Start a webserver for monitoring
#
webserver=yes

#################################
# webserver-address     IP Address of webserver to listen on
#
webserver-address=82.199.96.131

#################################
# webserver-password    Password required for accessing the webserver
#
# webserver-password=

#################################
# webserver-port        Port of webserver to listen on
#
webserver-port=8081

#################################
# webserver-print-arguments     If the webserver should print arguments
#
webserver-print-arguments=yes

#################################
# wildcard-url  Process URL and MBOXFW records
#
# wildcard-url=no

#################################
# wildcards     Honor wildcards in the database
#
# wildcards=


gmysql-host=localhost
gmysql-user=xxxxx
gmysql-password=xxxx
gmysql-dbname=xxxxx


-- 
Sincerely yours,
Sergey Belyaev,
System Administrator,
ISP Iskratelecom, JSC.
phone: +7 (095) 540-68-64, ext. 007
sb at iskratelecom.ru, http://www.iskratelecom.ru



More information about the Pdns-users mailing list