红联Linux门户
Linux协助

Dnsmasq进阶技巧

发布时刻:2018-03-14 09:40:48来历:linux.cn作者:yixunx
许多人熟知并酷爱 Dnsmasq,并在他们的本地域名服务上运用它。今日咱们将介绍进阶装备文件办理、怎么测验你的装备、一些根底的安全常识、DNS 泛域名、快速 DNS 装备,以及其他一些技巧与诀窍。
 
测验装备
当你测验新的装备的时分,你应该从指令行运转 Dnsmasq,而不是运用看护进程。下面的比方演示了怎么不必看护进程运转它,一起显现指令的输出并保存运转日志:
# dnsmasq --no-daemon --log-queries
dnsmasq: started, version 2.75 cachesize 150
dnsmasq: compile time options: IPv6 GNU-getopt
DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack
ipset auth DNSSEC loop-detect inotify
dnsmasq: reading /etc/resolv.conf
dnsmasq: using nameserver 192.168.0.1#53
dnsmasq: read /etc/hosts - 9 addresses
在这个小比方中你能看到许多有用的信息,包括版别、编译参数、体系姓名服务文件,以及它的监听地址。能够运用 Ctrl+C 中止进程。在默许状况下,Dnsmasq 没有自己的日志文件,所以日志会被记载到 /var/log 目录下的多个当地。你能够运用经典的 grep 来找到 Dnsmasq 的日志文件。下面这条指令会递归式地查找 /var/log,在每个匹配的文件名之后显现匹配的行号,并疏忽 /var/log/dist-upgrade 里的内容:
# grep -ir --exclude-dir=dist-upgrade dnsmasq /var/log/
运用 grep --exclude-dir= 时有一个风趣的小圈套需求留意:不要运用完好途径,而应该只写目录称号。
你能够运用如下的指令行参数来让 Dnsmasq 运用你指定的文件作为它专属的日志文件:
# dnsmasq --no-daemon --log-queries --log-facility=/var/log/dnsmasq.log
或许在你的 Dnsmasq 装备文件中加上 log-facility=/var/log/dnsmasq.log。
 
装备文件
Dnsmasq 的装备文件坐落 /etc/dnsmasq.conf。你的 Linux 发行版也可能会运用 /etc/default/dnsmasq、/etc/dnsmasq.d/,或许 /etc/dnsmasq.d-available/(不,咱们不能统一标准,由于这违反了 Linux 众说纷纭隐秘议会的旨意)。你有许多自由来随意安顿你的装备文件。
/etc/dnsmasq.conf 是德高望重的老迈。Dnsmasq 在发动时会最早读取它。/etc/dnsmasq.conf 能够运用 conf-file= 选项来调用其他的装备文件,例如 conf-file=/etc/dnsmasqextrastuff.conf,或运用 conf-dir= 选项来调用目录下的一切文件,例如 conf-dir=/etc/dnsmasq.d。
每逢你对装备文件进行了修正,你都必须重启 Dnsmasq。
你也能够依据扩展名来包括或疏忽装备文件。星号表明包括,不加星号表明扫除:
conf-dir=/etc/dnsmasq.d/, *.conf, *.foo
conf-dir=/etc/dnsmasq.d, .old, .bak, .tmp
你能够用 --addn-hosts= 选项来把你的主机装备散布在多个文件中。
Dnsmasq 包括了一个语法查看器:
$ dnsmasq --test
dnsmasq: syntax check OK.
 
有用装备
永久参加这几行:
domain-needed
bogus-priv
它们能够避免含有格局犯错的域名或私有 IP 地址的数据包脱离你的网络。
让你的姓名服务只运用 Dnsmasq,而不去运用 /etc/resolv.conf 或任何其他的姓名服务文件:
no-resolv
运用其他的域名服务器。第一个比方是只关于某一个域名运用不同的域名服务器。第二个和第三个比方是 OpenDNS 共用服务器:
server=/fooxample.com/192.168.0.1
server=208.67.222.222
server=208.67.220.220
你也能够将某些域名约束为只能本地解析,但不影响其他域名。这些被约束的域名只能从 /etc/hosts 或 DHCP 解析:
local=/mehxample.com/
local=/fooxample.com/
约束 Dnsmasq 监听的网络接口:
interface=eth0
interface=wlan1
Dnsmasq 在默许设置下会读取并运用 /etc/hosts。这是一个又快又好的装备很多域名的办法,而且 /etc/hosts 只需求和 Dnsmasq 在同一台电脑上。你还能够让这个进程再快一些,能够在 /etc/hosts 文件中只写主机名,然后用 Dnsmasq 来增加域名。/etc/hosts 看上去是这样的:
127.0.0.1 localhost
192.168.0.1 host2
192.168.0.2 host3
192.168.0.3 host4
然后把下面这几行写入 dnsmasq.conf(当然,要换成你自己的域名):
expand-hosts
domain=mehxample.com
Dnsmasq 会主动把这些主机名扩展为完好的域名,比方 host2 会变为 host2.mehxample.com。
 
DNS 泛域名
一般来说,运用 DNS 泛域名不是一个好习惯,由于它们太简单被误用了。但它们有时会很有用,比方在你的局域网的紧密维护之下的时分。一个比方是运用 DNS 泛域名会让 Kubernetes 集群变得简单办理许多,除非你喜爱给你成百上千的运用写 DNS 记载。假定你的 Kubernetes 域名是 mehxample.com,那么下面这行装备能够让 Dnsmasq 解析一切对 mehxample.com 的恳求:
address=/mehxample.com/192.168.0.5
这儿运用的地址是你的集群的公网 IP 地址。这会响应对 mehxample.com 的一切主机名和子域名的恳求,除非恳求的方针地址已经在 DHCP 或许 /etc/hosts 中装备过。
 
ubuntu用dnsmasq、nscd解析仍是慢的解决办法:http://www.138comgov138.com/linux/27625.html
Dnsmasq装置与装备:http://www.138comgov138.com/linux/26460.html
Ubuntu16.04用Pdnsd替换dnsmasq避免DNS污染:http://www.138comgov138.com/linux/24824.html
运用dnsmasq建立wifi热门DHCP服务器的最简办法:http://www.138comgov138.com/linux/22863.html
CentOS7+Openvpn+quagga+dnsmasq装备记载:http://www.138comgov138.com/linux/15163.html