Hi,

we can’t really help you if you don’t use the real domain names and real IP 
addresses.

Ondrej
--
Ondřej Surý (He/Him)
ond...@isc.org

> On 7. 1. 2021, at 16:56, - <bernardo.p...@gmail.com> wrote:
> 
> Hi all,
> 
> We are running BIND 9.16.6 DNS servers that are receiving queries from 
> clients but randomly ignore "packets received correctly" as shown in this 
> logs.
> 
> When the DNS server answers the query, BIND is logging this:
> 
> 30-Dec-2020 10:16:55.071 client: debug 3: client @0x7f9808000c80 
> A.B.C.D#47290: UDP request
> 30-Dec-2020 10:16:55.071 client: debug 5: client @0x7f9808000c80 
> A.B.C.D#47290: using view '_default'
> 30-Dec-2020 10:16:55.071 security: debug 3: client @0x7f9808000c80 
> A.B.C.D#47290: request is not signed
> 30-Dec-2020 10:16:55.071 security: debug 3: client @0x7f9808000c80 
> A.B.C.D#47290: recursion available
> 30-Dec-2020 10:16:55.071 queries: info: client @0x7f9808000c80 A.B.C.D#47290 
> (EXAMPLE.COM): query: EXAMPLE.COM IN SOA -E(0)K (E.F.G.H)
> 30-Dec-2020 10:16:55.071 security: debug 3: client @0x7f9808000c80 
> A.B.C.D#47290 (EXAMPLE.COM): query 'EXAMPLE.COM/SOA/IN' approved
> 30-Dec-2020 10:16:55.071 rate-limit: debug 99: client @0x7f9808000c80 
> A.B.C.D#47290 (EXAMPLE.COM): rrl=0x7f9810365a20, HAVECOOKIE=0, 
> result=ISC_R_SUCCESS, fname=0x7f9814d523d0(1), is_zone=1, RECURSIONOK=0, 
> query.rpz_st=(nil)(0), RRL_CHECKED=0
> 30-Dec-2020 10:16:55.071 security: debug 3: client @0x7f9808000c80 
> A.B.C.D#47290 (EXAMPLE.COM): reset client
> 
> while TCPDUMP output (command "tcpdump -i eth0 port 53 -n -vvv") is showing 
> this:
> 
> A.B.C.D.47290 > E.F.G.H.53: [udp sum ok] 47783 [1au] SOA? EXAMPLE.COM. ar: . 
> OPT UDPsize=4096 (49)
> E.F.G.H.53 > A.B.C.D.47290: [bad udp cksum 0x3f6d -> 0x7b61!] 47783* q: SOA? 
> EXAMPLE.COM. 1/6/1 EXAMPLE.COM. [1h] SOA ns1.DOMAIN.COM. dns.DOMAIN.COM. 
> 2020122901 3600 600 2419200 600 ns: EXAMPLE.COM. [1d] NS ns3.DOMAIN.NET., 
> EXAMPLE.COM. [1d] NS ns2.DOMAIN.NET., EXAMPLE.COM. [1d] NS ns1.DOMAIN.COM., 
> EXAMPLE.COM. [1d] NS ns3.DOMAIN.COM., EXAMPLE.COM. [1d] NS ns1.DOMAIN.NET., 
> EXAMPLE.COM. [1d] NS ns2.DOMAIN.COM. ar: . OPT UDPsize=4096 (246)
> 
> So far, everything's fine.
> 
> But, when the DNS server doesn't answer the query, BIND is logging this:
> 
> 30-Dec-2020 10:16:47.487 general: debug 60: socket 0x7f9815aa2178 
> A.B.C.D#36113: packet received correctly
> 30-Dec-2020 10:16:48.487 general: debug 60: socket 0x7f9815aa2178 
> A.B.C.D#36113: packet received correctly
> 30-Dec-2020 10:16:48.487 general: debug 60: socket 0x7f9815aa2178 
> A.B.C.D#36113: packet received correctly
> 30-Dec-2020 10:16:49.491 general: debug 60: socket 0x7f9815aa2178 
> A.B.C.D#36113: packet received correctly
> 
> while TCPDUMP output is showing this:
> 
> A.B.C.D.36113 > E.F.G.H.53: [udp sum ok] 13628 [1au] SOA? EXAMPLE.COM. ar: . 
> OPT UDPsize=4096 (49)
> A.B.C.D.36113 > E.F.G.H.53: [udp sum ok] 13628 [1au] SOA? EXAMPLE.COM. ar: . 
> OPT UDPsize=4096 (49)
> A.B.C.D.36113 > E.F.G.H.53: [udp sum ok] 13628 [1au] SOA? EXAMPLE.COM. ar: . 
> OPT UDPsize=4096 (49)
> A.B.C.D.36113 > E.F.G.H.53: [udp sum ok] 13628 [1au] SOA? EXAMPLE.COM. ar: . 
> OPT UDPsize=4096 (49)
> 
> UDP packets received in both cases are the same but BIND randomly ignores 
> them sometimes (causing the client to query again) and finally it never 
> answers the query received in the first time.
> 
> The host CPU, memory and NIC utilization are low so it's very unlikely that 
> computing resource bottlenecks are causing packets to be dumped.
> In fact, command "netstat -suna" shows that apparently the host has no 
> problem processing UDP packets.
> 
> Udp:
>     1349954 packets received
>     27 packets to unknown port received
>     0 packet receive errors
>     631757 packets sent
>     0 receive buffer errors
>     0 send buffer errors
> 
> It's a little bit surprising that "packet received correctly" is only being 
> logged when things go wrong.
> The only place in the code that I've found where "packet received correctly" 
> is being logged is here at socket.c
> 
>         /*
>          * On TCP and UNIX sockets, zero length reads indicate EOF,
>          * while on UDP sockets, zero length reads are perfectly valid,
>          * although strange.
>          */
>         switch (sock->type) {
>         case isc_sockettype_tcp:
>         case isc_sockettype_unix:
>                 if (cc == 0) {
>                         return (DOIO_EOF);
>                 }
>                 break;
>         case isc_sockettype_udp:
>         case isc_sockettype_raw:
>                 break;
>         default:
>                 INSIST(0);
>                 ISC_UNREACHABLE();
>         }
> 
>         if (sock->type == isc_sockettype_udp) {
>                 dev->address.length = msghdr.msg_namelen;
>                 if (isc_sockaddr_getport(&dev->address) == 0) {
>                         if (isc_log_wouldlog(isc_lctx, IOEVENT_LEVEL)) {
>                                 socket_log(sock, &dev->address, IOEVENT,
>                                            "dropping source port zero 
> packet");
>                         }
>                         return (DOIO_SOFT);
>                 }
>                 /*
>                  * Simulate a firewall blocking UDP responses bigger than
>                  * 'maxudp' bytes.
>                  */
>                 if (sock->manager->maxudp != 0 &&
>                     cc > (int)sock->manager->maxudp) {
>                         return (DOIO_SOFT);
>                 }
>         }
> 
>         socket_log(sock, &dev->address, IOEVENT, "packet received correctly");
> 
> 
> I'd rather avoid having to dive deeper in the code to understand what 
> conditions can cause BIND to ignore "packets received correctly" that seems 
> to happen when this socket_log function is called.
> 
> I would appreciate if anybody can help with this or give some hint.
> 
> Thank you,
> 
> --
> Bernardo
> 
>       Libre de virus. www.avast.com
> _______________________________________________
> Please visit https://lists.isc.org/mailman/listinfo/bind-users to unsubscribe 
> from this list
> 
> ISC funds the development of this software with paid support subscriptions. 
> Contact us at https://www.isc.org/contact/ for more information.
> 
> 
> bind-users mailing list
> bind-users@lists.isc.org
> https://lists.isc.org/mailman/listinfo/bind-users

Attachment: signature.asc
Description: Message signed with OpenPGP

_______________________________________________
Please visit https://lists.isc.org/mailman/listinfo/bind-users to unsubscribe 
from this list

ISC funds the development of this software with paid support subscriptions. 
Contact us at https://www.isc.org/contact/ for more information.


bind-users mailing list
bind-users@lists.isc.org
https://lists.isc.org/mailman/listinfo/bind-users

Reply via email to