这是一个简单的DNS代理服务,它可以根据DNS查询类型(例如A记录和AAAA记录)将查询转发到不同的上游DNS服务器。
该项目可以解决在IPv4+IPv6双栈混合ISP网络环境下,需要为不同IP协议的地址解析使用不同DNS服务器的问题。例如,可以使用IPv4的ISP提供的DNS服务器来解析A记录,同时使用IPv6的ISP的DNS服务器来解析AAAA记录。
- 按记录类型转发: 根据查询的记录类型(
A、AAAA等)将请求转发到指定的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::1或2400:3200:baba::1(阿里云DNS)。 - 所有其他类型的查询将被转发到
223.5.5.5或223.6.6.6(阿里云DNS)。
直接执行DnsProxy.exe。关闭控制台窗口即可停止服务。
可以使用sc.exe命令来安装和管理服务。以管理员身份运行命令提示符或PowerShell,执行以下命令。
sc.exe create DnsProxy binPath= <%ProgramFiles%\DnsProxy.exe> start= auto请将<%ProgramFiles%\DnsProxy.exe>替换为 DnsProxy.exe的实际绝对路径。
sc.exe start DnsProxysc.exe stop DnsProxysc.exe delete DnsProxy可以使用dotnet来构建项目。
dotnet publish该命令将在bin\Release\net10.0\publish目录下生成一个独立的DnsProxy.exe可执行文件和appsettings.json配置文件。