Discussion:
[Dnsmasq-discuss] dnsmasq fails when the ARP cache is full
Chris Berner
2017-07-06 17:14:08 UTC
Permalink
Test setup:
OS: Ubuntu 16.04
Hardware: D15_v2 VM on Azure

Steps to reproduce:
1) sudo apt-get install dnsmasq
2) sudo sysctl -w net.ipv4.neigh.default.gc_thresh1=1
3) sudo sysctl -w net.ipv4.neigh.default.gc_thresh2=1
4) sudo sysctl -w net.ipv4.neigh.default.gc_thresh3=1
5) dig @127.0.0.1 google.com

Result:
~$ dig @127.0.0.1 google.com
../../../../lib/isc/unix/socket.c:2104: internal_send: 127.0.0.1#53:
Invalid argument
../../../../lib/isc/unix/socket.c:2104: internal_send: 127.0.0.1#53:
Invalid argument
../../../../lib/isc/unix/socket.c:2104: internal_send: 127.0.0.1#53:
Invalid argument

; <<>> DiG 9.10.3-P4-Ubuntu <<>> @127.0.0.1 google.com
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

However, an external DNS server still works fine (dig @8.8.8.8 google.com,
for example).

We discovered this as the default max ARP cache size is 1024, and we're
running a large cluster with a lot of intra-cluster network traffic.
Increasing the size of the ARP cache solves this problem, but it seems like
dnsmasq should still work and just be slow, like other applications (curl
for example just takes longer to connect)

Loading...