无线学习之DNS专题-1-介绍及配置

一,什么是DNS

DNS(域名系统):是互联网的一项服务。它可以将域名和IP地址互相映射的一个分布式数据库。----百度百科

DNS的前世今生:60年代,美国国防部高级研究计划署(ARPA)开发了世界上第一个运营的封包交换网络阿帕网(ARPANET),也就是今天互联网的始祖。阿帕网诞生的背景:美国国防部认为,如果仅有一个集中的军事指挥中心,万一被苏联摧毁,全国的军事指挥将处于瘫痪状态,后果不堪设想,因此有必要设计出一套安全的指挥系统—分散式的指挥系统,由一个个分散的指挥点组成,当指挥点被摧毁,仍可正常工作,而这些分散的指挥点必须通过网络通讯。

网络通讯需要通讯协议,则衍生出了TCP,UDP;网络设备必须有地址,则衍生出了IP;访问网络服务需要可读的名字,则有了主机名、域名的概念。

DNS则是在阿帕网的基础上诞生。70年代,ARPANET只有几百台主机相连,只需要一个hosts文件主可以容纳所有的主机信息(hosts提供主机与IP映射关系),也就可以用主机名进行网络信息共享,而无需记住IP地址。但随着网络的扩张,hosts文件已经不能够快速完成解析任务,而此时DNS带着使命诞生了。----来源CSDN博主「月亮床」

DNS查询过程:

1,DNS客户端向DNS服务器端发送查询消息,该消息包含要访问的域名(如:www.baidu.com)等消息。

2,DNS服务端收到请求后,经过一系列的查询后,返回该域名对应的IP地址(如:14.215.177.38)给DNS客户端。

3,DNS客户端得到IP地址,就可以向该IP地址建立TCP/UDP等通信连接。

二,DNS客户端配置文件说明

/etc/resolv.conf是DNS客户端域名解析的配置文件,参数格式为:关键字+配置参数。

其中关键字主要有四个,分别如下

nameserver <IP address>        #定义DNS服务器的IP地址
domain <local domain name>     #定义本地域名
search <search list>           #定义域名的搜索列表
sortlist <IP address>/<Mask>   #对查询结果进行排序

常见例子如下:

#例子1:nameserver
nameserver 192.168.1.1
nameserver 8.8.8.8
nameserver 8.8.4.4

nameserver用于配置域名服务器(DNS服务端地址),最多可设置3个域名服务器,如果存在多个域名服务器地址,解析库将按照列表顺序查询。若查询超时则顺序查询下面的域名服务器地址,直到所有的域名服务器都尝试一遍。如果没有域名服务器地址或者这个配置文件不存在,则默认使用本机(127.0.0.1)作为域名服务器地址。

#例子2:domain
domain example.com
nameserver 192.168.0.100
nameserver 8.8.4.4

domain本地域名,访问简短域名时如test,DNS客户端会尝试解析http://test.example.com,即进行域名拼接。

#例子3:search
search example.com company.net
nameserver 192.168.0.100
nameserver 8.8.8.8

用 search 指令来解析短主机名——例如 test,DNS客户端将尝试解析 http://test.example.com 和 http://test.company.net ,并将第一个成功的查询作为结果返回。domain 和 search 不能共存,如果同时存在,后面出现的将覆盖前面的定义。

#例子4:sortlist
sortlist 130.155.160.0/255.255.240.0 130.155.0.0

允许将得到域名结果进行特定的排序。它的参数为网络/掩码对,允许任意的排列顺序。

三,resolv.conf配置文件的由来

以下源码分析基于openwrt系统

3.1,配置文件/etc/resolv.conf是软链接,指向/tmp/resolv.conf

root@zhiwen:~# ls /etc/resolv.conf -l
lrwxrwxrwx 1 root     root 16 Jul 27 18:42 /etc/resolv.conf -> /tmp/resolv.conf

3.2,创建resolv.conf文件,由系统boot(/etc/init.d/boot)脚本生成resolv.conf.auto并创建软连接/tmp/resolv.conf.auto

# 源码如下:
boot() {
	...
	touch /tmp/resolv.conf.auto
	ln -sf /tmp/resolv.conf.auto /tmp/resolv.conf
	...
}

3.2,每次网络接口reload时配置文件参数,netifd(网络配置的守护进程)在wan接口up的时候进行配置/tmp/resolv.conf

# 源码如下:
#define DEFAULT_RESOLV_CONF	"./tmp/resolv.conf"
void interface_write_resolv_conf(void)
{
	...
	sprintf(path, "%s.tmp", resolv_conf);
	f = fopen(path, "w+");
	__interface_write_dns_entries(f);
	...
	crcnew = crc32_file(f);
	fclose(f);
	crcold = crcnew + 1;
	f = fopen(resolv_conf, "r");
	...
	if (crcold == crcnew) {
		unlink(path);
	} else if (rename(path, resolv_conf) < 0) {
		D(INTERFACE, "Failed to replace %s\n", resolv_conf);
		unlink(path);
	}
}

3.3,dnsmasq(/etc/init.d/dnsmasq)启动时配置/tmp/resolv.conf

dnsmasq_start() 
{
	...
	[ "$resolvfile" = "/tmp/resolv.conf.auto" ] && {
        rm -f /tmp/resolv.conf
        [ $ADD_LOCAL_DOMAIN -eq 1 ] && [ -n "$DOMAIN" ] && {
        echo "search $DOMAIN" >> /tmp/resolv.conf
        }
        DNS_SERVERS="$DNS_SERVERS 127.0.0.1"
        for DNS_SERVER in $DNS_SERVERS ; do
        echo "nameserver $DNS_SERVER" >> /tmp/resolv.conf
        done
	}
	...
}

总结:文章提到了DNS是什么,DNS常用配置,DNS配置文件由来以及什么时候被配置。接下来将介绍配置文件是如何被使用的,DNS服务器的地址又是如何获取的?如果感兴趣,欢迎订阅公众号【从零开始学无线】,一起学习交流!

                                                               

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值