上一个星期在查找一个设备无法解析公司内部域名的问题,最终查出来问题是在网关设备上运行的
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 中给出。