SYSTEMD-RESOLVE(1)

NAME
systemd-resolve - 解析主机名、IP地址、域名、DNS资源记录、服务

SYNOPSIS

systemd-resolve [OPTIONS...] HOSTNAME...

systemd-resolve [OPTIONS...] ADDRESS...

systemd-resolve [OPTIONS...] --type=TYPE DOMAIN...

systemd-resolve [OPTIONS...] --service [[NAME] TYPE] DOMAIN

systemd-resolve [OPTIONS...] --openpgp USER@DOMAIN

systemd-resolve [OPTIONS...] --tlsa DOMAIN[:PORT]

systemd-resolve [OPTIONS...] --statistics

systemd-resolve [OPTIONS...] --reset-statistics

描述

systemd-resolve 利用 systemd-resolved.service(8) 系统服务解析主机名、IP地址、域名、DNS资源记录、服务。 默认情况下，参数列表将被视为域名/主机名的列表，程序的输出将是它们所对应的 IPv4 或 IPv6 地址。 如果参数符合 IPv4 或 IPv6 格式，那么表示反解析IP地址所对应的主机名。

程序的输出包括查找所使用的协议与网络接口， 还包括查找到的信息是否是可靠的。 所有通过 DNSSEC 认证的信息将被视为是可靠的， 所有从本地可信源获取的信息也被视为是可靠的， 包括对本机主机名的解析、特殊的 "localhost" 主机名、所有来自 /etc/hosts 中的结果。

--type= 用于指定仅查询特定类型的DNS资源记录(A, AAAA, SOA, MX, ...)， 而不是默认的地址解析/反解析。 特殊值 "help" 可用于列出所有可用的记录类型。

--service 用于解析 SRV[1] 与 DNS-SD[2] 服务(见下文)。 需要一至三个参数。如果指定了三个参数，那么第一个是 DNS-SD 服务名， 第二个是 SRV 服务类型，第三个是要查找的域。在这种情况下，将会执行一次完整的 DNS-SD 风格的 SRV 与 TXT 查询。 如果只指定了二个参数，那么第一个是 SRV 服务类型， 第二个是要查找的域。在这种情况下，将省略 TXT 查询。最后，如果只指定了一个参数， 那么该参数将被视为域名，并且已经加上了 SRV 类型前缀。在这种情况下，将会执行一个 SRV 查询(不含 TXT)

--openpgp 用于查询存储在DNS的 OPENPGPKEY[3] 类型的资源记录中的 PGP 公钥。 需要指定至少一个Email地址。

--tlsa 用于查询存储在DNS的 TLSA[4] 类型的资源记录中的 TLS 公钥。 需要指定至少一个域名。

--statistics 用于显示解析统计， 包括 DNSSEC 验证成功与失败的数量。

--reset-statistics 用于重置各种解析统计的计数器， 包括所有 --statistics 输出的统计数据。此操作需要超级用户权限。

选项

-4, -6
    在解析主机名时，默认同时查询 IPv4 与 IPv6 地址。 使用 -4 表示仅查询 IPv4 地址， 使用 -6 表示仅查询 IPv6 地址。

-i INTERFACE, --interface=INTERFACE
    指定使用哪个网络接口。 可以使用网卡的数字序号，也可以使用例如 "en0" 这样的网卡名称。 注意，在使用全局DNS(位于 /etc/resolv.conf 与 /etc/systemd/resolve.conf) 的时候，此选项没有效果。

-p PROTOCOL, --protocol=PROTOCOL
    指定查询所用的协议。可以设为下列四个值之一： "dns"(经典的单播DNS)、 "llmnr"(Link-Local Multicast Name Resolution[5])、 "llmnr-ipv4" 、 "llmnr-ipv6" 。 默认使用所有适合的协议。 可以多次使用此选项以指定多个查询协议。 注意：(1)设置 "llmnr" 等价于同时设置 "llmnr-ipv4" 与 "llmnr-ipv6" 。(2)此选项并不强制 systemd-resolved.service(8) 必须使用指定的查询协议，因为某个必需的网络接口与相应的配置可能不存在。 (3)特殊值 "help" 可用于列出所有可用的协议。

-t TYPE, --type=TYPE, -c CLASS, --class=CLASS
    指定查找的DNS资源记录的 type(A, AAAA, MX, ...) 与 class(IN, ANY, ...)。 如果使用了此选项，那么仅查询与指定的 type/class 匹配的DNS资源记录。 如果仅指定了 type 的话，那么 class 的默认值是"IN"。 特殊值 "help" 可用于列出所有可用的值。

--service
    根据指定的参数列表，开启 DNS-SD 与 简单 SRV 服务解析。 详见前文。

--service-address=BOOL
    默认值 yes 表示在使用 --service 查找服务时，同时也解析包含在 SRV 资源记录内的主机名。

--service-txt=BOOL
    默认值 yes 表示在使用 --service 查找 DNS-SD 服务时，同时也解析 TXT 服务元数据记录。

--openpgp
    查询存储在DNS的 OPENPGPKEY 类型的资源记录中的 PGP 公钥(参见前文)。 指定的Email地址将被转换为对应的DNS域名，并打印出所有 OPENPGPKEY 公钥。

--tlsa
    为每一个带有 port 与 family 前缀的名字 ("_port._family.domain") 查询存储在DNS的 TLSA 类型的资源记录中的 TLS 公钥(参见前文)。 端口号可以明确的写在冒号(:)之后， 否则将使用默认的 443 端口。 family 可以作为 --tlsa 的参数指定，否则将使用默认值 tcp 。

--cname=BOOL
    默认值 yes 表示追踪 DNS 的 CNAME 或 DNAME 重定向。 否则，在接收到 CNAME 或 DNAME 应答后，直接返回错误。

--search=BOOL
    默认值 yes 表示所有不含"."的主机名都将在搜索域列表(若非空)中进行搜索。

--raw[=payload|packet]
    以原始的二进制格式显示应答的数据。 "payload"(缺省值)表示导出数据包的荷载。 "packet" 表示导出原始的数据帧，并在前面加上一个小端序形式表示的64位整数。 此选项仅用于调试目的。

--legend=BOOL
    默认值 yes 表示显示应答内容的标题头与元数据。

--statistics
    显示解析统计，包括 DNSSEC 是否可用， 以及 DNSSEC 验证成功与失败的数量。

--reset-statistics
    重置各种解析统计的计数器，包括所有 --statistics 输出的统计数据。此操作需要超级用户权限。

--flush-caches
    刷新本地DNS资源记录缓存。

--status
    显示全局DNS设置、以及针对每个连接的DNS设置。

-h, --help
    显示简短的帮助信息并退出。

--version
    显示简短的版本信息并退出。

--no-pager
    不将程序的输出内容管道(pipe)给分页程序。

例子

Example 1. 解析 "www.0pointer.net" 域名所对应的地址

    $ systemd-resolve www.0pointer.net
    www.0pointer.net: 2a01:238:43ed:c300:10c3:bcf3:3266:da74
                      85.214.157.71
    -- Information acquired via protocol DNS in 611.6ms.
    -- Data is authenticated: no

Example 2. 反解析 "85.214.157.71" 地址所对应的域名

    $ systemd-resolve 85.214.157.71
    85.214.157.71: gardel.0pointer.net
    -- Information acquired via protocol DNS in 1.2997s.
    -- Data is authenticated: no

Example 3. 查找 "0pointer.net" 域名的 MX 记录

    $ systemd-resolve -t MX yahoo.com --legend=no
    yahoo.com. IN MX    1 mta7.am0.yahoodns.net
    yahoo.com. IN MX    1 mta6.am0.yahoodns.net
    yahoo.com. IN MX    1 mta5.am0.yahoodns.net

Example 4. 查找一个 SRV 服务

    $ systemd-resolve --service _xmpp-server._tcp gmail.com
    _xmpp-server._tcp/gmail.com: alt1.xmpp-server.l.google.com:5269 [priority=20, weight=0]
                                 173.194.210.125
                                 alt4.xmpp-server.l.google.com:5269 [priority=20, weight=0]
                                 173.194.65.125
                                 ...

Example 5. 查找一个 PGP 公钥

    $ systemd-resolve --openpgp zbyszek@fedoraproject.org
    d08ee310438ca124a6149ea5cc21b6313b390dce485576eff96f8722._openpgpkey.fedoraproject.org. IN OPENPGPKEY
            mQINBFBHPMsBEACeInGYJCb+7TurKfb6wGyTottCDtiSJB310i37/6ZYoeIay/5soJjlMyf
            MFQ9T2XNT/0LM6gTa0MpC1st9LnzYTMsT6tzRly1D1UbVI6xw0g0vE5y2Cjk3xUwAynCsSs
            ...

Example 6. 查找一个 TLS 公钥 (可以省略 "=tcp" 与 ":443")

    $ systemd-resolve --tlsa=tcp fedoraproject.org:443
    _443._tcp.fedoraproject.org IN TLSA 0 0 1 19400be5b7a31fb733917700789d2f0a2471c0c9d506c0e504c06c16d7cb17c0
            -- Cert. usage: CA constraint
            -- Selector: Full Certificate
            -- Matching type: SHA-256

参见

systemd(1), systemd-resolved.service(8)

NOTES

1.  SRV
    https://tools.ietf.org/html/rfc2782

2.  DNS-SD
    https://tools.ietf.org/html/rfc6763

3.  OPENPGPKEY
    https://tools.ietf.org/html/draft-wouters-dane-openpgp-02

4.  TLSA
    https://tools.ietf.org/html/rfc6698

5.  Link-Local Multicast Name Resolution
    https://tools.ietf.org/html/rfc4795