dns
10
总安装量
4
周安装量
#30641
全站排名
安装命令
npx skills add https://github.com/chaterm/terminal-skills --skill dns
Agent 安装分布
claude-code
4
opencode
3
windsurf
2
codex
2
antigravity
2
Skill 文档
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