跳转至

试用 dnsmasq


2015-01-09 by dongnan

简介

DNSmasq是一个小巧且方便地用于配置DNSDHCP的工具,适用于小型网络,它提供了DNS功能和可选择的DHCP功能。 它服务那些只在本地适用的域名,这些域名是不会在全球的DNS服务器中出现的。

DHCP服务器和DNS服务器结合,并且允许DHCP分配的地址能在DNS中正常解析,而这些DHCP分配的地址和相关命令可以配置到每台主机中, 也可以配置到一台核心设备中(比如路由器),DNSmasq支持静态和动态两种DHCP配置方式。

环境

操作系统: CentOS 6.6 amd64

安装

# 适用 CentOS/RHEL
yum install dnsmasq

配置

# 备份配置文件
cp /etc/dnsmasq.conf /etc/dnsmasq.conf.bak

# 编辑配置文件
vim /etc/dnsmasq.conf

# 找到 "resolv-file=" 更改为如下:
resolv-file=/etc/resolv.dnsmasq.conf

# 创建配置文件
cp /etc/resolv.conf /etc/resolv.dnsmasq.conf

# DNS地址
echo "nameserver 127.0.0.1" > /etc/resolv.conf

启动服务

/etc/init.d/dnsmasq start 
chkconfig dnsmasq on

参数

配置文件大部分参数默认即可:

  • isten-address,监听地址默认是127.0.0.1
  • cache-size,缓存解析条数,默认是150
  • strict-order,按照 /etc/resolv.confnameserver的顺序依次使用,默认时dnsmasq会随机的调用

验证

日志

tail /var/log/messages
Oct 27 16:28:44 bbs dnsmasq[56527]: started, version 2.48 cachesize 150
Oct 27 16:28:44 bbs dnsmasq[56527]: compile time options: IPv6 GNU-getopt DBus no-I18N DHCP TFTP "--bind-interfaces with SO_BINDTODEVICE"
Oct 27 16:28:44 bbs dnsmasq[56527]: reading /etc/resolv.dnsmasq.conf
Oct 27 16:28:44 bbs dnsmasq[56527]: using nameserver 8.8.8.8#53
Oct 27 16:28:44 bbs dnsmasq[56527]: using nameserver 8.8.4.4#53
Oct 27 16:28:44 bbs dnsmasq[56527]: read /etc/hosts - 3 addresses

测试解析 126.com 域名

dig 126.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> 126.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36934
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;126.com.            IN    A

;; ANSWER SECTION:
126.com.        6978    IN    A    220.181.12.218
126.com.        6978    IN    A    123.125.50.22

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Oct 27 16:31:57 2014
;; MSG SIZE  rcvd: 57

配置dhcp

目标

使用 dnsmasq 充当 dhcp 服务器,为局域网内的主机分配IP地址。

步骤

编辑配置文件

vim /etc/dnsmasq.conf

内容类似如下

listen-address=127.0.0.1,192.168.200.254  # 监听地址
dhcp-range=192.168.200.100,192.168.200.220,12h # 分配IP范围,12h 有效期
dhcp-host=c4:54:44:ce:53:XX,192.168.200.162,ywwd # 为Mac地址分配固定IP,ywwd主机名
dhcp-option=3,192.168.200.254 # 网关地址
domain=oa.ywwd.net # 可选,私有域名

重启服务

/etc/init.d/dnsmasq restart

验证

已经分配了 27个IP地址。

wc -l /var/lib/dnsmasq/dnsmasq.leases
27 /var/lib/dnsmasq/dnsmasq.leases

注意,dnsmasq.leases 文件,记录租期、mac、ip、主机名等信息。

私有域名

目标

在办公室内部局域网络,为测试环境设置一个域名(非公网解析)。

条件

测试时指定 dns 服务器为 dnsmasq 服务器,也可以配合 iptables 可以实现dns 劫持。

步骤

# 编辑配置文件
vim /etc/dnsmasq.conf

# 添加如下内容
# 20151125 测试
address=/dongnan.ywwd.net/192.168.100.15

重启服务

/etc/init.d/dnsmasq restart

验证

dig @192.168.150.250 dongnan.ywwd.net
#...省略

参考

dnsmasq (简体中文)

回到页面顶部