DNSmasq快速起步

以下实践在Fedora 27上完成,除安装包可能和debian系列不同,其他配置方法应该通用。

安装

sudo dnf install dnsmasq

配置

笔记本电脑上已经安装了libvirt服务,启用了kvm虚拟化,此时会有一个监听在虚拟网卡virbr0上的专用于虚拟网桥的DHCP和DNS服务的dnsmasq服务,类似如下进程:

/usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper

注意dnsmasq默认激活DNS服务,如果不需要它,则需要明确设置DNS端口为0就可以避免启动DNS服务:

port=0

为避免影响kvm libvirt包含的dnsmasq服务,需要设置主机启动的dnsmasq监听在特定的网卡上,编辑/etc/dnsmasq.conf:

interface=enp0s20u1

bind-interfaces

注意:根据注释可以知道,dnsmasq虽然可以通过interface来处理特定网卡的请求(即interface参数),但是默认启动会绑定所有网卡的端口。所以仅仅使用interface参数是不够的,还需要同时启用bind-interfaces,这样才会在特定端口上启动绑定以及提供服务。

如果要监听多个接口,则类似设置

interface=eth1
interface=eth2

dnsmasq默认关闭dhcp服务,要激活dhcp服务需要将dhcp相关行注释去除。 (Disable dhcp service in dnsmasq

设置DNS解析

对于局域网内服务器DNS解析,DNSmasq提供了非常简单明了的配置方法:/etc/hosts/etc/resolv.conf

/etc/hosts是主机静态解析配置文件,DNSmasq通过读取这个配置文件,将解析配置加载后提供网络服务,这样就可以对整个局域网提供DNS解析,也就不再需要将相同的/etc/hosts配置文件复制到各个主机上(同步配置):

127.0.0.1    localhost
192.168.0.100    devstack.huatai.me    devstack

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

192.168.0.11  pi1.huatai.me pi1
192.168.0.12  pi1.huatai.me pi2
192.168.0.13  pi1.huatai.me pi3

/etc/resolv.conf是解析器配置文件,DNSmasq根据这个配置文件可以找到转发DNS,以便解析非本域的主机名,例如,www.baidu.com 或者 www.apple.com等等。

nameserver 127.0.0.1
search huatai.me

注意:在Debian中,不建议直接修改/etc/resolv.conf,而是修改/etc/network/interfaces配置文件,其中配置项会在系统启动时对应修改/etc/resolv.conf:

# The primary network interface
auto enp0s25
iface enp0s25 inet static
        address 192.168.0.1
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        #gateway 192.168.0.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 202.96.209.133
        dns-search huatai.me

这样启动后/etc/resolv.conf就会修改成:

nameserver 202.96.209.133
search huatai.me

启动

  • 激活系统启动时启动

sudo systemctl enable dnsmasq
  • 启动dnsmasq

sudo systemctl start dnsmasq

参考

Last updated