Hi,
I am seeing a critical DNS issue and I am hoping someone here can point me in the right direction.
I am running Pi-hole for DNS security, and it appears that when a DNS response is truncated (which seems fairly common), Pi-hole retries the query over TCP port 53. I originally thought this was unusual, but from what I am reading it is normal DNS behavior.
The problem is that when Pi-hole tries TCP/53 against a Peplink Balance router, it fails with:
2026-01-11 01:31:49.538 TCP connection failed: Connection refused
Which would make sense as I’ve never seen a Peplink respond to DNS queries inside the LAN on TCP53
Normally I would assume this is Pi-holes fault for doing it in a weird way, but in this case it looks more like the Peplink may be the issue.
From what I understand, proper DNS behavior requires the resolver to support both UDP and TCP on port 53 (TCP is commonly used as a fallback when responses are truncated). If the Balance is refusing TCP/53 on the LAN side, that seems non-compliant with the international standards of DNS operation.
The key standards are:
RFC 1035 (Domain Names, implementation and specification)
Defines DNS over both UDP and TCP. It also describes the truncation mechanism: if a UDP response is too large and the server sets the TC (truncated) bit, the client is expected to retry using TCP.
RFC 7766 (DNS Transport over TCP, implementation requirements)
This is the modern, explicit requirement document for TCP. It states that DNS servers are expected to support DNS over TCP and that DNS clients should retry over TCP in truncation and other cases. (This RFC updates earlier guidance.)
RFC 5966 (DNS Transport over TCP, implementation requirements)
Older version of the same topic. It is largely superseded by RFC 7766, but it is useful background because it also makes the “TCP is required” point very directly.
Also worth noting:
Zone transfers require TCP (authoritative DNS operations): AXFR/IXFR are defined to run over TCP. See RFC 5936 (AXFR) and RFC 1995 (IXFR).
Given how fundamental this feature is to the correct operation of proper DNS, I find it hard to believe that an oversight this big made it through the balance guys QA (which usually puts milspec to shame), so I am assuming I screwed up during the config or I am missing a setting somewhere.
Is there a way to enable DNS over TCP (TCP/53) on Peplink Balance devices? I do not see an option for it in the UI, so I am wondering if it is located elsewhere or named differently.
Any help or guidance would be greatly appreciated.