diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix
index ca5c2d533de..bb7bc8bd827 100644
--- a/maintainers/maintainer-list.nix
+++ b/maintainers/maintainer-list.nix
@@ -1405,6 +1405,12 @@
     githubId = 1740337;
     name = "Chris Ostrouchov";
   };
+  contrun = {
+    email = "uuuuuu@protonmail.com";
+    github = "contrun";
+    githubId = 32609395;
+    name = "B YI";
+  };
   couchemar = {
     email = "couchemar@yandex.ru";
     github = "couchemar";
diff --git a/pkgs/tools/networking/dnsproxy/default.nix b/pkgs/tools/networking/dnsproxy/default.nix
new file mode 100644
index 00000000000..6554dd465d4
--- /dev/null
+++ b/pkgs/tools/networking/dnsproxy/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub, buildGoModule }:
+
+buildGoModule rec {
+  pname = "dnsproxy";
+  version = "0.20.0";
+
+  src = fetchFromGitHub {
+    owner = "AdguardTeam";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0yd3d90ssdzpbsdq068dvsi0r1z2rlv3wpbmpkhfgpxmwrvdanrq";
+  };
+
+  modSha256 = "0cqwkmhajp3py3b5aj3qz9480qy2ws0vy1gk21bxjm56wqxl2gf0";
+
+  meta = with stdenv.lib; {
+    description = "Simple DNS proxy with DoH, DoT, and DNSCrypt support";
+    homepage = "https://github.com/AdguardTeam/dnsproxy";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ contrun ];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 89e15ed63e1..37404acaf8f 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -2714,6 +2714,8 @@ in
 
   dnsmasq = callPackage ../tools/networking/dnsmasq { };
 
+  dnsproxy = callPackage ../tools/networking/dnsproxy { };
+
   dnsperf = callPackage ../tools/networking/dnsperf { };
 
   dnsrecon = callPackage ../tools/security/dnsrecon { };