原创 花十一一 2023-08-27 18:38 北京
DNS协议建立在UDP或TCP 协议之上,属于应用层协议,默认使用 53 端口。
搭建本地DNS服务器执行如下命令安装bind9。
# apt-get install bind9
zone "huasec.cn"{
type master;
file "/etc/bind/db.huasec.cn";
};
zone "10.17.172.in-addr.arpa"{
type master;
file "/etc/bind/db.172.huasec.com";
};
/etc/bind# cat db.huasec.cn
$TTL 604800@ IN SOA huasec.cn. admin.huasec.cn. (
2023082201 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL;
@ IN NS huasec.cn.
huasec.cn IN NS 172.17.10.43
www IN A 172.17.10.43
local IN A 172.17.10.43
host IN A 172.17.10.43
@ IN A 172.17.10.43
@ IN AAAA ::1
/etc/bind# cat db.172.huasec.com
$TTL 604800@ IN SOA huasec.com. root.huasec.com. (
2023082201;Serial
604800 ;Refresh
86400 ;Retry
2419200 ;Expire
604800) ;Negative Cache TTL;
@ IN NS huasec.com.
52 IN PTR www.huasec.com.
52 IN PTR nsl.huasec.com.
/etc/bind
options {
directory "/var/cache/bind"; // If there is a firewall between you and nameservers you want // to talk to, you may need to fix the firewall to allow multiple // ports to talk. See http://www.kb.cert.org/vuls/id/800113 // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder.
forwarders {
114.114.114.114;
}; //======================================================================== // If BIND logs error messages about the root key being expired, // you will need to update your keys. See https://www.isc.org/bind-keys //========================================================================
dnssec-validation auto;
auth-nxdomain no;
listen-on-v6 { any; };
listen-on port 53 {172.17.10.52;};
allow-transfer {any; };
allow-query{ any; };
};
DNS协议解析使用wireshark捕获查询www.baidu.com的DNS数据包,先来解析下请求包。Transaction ID: 0x733c,用来对应DNS查询和响应的唯一ID。Flags段中标志位Response,用于区分查询报文和响应报文,0 表示查询报文,1 表示响应报文。Flags段中标志位Opcode代表操作码,0:标准查询;1 表示反向查询;2 表示服务器状态请求;3仅限用于响应,代表服务器状态。Flags段中标志位Recursion desired值为1,说明该查询是递归查询Questions: 问题区段中的问题记录数。如果查询失败,不会递增问题记录数,因为无法确定查询结果是否正确。Answer RRs,回答资源记录数Authority RRs,权威名称服务器计数Additional RRs,附加资源记录数Queries: 记录查询内容和类型。当前的查询域名是www.baidu.com、查询记录为A、地址类型是IN(互联网地址)。常见的 Class(地址类型)有以下三种。CH和HS使用范围很局限,已经很少使用了。
IN(Internet):适用于 Internet 环境。
CH(Chaosnet):适用于 Chaosnet 环境。
HS(Hesiod):适用于 Hesiod 数据库。
DNS资源记录类型
A /AAAA记录A(Address)记录用于将域名映射到一个 IPv4 地址。AAAA(IPv6 Address)记录用于将域名映射到一个 IPv6 地址。每个A / AAAA 记录包含以下信息:
域名:需要解析的域名。
TTL(Time To Live):DNS 缓存该 A / AAAA记录的时间。
A / AAAA记录类型(Type):A / AAAA。
IPv4 /IPv6地址:指向的 IPv4/ IPv6 地址。
CNAME记录CNAME(Canonical Name)记录用于将一个域名映射到另一个域名。CNAME 记录通常用于将某个域名的别名(Alias)指向其真实的主机名(Canonical Name)。每个条CNAME 记录包含以下信息:
Name:需要解析的域名。
TTL(Time To Live):DNS 缓存该 CNAME 记录的时间。
CNAME 记录类型(Type):CNAME 记录类型通常为 CNAME 类型。
主机名(Canonical Name):指向别名所对应的真实主机名。
NS记录NS(Name Server)用于指定负责管理域名的DNS 服务器。每个NS记录包含以下信息:
域名:该 NS 记录对应的域名。
TTL(Time To Live):DNS 缓存该 NS 记录的时间。
NS 记录类型(Type):NS 记录类型通常为 NS 类型。
域名服务器(Name Server):负责管理该域名的 DNS 服务器的主机名。
SOA记录SOA(Start of Authority)记录用于指定一个域名的控制和管理权。每个域名至少有一个 SOA 记录。SOA 记录包含以下信息:
域名(Name):该 SOA 记录所属的域名。
主要名称服务器(MNAME):负责管理该域名的主要名称服务器。
管理员电子邮件地址(RNAME):该域名管理员的电子邮件地址,以 @ 替换为 .(点),并且最后有一个句点(.)
序列号(SERIAL):该域名的版本号,每次进行更改时必须递增。
刷新时间(REFRESH):从主要名称服务器获取该域名数据的间隔时间。
重试时间(RETRY):无法访问主要名称服务器时等待再次尝试的间隔时间。
过期时间(EXPIRE):如果无法更新该域名,则视为该域名已过期的时间。
默认TTL(Time To Live):在没有其他 TTL 指定的情况下,使用该域名中的资源记录的默认生存时间。
PTR记录
PTR记录用于反向DNS查询,即从ip反查域名。PTR(Pointer)记录通常被称为反向解析记录(Reverse DNS Record),用户可以通过 IP 地址查找相应的域名。每个 PTR 记录包含以下信息:
反向解析记录:需要解析的 IP 地址。
TTL(Time To Live):DNS 缓存该 PTR 记录的时间。
PTR 记录类型(Type):PTR 记录类型通常为 PTR 类型。
域名:指向的域名。
MX记录MX记录是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器。MX(Mail Exchanger)记录用于指定负责接收域名电子邮件的邮件服务器。每个 MX 记录包含以下信息:
域名:该 MX 记录对应的域名。
TTL(Time To Live):DNS 缓存该 MX 记录的时间。
优先级(Priority):表示当存在多个 MX 记录时,邮件客户端应该选择哪个 MX 记录来发送邮件。数值越小则优先级越高,优先级相同的 MX 记录会轮流接收邮件。
邮件交换器(Mail Exchanger):负责接收该域名电子邮件的邮件服务器的主机名。
TXT/SPF记录
TXT 记录用于允许域名所有者向域名系统中添加任意文本信息。通常被用于验证域名所有权、提供安全策略指南和其他类型的元数据。包含以下信息:
域名:该 TXT 记录对应的域名。
TTL(Time To Live):DNS 缓存该 TXT 记录的时间。
TXT 记录类型(Type):TXT 记录类型通常为 TXT 类型。
TXT 记录值:TXT 记录的值是一个包含文本信息的字符串,可以是任何字符或文本。最长的单个 TXT 记录值为255个字节。
域名:该 SPF 记录对应的域名。
TTL(Time To Live):DNS 缓存该 SPF 记录的时间。
SPF 记录类型(Type):SPF 记录类型通常为 TXT 类型。
SPF 记录值:SPF 记录的值定义哪些 IP 地址或域名可以发送该域名的电子邮件。SPF 记录可以包含多个条目,每个条目之间用空格分隔,例如"v=spf1 include:spf1.baidu.com include:spf2.baidu.com include:spf3.baidu.com include:spf4.baidu.com mx ptr -all"
应用场景
DNS隧道项目地址:https://github.com/yarrick/iodine.git使用方法:
# git clone https://github.com/yarrick/iodine.git# cd iodine # make
# ./iodined -P 123456 -f -DD 192.168.0.1 huasec.cn
# ./iodine -f -P 123456 huasec.cn