Skip to content

Latest commit

 

History

History
82 lines (54 loc) · 2.39 KB

File metadata and controls

82 lines (54 loc) · 2.39 KB

Dns Proxy: DNS代理

English

这是一个简单的DNS代理服务,它可以根据DNS查询类型(例如A记录和AAAA记录)将查询转发到不同的上游DNS服务器。

该项目可以解决在IPv4+IPv6双栈混合ISP网络环境下,需要为不同IP协议的地址解析使用不同DNS服务器的问题。例如,可以使用IPv4的ISP提供的DNS服务器来解析A记录,同时使用IPv6的ISP的DNS服务器来解析AAAA记录。

特性

  • 按记录类型转发: 根据查询的记录类型(AAAAA等)将请求转发到指定的DNS服务器。
  • 配置简单: 通过appsettings.json文件即可轻松配置DNS服务器。
  • 自包含部署: 可以发布为单个可执行文件,无需安装.NET运行时。
  • Windows服务: 可以作为Windows服务在后台持续运行。

配置

通过修改appsettings.json文件来配置DNS服务器。

配置位于DnsProxy:Forwarders节点下,它是一个字典,键为DNS记录类型(不区分大小写),值为一个或多个DNS服务器的IP地址列表。Any键用于配置一个默认的DNS服务器,当没有为特定查询类型配置服务器时,将使用该服务器。

示例

{
  "DnsProxy": {
    "Forwarders": {
      "Any": ["223.5.5.5", "223.6.6.6"],
      "AAAA": ["2400:3200::1", "2400:3200:baba::1"]
    }
  }
}

在此示例中:

  • 所有AAAA记录的查询将被转发到2400:3200::12400:3200:baba::1(阿里云DNS)。
  • 所有其他类型的查询将被转发到223.5.5.5223.6.6.6(阿里云DNS)。

运行

作为控制台应用运行

直接执行DnsProxy.exe。关闭控制台窗口即可停止服务。

作为Windows服务运行

可以使用sc.exe命令来安装和管理服务。以管理员身份运行命令提示符或PowerShell,执行以下命令。

安装服务

sc.exe create DnsProxy binPath= <%ProgramFiles%\DnsProxy.exe> start= auto

请将<%ProgramFiles%\DnsProxy.exe>替换为 DnsProxy.exe的实际绝对路径。

启动服务

sc.exe start DnsProxy

停止服务

sc.exe stop DnsProxy

删除服务

sc.exe delete DnsProxy

构建

可以使用dotnet来构建项目。

dotnet publish

该命令将在bin\Release\net10.0\publish目录下生成一个独立的DnsProxy.exe可执行文件和appsettings.json配置文件。