OpenWrt之dnsmasq工具(DHCP、TFTP、DNS缓存服务器)
OpenWrt之dnsmasq工具(DHCP、TFTP、DNS缓存服务器)
介绍
- 智能路由器服务于家庭和小型企业网络,当多个人同时上网时,客户机经常进行DNS查询,大多查询会是重复的域名,如果有一个 DNS缓存代理 服务于局域网,这样将减少DNS的因特网存取, 加快DNS访问速度和节省网络流量 ,dnsmasq软件就是这样应运而生的。
- dnsmasq是轻量级DHCP、TFTP和DNS缓存服务器, 给小型网络提供DNS和DHCP服务 。它的设计目标是轻量级的DNS,并且 占用空间小 ,适用于资源受限的路由器和防火墙,以及智能手机、便携式热点设备等
- 工作原理: dnsmasq接收DNS请求,并从本地缓存中读取,如果缓存不存在就转发到一个真正的递归 DNS 服务器。它也可以读取/etc/hosts的内容,这样就可以对局域网的主机查询进行DNS查询响应,这些局域网的主机名称不会暴露在全局DNS域中
本地DNS服务器
- DNS子系统提供网络的本地DNS服务器,即只服务于局域网的DNS服务器。转发所有类型的查询请求到上游递归DNS服务器,并且缓存通用记录类型(A、AAAA、CNAME 和 PTR)。
- 支持的主要特性有以下几方面:
- 本地DNS服务器可以通过读取/etc/hosts来定义,或者通过导入DHCP子系统的名字,或者通过各种各样的用户配置
- 上行服务器可以各种遍历的配置,包括动态配置
- 认证DNS模式允许本地DNS名称导出到全球DNS区域。dnsmasq作为这个区域的认证服务器,也可以提供区域传送
- 从上游服务器DNS响应执行DNSSEC验证,防止欺骗和缓存中毒
- 指定子域名可以继承自它们的上行 DNS 服务器,这样使VPN配置更容易
- 国际化域名支持等
dnsmasq配置文件(/etc/config/dhcp)
- dnsmasq配置文件位于
/etc/config/dhcp
,控制着DNS和DHCP服务选项。默认配置包含一个通用的配置节来指定全局选项,还有一个或多个DHCP来定义动态主机配置服务的网络接口和地址池等。还可以包含多个域名和主机配置,并且提供客户端地址列表来查询。
#cat /etc/config/dhcp
config dnsmasqoption domainneeded '1'option boguspriv '1'option filterwin2k '0'option localise_queries '1'option rebind_protection '1'option rebind_localhost '1'option local '/lan/'option domain 'lan'option expandhosts '1'option nonegcache '0'option authoritative '1'option readethers '1'option leasefile '/tmp/dhcp.leases'option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'option nonwildcard '1'option localservice '1'option filter_aaaa '1'config dhcp 'lan'option interface 'lan'option start '100'option limit '150'option leasetime '12h'option dhcpv6 'server'option ra 'server'option ra_slaac '1'list ra_flags 'managed-config'list ra_flags 'other-config'config dhcp 'wan'option interface 'wan'option ignore '1'config odhcpd 'odhcpd'option maindhcp '0'option leasefile '/tmp/hosts/odhcpd'option leasetrigger '/usr/sbin/odhcpd-update'option loglevel '4'
- local和domain选项使得dnsmasq使用/etc/hosts文件里的条目定义来提供解析,如果DHCP配置了lan的域,那么获得地址的客户机也可以通过主机名解析。
- domainneeded、 boguspriv、localise_qureies、以及expandhosts选项,保证了本地域名的请求,不会转发到上游域名解析服务器上。
- authoritative选项保证了路由器成为本网络上的唯一一台DHCP服务器;客户机可以更快的获取IP地址的配置。
- leasefile文件用于保存租约内容,这样如果dnsmasq如果重启的话就可以根据该文件重新维护租约信息。
- resolvfile定义了dnsmasq使用的文件,该文件用于找到上游服务器,通常由WAN DHCP客户端和PPP客户端创建。
- enable_tftp打开tftp服务,而tftp_root定义了TFTP服务器的文件根目录。你可以在客户端访问tftp服务器时,需要指定IP。在客户机,通过设定环境变量serverip来定义(e.g. setenv serverip 192.168.1.10)。
- rebind_protection :通过丢弃上游RFC1918响应来启用DNS重新绑定攻击保护
- rebind_localhost : 允许上游127.0.0.0/8响应(基于DNS的黑名单服务所需)仅在启用重新绑定保护时生效
- nonegcache: 禁止缓存否定的“没有这样的域”响应
- filterwin2k:不要转发公共名称服务器无法响应的请求。如果需要解析SRV记录或使用SIP电话,请确保禁用该功能。
- readethers:从“/etc/ethers”读取静态租约条目,在SIGHUP上重新读取
- nonwildcard:只绑定已配置的接口地址,而不是通配符地址。
- localservice:仅接受来自地址位于本地子网(即服务器上存在接口的子网)的主机的DNS查询。
全局配置
- 下图所示的是dnsmasq的所有配置选项:
名 称 | 转换后配置 | 含 义 描 述 |
---|---|---|
domainneeded | domain-needed | 不会转发针对不带点的普通文本的A 或AAAA 查询请求到上行的域名 服务器。如果在/etc/hosts 和DHCP 中没有该名称将直接返回“not found” |
cachesize | cache-size | 指定缓存的大小。默认是 150 |
boguspriv | bogus-priv | 所有私有查找如果在/etc/hosts 没找到,将不转发到上行 DNS 服务器 |
filterwin2k | filterwin2k | 不转发公共域名不能应答的请求 |
localise_queries | localise-queries | 如果有多个接口,则返回从查询接口来的接口网络的主机 IP 地址。 在同一主机有多个 IP 地址时非常有用,返回查询网段的 IP 地址, 这样源主机和目标主机通信是将不会跨越路由器 |
rebind_protection | stop-dns-rebind | 上游域名服务器带有私有 IP 地址范围的响应报文将被丢弃 |
rebind_localhost | rebind-localhost-ok | 允许上游域名服务器的 127.0.0.0/8 响应, 这是采用 DNS 黑名单时所 需的服务, 这在绑定保护启用时使用 |
expandhosts | expand-hosts | 在/etc/hosts 中的名称增加本地域名部分 |
nonegcache | no-negcache | 在通常情况下,“no such domain”也会缓存,下次查询时不再转发 到上游服务器而直接应答,这个选项将禁用“no such domain”返回 的缓存 |
authoritative | dhcp-authoritative | 我们是局域网的唯一的 DHCP 服务器,当收到请求后会立即响应, 而不会等待,如果拒绝的话也会很快拒绝 |
readethers | read-ethers | 从/etc/ethers 文件中读取静态分配的表项。格式为硬件地址和主机名 或 IP 地址,当收到 SIGHUP 信号时也会重新读取 |
resolvfile | resolv-file | 指定一个 DNS 配置文件来读取上游域名服务器的地址,默认是从 /etc/resolv.conf 文件读取 |
DHCP地址池配置
- 类型为dhcp的配置节指定了每一个接口的DHCP设置,通常最少有一个服务于局域网接口的dhcp配置设置
- 配置选项如下:
名 称 | 含 义 |
---|---|
interface | 表示服务的网络接口,这个接口名称是 network 中配置的虚拟接口 |
start | 分配 IP 的起始地址 |
limit | 地址空间范围,默认为 150 |
leasetime | DHCP 分配IP 地址的租期, start 和limit 在生成dnsmasq 的配置文件时进行组合为dhcp-range |
ignore | dnsmasq 将忽略从该接口来的请求 |
例如:
config dhcp lanoption interface lan #指定了DHCP服务器的服务接口“lan”option start 100 #start:100 是客户端分配的IP地址起点 option limit 150 #limit: 150 总共可以分配150个IP 地址option leasetime 12h #12h 表示客户端得到的地址租约时间为 12 小时
域名配置
- dnsmasq 支持自定义主机或者是自定义域名,使用 domain 配置节来管理自定义域名
- 配置选项如下:
名 称 | 类 型 | 含 义 |
---|---|---|
name | 字符串 | 主机的域名,这个域名将不在因特网上查询 |
ip | IP 地址 | 域名对应的 IP 地址 |
例如:
- 第一步:我们使用uci命令来增加两条自定义域名记录。首先创建一个类型为domain匿名的配置节, 然后设置其名称和 IP 地址
uci add dhcp host
uci set dhcp.@host[-1].ip = "192.168.6.120"
uci set dhcp.@host[-1].mac=" 08:00:27:9d:89:e7"
uci set dhcp.@host[-1].name="buildServer"
uci commit dhcp
- 第二步:记录被写到/etc/config/dhcp 文件中,但现在功能并未生效。调用重启 dnsmasq 进程命 令来使 dnsmasq 读取这些配置更改
/etc/init.d/dnsmasq restart
- 第三步:实际的配置将转换为 dnsmasq 的配置,配置文件为/var/etc/dnsmasq.conf,生效后内容如下:
config hostoption ip '192.168.6.120'option mac ' 08:00:27:9d:89:e7'option name 'buildServer
- 第四步:然后在 OpenWrt shell 中 ping 主机名称 bjbook.net。这时将访问 192.168.6.20 这个 IP 地址,并从 192.168.6.20 收到响应。这和主机系统的功能完全相同,只是在/etc/hosts 文件 中只在本机生效,如果加载这里就可以服务于家庭网
主机配置
- DHCP 在分配 IP 时,选择一个未使用的 IP 地址进行分配。假定有一个服务器,也是 通过 DHCP 进行 IP 分配的,这样每次重启后分配的 IP 地址可能发生改变,这在访问服务 器时还需查看其 IP 地址。根据 MAC 地址分配固定 IP 地址可以解决这个问题。在 DHCP 配置文件中使用 host 来配置
- 配置选项如下:
名 称 | 类 型 | 含 义 |
---|---|---|
ip | 字符串 | 客户端所获得的 IP 地址 |
mac | 字符串 | 主机的网卡 MAC 地址 |
name | 字符串 | DHCP 客户端所获取到的主机名称,是否使用由客户端决策 |
DHCP客户端信息
- DHCP 还有一个功能是记录客户端列表。客户端列表显示当前所有通过 DHCP 服务器 获得 IP 地址主机的相关信息,包括客户端主机名称、MAC 地址、所获得的 IP 地址及 IP 地址的有效期。如下列出了所有保存字段的含义,我们可以通过/tmp/dhcp.leases 文件来 查看所有通过 DHCP 服务器获得 IP 地址的计算机信息
- 配置选项如下:
类 别 | 含 义 |
---|---|
有效时间(租期) | 指客户端计算机获得 IP 地址的有效时间,是指从 1970 年开始的一个秒值,到 这个时间之后地址将失效,客户端软件会在租期到期前自动续约 |
MAC 地址 | 获得 IP 地址的客户端计算机的 MAC 地址 |
IP 地址 | DHCP 服务器分配给客户端计算机的 IP 地址 |
客户端名称 | 显示获得 IP 地址的客户端计算机的主机名称 |
OpenWrt之dnsmasq工具(DHCP、TFTP、DNS缓存服务器)相关推荐
- 树梅派DNS缓存服务器建设
2019独角兽企业重金招聘Python工程师标准>>> 树梅派DNS缓存服务器建设 Hradware: 树梅派3B+ OS: Debian Gnu/Linux 9.4 安装软件: a ...
- DNS浅析-Bind软件的使用及搭建一个简单的DNS缓存服务器
引入DNS软件: Bind:Berkey Information Name Domain 对数据库的支持不太好,不支持多线程 PowerDNS 性能强大 速 度块 Bind软件的配置使用 yum l ...
- Linux的本地DNS缓存服务器
Linux的本地DNS缓存服务器 域名系统服务器的软件,在PC上,可以翻译的网站名称进入真正的IP地址上运行.在不同的话,如果你样的互联网地址到你的网页浏览器,你的互联网服务提供商的DNS服务器会考虑 ...
- RHEL4- DNS服务(六)构建DNS缓存服务器
RHEL4- DNS服务(六)构建DNS缓存服务器 如果要构建DNS缓存服务器其实不是很复杂,只要安装一个系统自带的软件包即可.其实这个软件包,我们在<RHEL4- DNS服务(一)bind ...
- Bind9:配置 DNS 授权服务器和 DNS 缓存服务器
文章目录 Bind9 安装 配置 DNS 授权服务器 配置 named.conf.options 添加正向解析 db.test.com 添加反向解析 db.1.169.183 配置 named.con ...
- Centos7 bind dns缓存服务器搭建?dns缓存在哪?如何验证是缓存在生效?
一. 实验环境 本次使用Centos7.8系统 名称 IP DNS-cache(缓存服务器) 10.20.177.248 DNS-client(客户端) 10.20.177.97 二.所需软件 此处默 ...
- 自建网络加速服务器,自建DNS缓存服务器加快上网速度
我们在浏览网页时,首先要通过DNS服务器来解析网站的地址,解析的时间虽然比较短,但如果DNS服务器的响应速度比较慢,或者DNS请求量过大,都会导致上网时等待时间过长,我们这里通过自己建立轻量级缓存DN ...
- 如何清除本地DNS缓存
每当你访问网站时,你的操作系统和网络浏览器都会保留该域和相应 IP 地址的记录,这解决了向DNS 服务器重复查询的需要,并允许你的系统或浏览器快速解析网站的网址.但是在某些情况下,例如:对网络问题进行 ...
- 自动运维PXE安装系统和DNS缓存解析
先用yum源安装tftp-server 和 dhcp syslinux 查看是否开机启动 再设置开机启动 找到pxelinx.0的文件 再拷贝在当前目录下 拷贝auaconda-ks.cfg 到/v ...
最新文章
- 【Kaggle Learn】Python 5-8
- FFmpeg代码实现视频剪切
- php简单学生管理系统设计与实现,基于PHP的学生成绩管理系统的设计与实现.doc...
- thinkphp3.2.3 调用自定义模型提示找不到类_面试BAT必问的JVM,今天我们来说一说它类加载器的底层原理...
- 在PowerShell中批量卸载设备
- 含有swap的c语言冒泡排序6,c#中写个Swap方法来实现冒泡排序 看看哪里错了
- HBase完全分布式集群部署
- JS逆向|JavaScript代码改写成Python代码之小试牛刀
- 基于python解析网易云歌单.
- 数学建模优化模型简单例题_数学建模例题.doc
- include指令与include行为
- 2021腾讯广告大赛学习总结
- java设置字体大小_java中控制字体大小的设置
- 淘宝七天自动确认收货,怎么设计?RabbitMQ延迟队列,消息延迟推送delayed_message入门教程!
- 【多校联赛】The Crime-solving Plan of Groundhog
- 3.1 Linux 支持的文件系统类型
- Centos7 安装Nexus
- KIngcms 5.1版本增加站内链接功能自动给指定关键词加上链接
- 做PPT用到的实用且免费的网站
- 萌新微信小程序成长-2(上传图片以及预览和大图预览)