45 Commits

Author SHA1 Message Date
timmy 0e81ee3dff Track ipv6 addresses 2026-01-27 15:59:58 -08:00
timmy 15e2ab97d6 Merge remote-tracking branch 'github/master' 2025-12-27 16:45:54 -08:00
Michael Stapelberg 2e5277d689 internal/dns: retry over TCP upon truncated response
This fixes resolving login.tailscale.com as of the time of writing,
the first DNS name for which I noticed an error in 7 years of router7.
2025-07-20 18:31:45 +02:00
timmy fc2e21cfd6 Fix nft run 2024-12-24 11:09:11 -08:00
timmy 971b8f2521 Use nextdns 2024-08-17 11:21:07 -07:00
timmy ab5bce1356 updates 2024-01-20 11:41:04 -08:00
timmy 61b59517fc Act as the authority even though were not
letsencrypt needs to talk to the authoritative name server, but
I have all dns traffic redirected to here so we get the SOA using the
same request (probably only works by accident) and then make a request
to the address listed in the SOA

Fix typos in IPv6 addresses
2021-05-26 23:04:33 -07:00
timmy e34b880a55 Final fix
Add the domain as it is needed (multiple domains on a home net is niche)
Only replace the record if a local one was found
Use proper slice updating
2021-05-23 19:34:59 -07:00
timmy ac0ef71d9f Fix null check 2021-05-23 18:54:09 -07:00
timmy 9533787aac Fix err check
go mod tidy
2021-05-23 18:31:30 -07:00
timmy 29eaa11052 Update parameters for clarity
Hijack the final A record in a CNAME chain if it is in our records
2021-05-23 17:49:15 -07:00
timmy ef50f7c2e4 Merge remote-tracking branch 'origin/master' 2021-03-15 22:44:39 -07:00
Robert Obryk 8de4eb7ba1 internal/dns: prevent upstreams from being lost during reordering (#63)
If upstreams were reordered between start of an upstream request and its
conclusion, the move-to-front operation would likely incorrectly reorder
upstreams: duplicate one and remove another. Instead, we abandon the
move-to-front operation if that was about to happen.
2020-11-23 09:34:04 +01:00
timmy 2dc11ce1e3 Add additional test cases and fix some failing tests 2020-08-10 18:12:34 -07:00
timmy e421cff225 Fix the implicit lan domain
Includes test for setting a custom domain
2020-08-10 18:12:34 -07:00
timmy fbd2facfa1 Set the recursion available flag 2020-08-10 18:12:34 -07:00
timmy fbbfa568a8 Add JSON tags 2020-08-10 18:12:34 -07:00
timmy 169bc5c3e7 DNS changes
go mod tidy
2020-08-10 18:12:34 -07:00
timmy 3c451f06ca Add the ability to run router7 on a normal Linux distribution 2020-08-10 18:12:34 -07:00
Matt Layher 9f6257b046 internal/dns: fix staticcheck issues
Signed-off-by: Matt Layher <mdlayher@gmail.com>
2020-05-09 17:02:33 -04:00
Michael Stapelberg 70edcab16b dns: return NXDOMAIN for DHCP leases once they expire 2019-09-07 19:27:12 +02:00
Michael Stapelberg 4cde5ec6fc dns: fix resolution of uppercase host names, add test 2019-08-07 18:18:51 +02:00
Michael Stapelberg 8fb81f90b1 dns: make more recent DHCP leases overwrite older ones
fixes #20
2019-07-20 12:23:48 +02:00
Michael Stapelberg 36995097b9 make local name resolution case-insensitive
fixes #34
2019-07-20 12:07:30 +02:00
Michael Stapelberg 66942bd4f7 dns: steer traffic toward the most response upstream
There is not much of a difference between IPv4 and IPv6 on my fiber7 link, but
in other networks, there might well be.

For my connection, this commit results in hitting different upstreams all the
time because the list isn’t stable. But, this is the opposite of a problem: we
are spreading the DNS query load over all configured IPs, as good netizen do.
2019-02-19 09:37:38 +01:00
Michael Stapelberg a05f027765 dns: fallback only once, i.e. prefer the working server next time 2019-02-19 08:49:40 +01:00
Michael Stapelberg ccaf6ad452 dns: fallback to next upstream upon failure 2019-02-19 08:38:52 +01:00
Michael Stapelberg bd8fc63b0e dns: implement per-DHCP-lease dyndns
The HTTP API is easy to use from the command line or from Go:

% curl --data "host=sub&ip=192.168.33.44" -4 http://router7:8053/dyndns
ok
% host sub.$(hostname)
sub.midna has address 192.168.33.44

This can be used in combination with https://github.com/gokrazy/gdns
2019-01-06 14:41:26 +01:00
Michael Stapelberg 92d995bf79 dns: return empty reply for non-A queries for DNS hostnames
instead of NXDOMAIN, which is incorrect
2019-01-01 17:21:50 +01:00
Michael Stapelberg ac883da6a5 dns_test: xps → testtarget
This fixes running the tests on xps, where the entry derived from os.Hostname
would clash with the xps entries the testcase tries to install.
2018-11-22 17:03:51 +01:00
Michael Stapelberg 4288adec69 dns: don’t let clients override the hostname
fixes #11
2018-10-22 21:43:41 +02:00
Michael Stapelberg 5a5a748b9f dnsd: don’t serve expired leases
fixes #6
2018-08-05 11:30:58 +02:00
Michael Stapelberg b347ed74c5 update import paths 2018-07-09 08:54:04 +02:00
Michael Stapelberg ff7aa8f2cb add copyright notices 2018-06-28 20:08:23 +02:00
Michael Stapelberg 89e1276ad4 dns: simplify resolving code 2018-06-26 09:33:23 +02:00
Michael Stapelberg 10df129c1f dns: listen on all private IP addresses 2018-06-26 08:53:20 +02:00
Michael Stapelberg 08249aec6a dns: resolve localhost locally 2018-06-25 20:24:02 +02:00
Michael Stapelberg 60de127991 Describe all packages and binaries. 2018-06-25 20:12:51 +02:00
Michael Stapelberg c96c683e43 dns: send NXDOMAIN for non-existant local names 2018-06-23 22:15:35 +02:00
Michael Stapelberg 4b6b5196b0 dns: correctly resolve PTR for hostname 2018-06-18 09:44:46 +02:00
Michael Stapelberg c743091929 dns: track number of questions and which upstream was used 2018-06-18 09:35:14 +02:00
Michael Stapelberg 24e2d5de00 dnsd: serve prometheus metrics on port 8053 2018-06-18 08:04:56 +02:00
Michael Stapelberg 93eaab99cb dns: resolve own hostname, lock for concurrency 2018-06-14 20:42:53 +02:00
Michael Stapelberg 02c7fa7e0d dns: serve reverse lookup queries for all RFC 1918 reserved networks 2018-06-14 20:24:44 +02:00
Michael Stapelberg 6b9ce5728a Initial commit 2018-05-27 17:30:42 +02:00