dns

DNS 配置、解析排查、BIND/CoreDNS 等技能。

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "dns" with this command: npx skills add chaterm/terminal-skills/chaterm-terminal-skills-dns

DNS 配置与排查

概述

DNS 配置、解析排查、BIND/CoreDNS 等技能。

DNS 查询工具

dig

基础查询

dig example.com dig example.com A dig example.com AAAA dig example.com MX dig example.com NS dig example.com TXT dig example.com ANY

简短输出

dig +short example.com

指定 DNS 服务器

dig @8.8.8.8 example.com dig @1.1.1.1 example.com

追踪解析过程

dig +trace example.com

反向解析

dig -x 8.8.8.8

查询特定记录

dig example.com SOA dig example.com CNAME

禁用递归

dig +norecurse example.com

nslookup

基础查询

nslookup example.com nslookup example.com 8.8.8.8

查询特定类型

nslookup -type=mx example.com nslookup -type=ns example.com nslookup -type=txt example.com

反向解析

nslookup 8.8.8.8

host

基础查询

host example.com host -t mx example.com host -t ns example.com

反向解析

host 8.8.8.8

详细输出

host -v example.com

本地 DNS 配置

/etc/resolv.conf

查看配置

cat /etc/resolv.conf

配置示例

nameserver 8.8.8.8 nameserver 8.8.4.4 search example.com options timeout:2 attempts:3

临时修改(可能被覆盖)

echo "nameserver 8.8.8.8" > /etc/resolv.conf

/etc/hosts

查看

cat /etc/hosts

添加记录

echo "192.168.1.100 myserver.local" >> /etc/hosts

格式

127.0.0.1 localhost 192.168.1.100 myserver myserver.local

systemd-resolved

查看状态

systemd-resolve --status resolvectl status

查询

resolvectl query example.com

刷新缓存

systemd-resolve --flush-caches resolvectl flush-caches

配置文件

/etc/systemd/resolved.conf

BIND DNS 服务器

安装与管理

安装

apt install bind9 bind9utils # Debian/Ubuntu yum install bind bind-utils # CentOS/RHEL

服务管理

systemctl start named systemctl enable named systemctl status named

检查配置

named-checkconf named-checkzone example.com /etc/bind/zones/db.example.com

主配置

/etc/bind/named.conf.options

options { directory "/var/cache/bind";

forwarders {
    8.8.8.8;
    8.8.4.4;
};

dnssec-validation auto;

listen-on { any; };
listen-on-v6 { any; };

allow-query { any; };
allow-recursion { 192.168.0.0/16; 10.0.0.0/8; };

recursion yes;

};

区域配置

/etc/bind/named.conf.local

zone "example.com" { type master; file "/etc/bind/zones/db.example.com"; allow-transfer { 192.168.1.2; }; };

zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/zones/db.192.168.1"; };

区域文件

/etc/bind/zones/db.example.com

$TTL 604800 @ IN SOA ns1.example.com. admin.example.com. ( 2024011501 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL

; Name servers @ IN NS ns1.example.com. @ IN NS ns2.example.com.

; A records @ IN A 192.168.1.10 ns1 IN A 192.168.1.1 ns2 IN A 192.168.1.2 www IN A 192.168.1.10 mail IN A 192.168.1.20

; CNAME records ftp IN CNAME www.example.com.

; MX records @ IN MX 10 mail.example.com.

CoreDNS

配置文件

Corefile

.:53 { forward . 8.8.8.8 8.8.4.4 cache 30 log errors }

example.com:53 { file /etc/coredns/db.example.com log errors }

Kubernetes CoreDNS

ConfigMap

apiVersion: v1 kind: ConfigMap metadata: name: coredns namespace: kube-system data: Corefile: | .:53 { errors health { lameduck 5s } ready kubernetes cluster.local in-addr.arpa ip6.arpa { pods insecure fallthrough in-addr.arpa ip6.arpa ttl 30 } prometheus :9153 forward . /etc/resolv.conf { max_concurrent 1000 } cache 30 loop reload loadbalance }

常见场景

场景 1:DNS 解析排查

1. 检查本地配置

cat /etc/resolv.conf

2. 测试 DNS 服务器连通性

ping 8.8.8.8

3. 查询解析

dig example.com dig @8.8.8.8 example.com

4. 追踪解析路径

dig +trace example.com

5. 检查 DNS 缓存

systemd-resolve --statistics

场景 2:清除 DNS 缓存

systemd-resolved

systemd-resolve --flush-caches

nscd

systemctl restart nscd

dnsmasq

systemctl restart dnsmasq

BIND

rndc flush

macOS

sudo dscacheutil -flushcache sudo killall -HUP mDNSResponder

场景 3:测试 DNS 性能

使用 dig 测试响应时间

dig example.com | grep "Query time"

批量测试

for i in {1..10}; do dig +noall +stats example.com | grep "Query time" done

使用 dnsperf

dnsperf -s 8.8.8.8 -d queries.txt

场景 4:配置内部 DNS

添加内部域名解析

/etc/hosts

192.168.1.100 app.internal 192.168.1.101 db.internal

或配置 dnsmasq

/etc/dnsmasq.conf

address=/internal/192.168.1.100 server=8.8.8.8

故障排查

问题 排查方法

解析失败 检查 resolv.conf、DNS 服务器

解析慢 检查 DNS 服务器响应、网络延迟

缓存问题 清除本地缓存、检查 TTL

记录不存在 检查区域文件、SOA 序列号

检查 DNS 端口

ss -ulnp | grep :53 netstat -ulnp | grep :53

测试 TCP/UDP

dig +tcp example.com dig +notcp example.com

检查 BIND 日志

tail -f /var/log/named/query.log journalctl -u named -f

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

cron

No summary provided by upstream source.

Repository SourceNeeds Review
General

system-admin

No summary provided by upstream source.

Repository SourceNeeds Review
General

systemd

No summary provided by upstream source.

Repository SourceNeeds Review
General

vpn

No summary provided by upstream source.

Repository SourceNeeds Review