DNS、DHCP专业解释、dnsmasq

1、概述

域名系统(Domain Name System, DNS)是因特网的一项基础服务。它作为将域名和IP 地址相互映射的一个分布式数据库,能够使人通过域名来更方便地访问互联网中的主机。
动态主机配置协议(Dynamic Host Configuration Protocol,DHCP) 是局域网的基础服务, DHCP 是一种动态地向网络终端主机提供配置参数的协议,能够简化网络的管理。

2、DNS 的由来

历史:主机系统hosts

在主流的操作系统上,均有一个 hosts 的配置文件,这个配置文件的主要作用是定义IP 地址和主机名的映射关系,这个配置可以使用文本编辑器打开并进行编辑。在微软视窗操作系统的位置为 C:\Windows\System32\Drivers\etc\hosts,当用户在浏览器中输入所想访问的网址时,系统首先从这个 hosts 文件中查找域名的 IP 地址,如果找到就打开 IP 地址的网页,如果没有找到就向 DNS 服务器进行查询
在 Linux 系统,主机配置文件为/etc/hosts,这是主机名的静态查找表。这个文件是简单的文本文件,用于保存主机名称和 IP 之间对应关系。其格式为一个 IP 地址占用一行,每一个主机关联一个 IP 地址。格式如下所示:
127.0.0.1 localhost [aliases…]各个域之间用空格或制表字符分开。以“#”开头的文本行为注释行,不做处理。
目前在主流的现代操作系统中,主机系统表已经很少使用,已经被域名查找机制 DNS 取代,但它仍广泛地使用在以下 5 个场景:

  • 启动中
  • DNS 输入
  • 加快域名解析,节省网络流量
  • 屏蔽网站(域名重定向)。屏蔽广告网站,有很多网站带有广告
  • 防止 DNS 污染和 DNS 劫持
    在这里插入图片描述

3、DNS 基础

主机系统适合小型网络等一些特殊的场景。在因特网中,主机地址非常庞大,并且主机的 IP 地址经常改变,因此使用域名系统 DNS 代替主机系统。

DNS 可以被视为一种用于 TCP/IP 应用程序的分布式数据库,它提供主机名字和 IP 地址间的相互转换。这里提到的分布式是指在因特网上的单个站点不能拥有所有的信息。每个站点(如大学中的系、校园、公司或公司的部门)保留它自己的信息数据库,并运行一个服务器程序供因特网上的其他系统查询。

域名结构
DNS 是一个分层级的分布式名称对应系统, 采用类似 Linux 目录树的层级结构,如图 11-1 所示。 其最顶端有一个未命名的根节点, 然后其下分为好几个基本类别名称(称为顶层域名),例如 com、 org、 net 和 gov 等 3 字符域名。例如,一个完整的域名为www.bjbook.net。域名树中的每个节点必须有一个唯一的名称,但域名树中的不同层级节点可使用相同的标识,只要在不同的父节点下即可。
在这里插入图片描述
4、DHCP ( Dynamic Host Configuration Protocol 动态主机配置协议)

DHCP 服务器拥有一个 IP 地址池,当任何启用 DHCP 的客户机连接到网络时,可从服务器那里租借一个 IP 地址,不再使用的 IP 地址自动回收到地址池中,供再次分配使用。

DHCP 保证同一时刻的任何 IP 地址只能分给一个客户机使用。当 DHCP 客户机重新启动时,应配置为相同的 IP 地址。在 DHCP 服务器重启的情况下,也应当给每一个客户机分配相同的 IP 地址,并且和手动分配的 IP 地址共存。这要求 DHCP 服务器对已分配的地址进行保存,并且在客户端不使用时进行回收。
DHCP 是一种动态地向网络终端提供配置参数的协议。在终端提出申请之后, DHCP服务器可以向终端提供 IP 地址及子网掩码、网关和 DNS 服务器地址等参数
DHCP 协议基于 UDP 协议,客户端的端口号是 68,服务器的端口号是 67。

udhcpd就是终端设备作为DHCP服务器

udhcpc就是终端设备作为DHCP客户端

DHCP是动态主机配置协议(Dynamic Host Configuration Protocol)的缩写。它的流程比较简单,一般情况下只需要4个包(DHCPDISCOVER, DHCPOFFER, DHCPREQUEST, DHCPACK)的交互,就可以完成IP的分配。抓包过程请参考在路由器上用tcpdump指令抓取ap与sta交互包

当client第一次连到网络时,它会发现自己没有任何的网络设置包括IP地址。于是client会向整个网络广播DHCPDISCOVER包,申请IP以及网络设置。网络中的DHCP server在收到DHCPDISCOVER包后,根据自己的配置挑选一个IP以及相应的网络设置通过DHCPOFFER包发送给client。当client收到DHCPOFFER后,它会选择是否接受这个offer。如果选择接受的话,client会发送DHCPREQUEST到server。server在接收到DHCPREQUEST,会确认这个IP lease成立。到此,申请一个新的IP的DHCP过程结束。当然,在正常的网络环境中,整个过程有可能不是这么简单。例如网络中有多个DHCP服务器,或者该IP已经被其他client占用等情况。
下文将通过对ISC DHCP的主要源代码的分析,来解析其分配IP的流程和机制。在源代码中其主要函数dhcpdiscover、dhcprequest、和dhcprelease分别用于处理与其函数名字相同的包。

确定分配IP的网段
函数void dhcp (struct packet *packet)是处理DHCP包的入口函数,在进入这个函数的时候,对包的解析已经完成,已经将包的内容转换成内部结构struct packet。后文所有分析也都是建立在这个基础之上的。

一进入dhcp函数,首先就是调用int locate_network (struct packet *packet)来确定client所属subnet,以便从这个subnet下分配正确的IP。
具体请参考:ISC DHCP 分配IP流程分析

5、dnsmasq

智能路由器服务于家庭和小型企业网络,当多个人同时上网时,客户机经常进行 DNS查询,大多查询会是重复的域名,如果有一个 DNS 缓存代理服务于局域网,这样将减少DNS 的因特网存取,加快 DNS 访问速度和节省网络流量, dnsmasq 软件就是在这种情况下应运而生的。 也就是说只有ap(路由器)才有dnsmasq,sta是没有的。dnsmasq可以理解为一个services,或者一个应用

dnsmasq 是轻量级 DHCP、 TFTP 和 DNS 缓存服务器,给小型网络提供 DNS 和 DHCP服务。 它的设计目标是轻量级的 DNS,并且占用空间小, 适用于资源受限的路由器和防火墙,以及智能手机、便携式热点设备等。

dnsmasq 接收 DNS 请求,并从本地缓存中读取,如果缓存不存在就转发到一个真正的递归 DNS 服务器。它也可以读取/etc/hosts 的内容,这样就可以对局域网的主机查询进行DNS 查询响应,这些局域网的主机名称不会暴露在全局 DNS 域中。

配置
dnsmasq 的配置文件位于/etc/config/dhcp,控制着 DNS 和 DHCP 服务选项。
在这里插入图片描述
dnsmasq 支持自定义主机或者是自定义域名,使用 domain 配置节来管理自定义域名。我们使用 uci命令来增加两条自定义域名记录。首先创建一个类型为 domain匿名的配置节,然后设置其名称和 IP 地址。示例 11-3 创建了两个匿名配置节,然后使用 uci commit 命令提交修改。

root@zhang:/#uci add dhcp domain
root@zhang:/#uci set dhcp.@domain[-1].name="zhang"
root@zhang:/#uci set dhcp.@domain[-1].ip="192.168.6.10"
root@zhang:/#uci add dhcp domain
root@zhang:/#uci set dhcp.@domain[-1].name="bjbook.net"
root@zhang:/#uci set dhcp.@domain[-1].ip="192.168.6.20"
root@zhang:/#uci commit dhcp

记录被写到/etc/config/dhcp 文件中,但现在功能并未生效。调用重启 dnsmasq 进程命令来使 dnsmasq 读取这些配置更改,命令为/etc/init.d/dnsmasq restart。生效后内容如下:

config domain
	option name `zhang`
	option ip `192.168.6.10`
config domain
	option name `bjbook.net`
	option ip `192.168.6.20`

实际的配置将转换为 dnsmasq 的配置,配置文件为/var/etc/dnsmasq.conf。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值