jriguera.dnsmasq

ansible-role-dnsmasq

一个多功能角色,用于设置 dnsmasq,遵循以下理念创建: https://github.com/jriguera/ansible-role-pattern/blob/master/README.md

此角色支持为不同目的(dns、tftp 等)定义不同的接口,以及许多 dnsmasq 参数。它还能够管理 resolv.conf 文件。

支持 Ansible 2.0,适用于 Ubuntu Trusty、Xenial 和 Centos 7。

配置

默认配置参数为:

dnsmasq_enabled_on_startup: True
# 管理 resolvconf
dnsmasq_resolvconf: False

# 从上游仓库或直接从操作系统包安装
dnsmasq_os_packages: True

# 全局参数,必需的设置!否则将被忽略!
dnsmasq_dhcp: True
dnsmasq_tftp: True

### resolv.conf
#dnsmasq_host_domain: local
#dnsmasq_host_search: local
dnsmasq_host_resolvers: [ "127.0.0.1" ]

# 设置 dnsmasq 发送 syslog 条目的设施,默认为
# DAEMON,当调试模式启动时为 LOCAL0。如果提供的设施
# 包含至少一个 '/' 字符,则视为文件名,dnsmasq
# 将日志记录到指定文件,而非 syslog。如果设施为 '-',
# 则 dnsmasq 日志记录到 stderr。
dnsmasq_conf_log: /var/log/dnsmasq.log

# 启用异步日志记录,并可选地设置在写入 syslog 时
# dnsmasq 将排队的行数限制。
#dnsmasq_conf_log_async:
dnsmasq_conf_log_dns: False

# 要监听的 IP 或接口列表(空列表表示所有)
dnsmasq_conf_listen: []

# 在支持的系统上,dnsmasq 会绑定通配符地址,
# 即使它仅在某些接口上监听。然后它会丢弃
# 不应回复的请求。这具有即使在接口变动和
# 更改地址时也能工作的优点。
dnsmasq_conf_bind_interfaces: 'dynamic'


### DNS
# 仅接受从本地子网的主机发送的 DNS 查询,
# 即在服务器上存在接口的子网。
#dnsmasq_conf_local_service: True

# 永不转发纯名称(没有点或域部分)
dnsmasq_conf_domain_needed: True

# 启用检测 DNS 转发循环的代码;即查询
# 发送到上游服务器的请求最终返回为新的查询
# 给 dnsmasq 实例。
#dnsmasq_conf_dns_loop_detect: True

# 对于私人 IP 范围(即 192.168.x.x 等),
# 如果在 /etc/hosts 或 DHCP 租约文件中找不到,
# 将用“没有这样的域”回答,而不是向上游转发。
# 永远不要转发非路由地址空间中的地址。
dnsmasq_conf_bogus_priv: True

# 如果你不想让 dnsmasq 读取 /etc/hosts,请取消注释
# 以下行。
dnsmasq_conf_no_hosts: False

# 额外的主机文件,/etc/hosts 格式(这是一个列表!)
#dnsmasq_conf_hosts:
# - ["127.0.0.1", "localhost"]
# - ["::1", "ip6-localhost", "ip6-loopback"]
# - ["fe00::0", "ip6-localnet"]
# - ["ff00::0", "ip6-mcastprefix"]
# - ["ff02::1", "ip6-allnodes"]
# - ["ff02::2", "ip6-allrouters"]
# - ["192.168.1.10", "foo.mydomain.org", "foo" ]
dnsmasq_conf_hosts: []

# 设置 dns 内存缓存大小。
cache-size: 1024

# 禁用负缓存。负缓存允许 dnsmasq 记住
# 来自上游名称服务器的“没有这样的域”回答,并回答相同的
# 查询而不再转发。
# 来自上游服务器的负回复通常包含生存时间
# 信息在 SOA 记录中,dnsmasq 使用这些信息进行缓存。如果该参数
# 未定义: "no-negcache"。
dnsmasq_conf_negcache: 5

# 此标志强制 dnsmasq 按照 /etc/resolv.conf 中的顺序
# 严格尝试每个查询与每个服务器。
dnsmasq_conf_strict_order: False

# 此标志强制 dnsmasq 将所有查询发送到所有可用服务器。
# 将返回第一个回答的服务器的回复给
# 原始请求者。
dnsmasq_conf_all_servers: False

# 如果你希望 dnsmasq 读取 "/etc/resolv.conf" 或任何其他文件。
# 为空或未定义以禁用读取 resolv.conf。
dnsmasq_conf_resolv: /etc/resolv.conf

# 不要轮询 /etc/resolv.conf 的变化。
dnsmasq_conf_no_poll: False

# 如果 dnsmasq_conf_no_poll 为 False,则 /etc/resolv.conf 会被重新读取,
# 或通过 DBus 设置上游服务器,清除 DNS 缓存。
dnsmasq_conf_clear_on_reload: True

# 直接指定上游服务器的 IP 地址。设置该标志不
# 抑制读取 /etc/resolv.conf: ['localnet', '192.168.0.1']
# 路由 PTR 查询到名称服务器的示例:这将发送所有:
# address->name 查询 192.168.3/24 到名称服务器 10.1.2.3
# ['3.168.192.in-addr.arpa', '10.1.2.3']
#dnsmasq_conf_servers:
#  - [ "/google.com/", "8.8.8.8" ]
#  - "8.8.4.4"
dnsmasq_conf_servers: [ "8.8.8.8", "8.8.4.4" ]

# 为所有本地机器返回指向自己的 MX 记录:'_self'
# 指向 dnsmasq 服务器的本地机器 MX 记录:'_local'''
# 指向“servername”的本地机器的 MX 记录:'servername'
# 返回一个名为 "maildomain.com" 的 MX 记录,目标为
# "servername" 和优先级 50: [maildomain.com, servername, 50]
#dnsmasq_conf_mx: servername
#dnsmasq_conf_mx_domain: {{ hostvars['k4.ww.mens.de'].
#dnsmasq_conf_mx_pref: 1

# 添加 A、AAAA 和 PTR 记录到 DNS。这将将一个或多个名称
# 添加到 DNS,并附加相应的 IPv4(A)和 IPv6(AAAA)记录
#dnsmasq_conf_host_records:
#  -[]

# 为 dnsmasq 定义一个 DNS 区域,使其成为权威服务器。
#dnsmasq_conf_auth_zone: []


### DHCP

# 记录有关 DHCP 事务的大量额外信息。
dnsmasq_conf_log_dhcp: False

# 设置 dnsmasq 的域。这是可选的,但如果设置,将执行以下操作:
# 1)允许 DHCP 主机拥有完全合格的域名,只要
#     域部分与此设置匹配。
# 2)设置 "domain" DHCP 选项,从而潜在地设置所有通过 DHCP 配置的系统的域
# 3)为 "expand-hosts" 提供域部分
# 如果域给定为 "#",则从 /etc/resolv.conf 中的第一条
# “搜索”指令读取域。
dnsmasq_conf_domain: '#'

# 仅在 dnsmasq_conf_domain 被设置时,不再将未完全合格的名称放入
# DNS,仅放入完全合格的名称。
dnsmasq_conf_dhcp_fqdn: True

# 应在 dnsmasq 确定是网络中唯一的 DHCP 服务器时设置。
dnsmasq_conf_dhcp_authoritative: True

# Dnsmasq 旨在通过使用客户端 MAC 地址的哈希
# 为 DHCP 客户端选择 IP 地址。
dnsmasq_conf_dhcp_sequential_ip: True

# 禁用将 DHCP 服务器名称和文件名称字段用作额外选项空间的重用。
dnsmasq_conf_dhcp_no_override: True

# 取消注释以启用集成 DHCP 服务器,你需要
# 提供可租用的地址范围,并可选地提供
# 租用时间。如果你有多个网络,你需要
# 为每个希望提供 DHCP 服务的网络重复此操作。
#dnsmasq_conf_dhcp: []
#dnsmasq_conf_dhcp:
#   - device: eth0:
#     range: [192.168.1.80, 192.168.1.150, infinite]
#     option: []
#     ignore_names: True
#     generate_names: True
#     boot: []
#     tftp: /var/lib/tftpboot

# 从列表或指定的本地文件读取 DHCP 主机信息
#dnsmasq_conf_dhcp_hosts: []

# 完全禁止使用租约数据库文件。该文件将不会被
# 创建、读取或写入。
dnsmasq_conf_dhcp_leasefile_ro: False

# 每当创建新的 DHCP 租约、销毁旧的租约
# 或完成 TFTP 文件传输时,都会运行此选项指定的可执行文件。
#dnsmasq_conf_dhcp_script: files/program.bin


### TFTP

# 启用 TFTP 安全模式:没有这个,任何 dnsmasq 进程在正常 UNIX
# 访问控制规则下可读的文件都可以通过 TFTP 获得。
dnsmasq_conf_tftp_secure: False

# 将 TFTP 请求中的文件名转换为小写。这对于来自 Windows 机器的请求
# 很有用。
dnsmasq_conf_tftp_lowercase: True

# 设置允许的最大并发 TFTP 连接数
dnsmasq_conf_tftp_max: 50

# 停止 TFTP 服务器与客户端协商 “blocksize” 选项。
dnsmasq_conf_tftp_no_blocksize: False

你可以将这些默认参数覆盖为角色变量。查看 site.yml 中的示例,并使用 vagrant up 进行测试。

除了管理 dnsmasq,此角色还能够通过定义 dnsmasq_resolvconf: truednsmasq_host_* 参数来管理 /etc/resolv.conf 文件。

作者

José Riguera López jriguera@gmail.com

关于项目

Install and setup Dnsmasq server on RedHat/Debian based distributions

安装
ansible-galaxy install jriguera.dnsmasq
许可证
Unknown
下载
714