许多人都知道并喜欢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 gotcha一个有趣的地方 --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/.您可以以令您满意的方式,灵活地配置您的Dnsmasq.
/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地址的数据包离开网络.
这保证了你的dns服务为Dnsmasq,不会使用/etc/resolv.conf或任何其他系统的dns配置
no-resolv
引用dns服务器。第一个示例是针对本地私有域的,第二和第三例OpenDNS的公共服务器:
server=/fooxample.com/192.168.0.1
server=208.67.222.222
server=208.67.220.220
或者只限制本地域名,同时允许外部查找其他域名,这些只能从/etc/hostsDHCP或DHCP中获得应答:
local=/mehxample.com/
local=/fooxample.com/
配置Dnsmasq监听的网络接口:
interface=eth0
interface=wlan1
Dnsmasq默认为读取和使用/etc/hosts,这是配置大量主机的非常快速的方法,并且该/etc/hosts文件只需与Dnsmasq存在于同一台计算机上,把所有域名写入/etc/hosts,这可以使这个过程更加快, /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会自动将主机名扩展为绝对域名(fully qualified domain names),例如host2 to host2.mehxample.com.
DNS通配符
一般来说,DNS通配符不是一个好的做法,因为它们会引发滥用.但是有些时候它们是有用的,比如在局域网内的受保护区域内.例如,除非您喜欢为您的数百或数千个应用程序制作DNS条目,否则Kubernetes群集使用通配符DNS更容易管理.假设你的Kubernetes域名是mehxample.com;在Dnsmasq中,解析所有对mehxample.com的请求的通配符如下所示:
address=/mehxample.com/192.168.0.5
在这种情况下使用的地址是群集的公共IP地址,会应答mehxample.com的主机ip和子域的请求,除了任何已经在DHCP或/etc/hosts中配置的域名.
还请dalao勿喷
今天我们来看看高阶配置文件管理,如何测试您的配置,一些基本的安全性,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 gotcha一个有趣的地方 --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/.您可以以令您满意的方式,灵活地配置您的Dnsmasq.
/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地址的数据包离开网络.
这保证了你的dns服务为Dnsmasq,不会使用/etc/resolv.conf或任何其他系统的dns配置
no-resolv
引用dns服务器。第一个示例是针对本地私有域的,第二和第三例OpenDNS的公共服务器:
server=/fooxample.com/192.168.0.1
server=208.67.222.222
server=208.67.220.220
或者只限制本地域名,同时允许外部查找其他域名,这些只能从/etc/hostsDHCP或DHCP中获得应答:
local=/mehxample.com/
local=/fooxample.com/
配置Dnsmasq监听的网络接口:
interface=eth0
interface=wlan1
Dnsmasq默认为读取和使用/etc/hosts,这是配置大量主机的非常快速的方法,并且该/etc/hosts文件只需与Dnsmasq存在于同一台计算机上,把所有域名写入/etc/hosts,这可以使这个过程更加快, /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会自动将主机名扩展为绝对域名(fully qualified domain names),例如host2 to host2.mehxample.com.
DNS通配符
一般来说,DNS通配符不是一个好的做法,因为它们会引发滥用.但是有些时候它们是有用的,比如在局域网内的受保护区域内.例如,除非您喜欢为您的数百或数千个应用程序制作DNS条目,否则Kubernetes群集使用通配符DNS更容易管理.假设你的Kubernetes域名是mehxample.com;在Dnsmasq中,解析所有对mehxample.com的请求的通配符如下所示:
address=/mehxample.com/192.168.0.5
在这种情况下使用的地址是群集的公共IP地址,会应答mehxample.com的主机ip和子域的请求,除了任何已经在DHCP或/etc/hosts中配置的域名.
还请dalao勿喷