A systemd service for AdguardTeam/dnsproxy to provide DNS.
The code relies on resolvconf which was deprecated and replaced by systemd-resolved.
This is replaced since Ubuntu 22.10.
https://launchpad.net/bugs/1990743
This is also replaced for Debian using bullseye-backports, bookworm and onwards.
Since now knowing this is using a deprecated feature, I won't be working on it much longer. I think it's best to move on and maybe build another project using a newer method that works.
This is for Linux systems installed with the resolvconf package to modify the /etc/resolv.conf file.
The adguard-dnsproxy-setup.service uses an argument of linux-amd64 in its ExecStart line.
Refer to assets in AdguardTeam/dnsproxy Releases for other OS architectures.
Examples:
linux-386for i386 / x86linux-arm64for aarch64 / arm64linux-arm6for armv6l / armhf
After cloning this repository, run the command below to download and start up this DNS proxy server.
makeUsing sudo is optional since the Makefile already checks for admin access.
Admin access is need to be permitted to bind IP addresses for listening.
If you want to run the exact targets, run
make install start.
If you are not in the
dnsproxy-systemdgit directory, you may runmake -C dnsproxy-systemdif you have cloned into the current directory.
The Makefile has 2 variables to customize, BINDIR and CONFDIR.
make BINDIR=/opt/adguard CONFDIR=/etc/adguardIf you change their values, be sure the chosen directory is root-owned.
Due to certain file conflicts, /etc and /usr/sbin are some of the directories not allowed.
Refer to the options in Adguard/dnsproxy main.go for yaml configuration.
The listen-addrs option is required.
Make sure adguard-dnsproxy.service is stopped when editing this option.
Make sure any IP addresses in this option are not already used on port 53.
Check for IP address on port 53 with ss, netstat or lsof.
sudo ss -tnlp | grep :53sudo netstat -tnlp | grep :53sudo lsof -Pni:53 -sTCP:LISTENLinux and BSD may encounter errors for any QUIC or UDP transfers, especially DNS over QUIC.
This is solved by setting the maximum buffer sizes to a high enough level.
It can be done by using sysctl -w or permanently by adding a new file to the sysctl directory.
sudo sysctl -w net.core.wmem_max=7864320
sudo sysctl -w net.core.rmem_max=7864320sudo sh -c 'printf "# Maximum send buffer size\nnet.core.wmem_max=7864320\n# Maximum receive buffer size\nnet.core.rmem_max=7864320" > /etc/sysctl.d/10-max-buffer-size.conf'su -c 'sysctl -w kern.ipc.maxsockbuf=8441037'su -c 'printf "# Maximum socket buffer\nkern.ipc.maxsockbuf=8441037" > /etc/sysctl.kld.d/10-max-socket-buffer.conf'