- 114: 114.114.114.114
- 腾讯: 119.29.29.29
- 海外地区DNS:
- OpenDNS: 208.67.222.222
- GoogleDNS: 8.8.8.8
- DNSCrypt: 使用这个软件可以防范常见的dns污染问题。
工具
- yum install bind-utils , apt install dnsutils
- dig : 测试域名
dig @DNS服务器的IP地址 域名
- nslookup : 检测DNS解析
nslookup 域名 DNS服务器的IP地址
- mtr <ip地址> : 查询链路
设置DNS
在/etc/resolv.conf中添加这两行
nameserver 114.114.114.114
nameserver 8.8.8.8
- nameserver 表明DNS服务器的IP地址。可以有很多行的nameserver,每一个带一个IP地址。在查询时就按nameserver在本文件中的顺序进行,且只有当第一个nameserver没有反应时才查询下面的nameserver
- domain 声明主机的域名。很多程序用到它,如邮件系统;当为没有域名的主机进行DNS查询时,也要用到。如果没有域名,主机名将被使用,删除所有在第一个点( .)前面的内容
- search 它的多个参数指明域名查询顺序。当要查询没有域名的主机,主机将在由search声明的域中分别查找。domain和search不能共存;如果同时存在,后面出现的将会被使用
如何通过DNS协议解析域名
- 什么是DNS?
- 一个用于将人类可读的"域名"(例如www.taohui.pub)与服务器的IP地址(例如,116.62.160.193)进行映射的数据库
- 递归查询
- 根域名服务器
- 权威服务器
- dig工具查询
|
|
- DNS报文
|0 |1 |2 |3 |
+--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|
| ID |QR| Opcode |AA|TC|RD|RA| Z|AD|CD| RCODE |
+--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|
| QDCOUNT | ANCOUNT |头部
+--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|
| NSCOUNT | ARCOUNT |
+--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|
+--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|
| Questions ... |Question
+--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|部分
+--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|
| Answer RRs ... |
+--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|Response
| Authority RRs ... |部分
+--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|
| Additional RRs ... |
+--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|
BPF过滤器是没有dns过滤类型的,只有udp的,使用udp and port 53。
- Question格式
-
QNAME编码规则:
- 以.分割为多段, 每段以字节数打头 * 每段字节数: 前2比特必须为00,所以只能表示2^6-1 = 63字节 * 每段字符: 使用ASCII编码
- 全部完了以后,以0结尾
-
QTYPE常用类型
值 类型 意义 1 A IPv4地址 2 NS 权威域名服务器 5 CNAME 别名 15 MX 邮件交换 16 TXT 文本字符串 28 AAAA IPv6地址 -
QCLASS: IN表示internet
- Answer格式 注意:Answer报文也会带上Query报文
- NAME: 前2位为11,后接要引用的QNAME偏移量(从UDP报文头开始往后数),总共2个字节
- TYPE
- CLASS
- TTL: Time To Live
- RDLENGTH:指明RDATA的长度
- RDATA: 查询值,如IP地址,或者别名
- 别名遵循QNAME编码规则
某长时间运行的进程启动之后,改了/etc/hosts文件,该进程能感知到hosts文件的变化么?
浏览器:可以感知。
nginx会缓存DNS信息,如果缓存命中,哪怕域名对应的ip不通,也不会读取/etc/hosts;只有缓存中没有该域名的信息,才会读取/etc/hosts。
runc起的容器挂载了宿主机的/etc/hosts,为何使用vim编辑了宿主机的/etc/hosts,容器内无法获取到最新的文件内容呢?使用 vim或者vi 修改文件时,会创建临时文件并替换原文件(改变 inode),绑定挂载基于 inode,容器仍指向旧的 inode。
Python/Go/Rust通常遵循操作系统行为,每次解析时都会重新读取 hosts 文件。
本文发表于 0001-01-01,最后修改于 0001-01-01。
本站永久域名「 jiavvc.top 」,也可搜索「 后浪笔记一零二四 」找到我。