---
url: /configuration/dns/server.md
description: DNS 上游类型及地址、出站、域名解析和 TLS 公共字段
---

# DNS 服务器

`dns.servers` 是从名字到服务器的映射。每个服务器把 `type` 写在第一项。

```yaml check
dns:
  servers:
    local:
      type: hosts
      hosts:
        nas.lan: 192.0.2.10
    plain:
      type: udp
      address: 127.0.0.1:53
    secure:
      type: tls
      address: 127.0.0.1:853
      tls:
        server_name: dns.example
  final: plain
```

## 类型

| type | 页面 | 来源 |
|---|---|---|
| `udp` | [udp](/configuration/dns/server/udp) | UDP 上游 |
| `tcp` | [tcp](/configuration/dns/server/tcp) | TCP 上游 |
| `tls` | [tls](/configuration/dns/server/tls) | DNS over TLS |
| `https` | [https](/configuration/dns/server/https) | DNS over HTTPS |
| `quic` | [quic](/configuration/dns/server/quic) | DNS over QUIC |
| `h3` | [h3](/configuration/dns/server/h3) | DNS over HTTP/3 |
| `local` | [local](/configuration/dns/server/local) | 本机 resolv.conf |
| `dhcp` | [dhcp](/configuration/dns/server/dhcp) | DHCP 下发的 DNS |
| `fakeip` | [fakeip](/configuration/dns/server/fakeip) | 假地址池 |
| `hosts` | [hosts](/configuration/dns/server/hosts) | 静态 hosts |
| `leases` | [leases](/configuration/dns/server/leases) | 运行时网络租约/邻居 |

## 公共字段

### type

* 类型：字符串枚举。
* 必填：是，第一项。
* 取值：本页类型表。

### address

* 类型：IP 地址、主机名，或带端口形式。
* 必填：`udp`、`tcp`、`tls`、`https`、`quic`、`h3` 时是。
* 默认端口：UDP/TCP `53`，TLS/QUIC `853`，HTTPS/H3 `443`。
* 限制：主机名需要 `domain_resolver` 或 `dns.bootstrap`。

### via

* 类型：出站名或 `RULES`。
* 必填：可选。
* 默认：直接由 mayami 的 DNS socket 询问。
* 行为：用该出站的流或数据报承载查询；`RULES` 表示按当前路由规则选择出站。
* 限制：只存在于六种远程上游类型。

### domain_resolver

* 类型：DNS 服务器名。
* 必填：可选。
* 默认：`dns.bootstrap`。
* 限制：不能指向另一个主机名服务器或 fakeip。
* 行为：只在 `address` 写主机名时使用。

### tls

* 类型：[TLS 客户端占位页](/configuration/shared/tls-client)。
* 必填：可选。
* 默认：公共根证书。
* 限制：只存在于 `tls`、`https`、`quic`、`h3`。

### path

* 类型：HTTP 路径字符串。
* 默认：`/dns-query`。
* 限制：只存在于 `https`、`h3`。

### headers

* 类型：HTTP 请求头映射。
* 默认：空。
* 行为：每个 DoH/H3 查询附带这些头；`Host` 可指定 authority。
* 限制：只存在于 `https`、`h3`。

## 说明

上游地址和主机名都是原样数据，不在配置阶段联网查询。TLS 校验名默认取地址或主机名；`tls.server_name` 可覆盖证书名。

省略 `dns.final` 时，不选 hosts、leases 或 fakeip，只把首个真正会询问上游的服务器作为缺省值；显式写出的名字仍必须存在。

## 相关

* [DNS 总览](/configuration/dns/)
* [共享 TLS 客户端](/configuration/shared/tls-client)
* [路由总览](/configuration/route/)
