上一个星期在查找一个设备无法解析公司内部域名的问题,最终查出来问题是在网关设备上运行的
Dnsmasq
服务没有正确的配置上游 DNS 服务器,导致内网域名无法被正常的解析。在这期间对DNS协议
又重新学习了一番,并且对Dnsmasq
服务有了一些了解,结合网上一些资料,对Dnsmasq
提供的 DNS 和 DHCP 服务的配置做一些总结和备忘。
Dnsmasq
是一个开源的项目,可以在 thekelleys 上找到最新版本和源码,它能提供 DNS 、DHCP、TFTP、PXE 等功能。Dnsmasq
的 DNS 服务工作原理是,当接收到一个 DNS 请求是, Dnsmasq
首先会查找 /etc/hosts
文件,如果没有查找到,会查询本地 DNS 缓存记录,如果还是未找到对应的记录,则会将请求装发到 /etc/resolv.conf
文件中定义的上游 DNS 服务器中,从而实现对域名的解析。
基于上述原理,我们可以在 /etc/hosts
文件中添加本地内网的域名解析,从而实现本地内网的域名解析。同时我们还可以使用 Dnsmasq
来为一些特定的域名指定 DNS 服务器,或者阻止某些域名的访问。由于 Dnsmasq
会缓存上游 DNS 服务的查询记录,从而可以提高访问过的网址的连接速度。
默认情况下,Dnsmasq
会从 /etc/dnsmasq.conf
读取配置项,我们也可以使用 -C
的启动参数来指定配置文件。下面介绍一下常用的 DNS 和 DHCP 服务的配置参数。
通用配置项
|
|
DNS 服务配置参数
|
|
/etc/resolv.conf
文件样例
|
|
/etc/hosts
文件样例
|
|
DHCP 服务配置参数
|
|
dhcp-option 常用取值及含义
option | option 作用 |
---|---|
1 | 设置子网掩码选项 |
3 | 设置网关地址选项 |
6 | 设置DNS服务器地址选项 |
12 | 设置域名选项 |
15 | 设置域名后缀选项 |
33 | 设置静态路由选项。该选项中包含一组有分类静态路由(即目的地址的掩码固定为自然掩码,不能划分子网),客户端收到该选项后,将在路由表中添加这些静态路由。如果存在Option121,则忽略该选项 |
44 | 设置NetBios服务器选项 |
46 | 设置NetBios节点类型选项 |
50 | 设置请求IP选项 |
51 | 设置IP地址租约时间选项 |
52 | 设置Option附加选项 |
53 | 设置DHCP消息类型 |
54 | 设置服务器标识 |
55 | 设置请求参数列表选项。客户端利用该选项指明需要从服务器获取哪些网络配置参数。该选项内容为客户端请求的参数对应的选项值 |
58 | 设置续约T1时间,一般是租期时间的50% |
59 | 设置续约T2时间。一般是租期时间的87.5% |
60 | 设置厂商分类信息选项,用于标识DHCP客户端的类型和配置 |
61 | 设置客户端标识选项 |
66 | 设置TFTP服务器名选项,用来指定为客户端分配的TFTP服务器的域名 |
67 | 设置启动文件名选项,用来指定为客户端分配的启动文件名 |
77 | 设置用户类型标识 |
121 | 设置无分类路由选项。该选项中包含一组无分类静态路由(即目的地址的掩码为任意值,可以通过掩码来划分子网),客户端收到该选项后,将在路由表中添加这些静态路由 |
148 | EasyDeploy中Commander的IP地址 |
149 | SFTP和FTPS服务器的IP地址 |
150 | 设置TFTP服务器地址选项,指定为客户端分配的TFTP服务器的地址 |
dhcp-option 遵循RFC 2132(Options and BOOTP Vendor Extensions),可以通过 dnsmasq –help dhcp 来查看具体的配置很多高级的配置,如 iSCSI 连接配置等同样可以由 RFC 2132 定义的 dhcp-option 中给出。