我想使用 dnsmasq 为我的网络上的某些客户端设置白名单。
例如,我希望为 192.168.1.10 - 192.168.1.20 范围内的客户端制定以下规则:
no-resolv
server=/pbskids.org/192.168.0.1
server=/disney.go.com/192.168.0.1
这样,这些客户端只能访问白名单中的网站。该范围之外的网络上的客户端应该能够使用他们想要的任何 DNS 服务器。我怎样才能做到这一点?
编辑:
到目前为止,这是我在 dnsmasq.conf 中的内容:
bogus-priv
domain-needed
no-resolv
server=/pbskids.org/192.168.0.1
server=/disney.go.com/192.168.0.1
这样做的预期结果是拒绝网络上所有客户端的上游 DNS 查找。现在我需要的是一种允许某些客户端使用上游 DNS 的方法。我认为不存在这样的选择,但也许它会有助于传达我的想法:
use-resolv --source 192.168.1.150
即,如果客户端的 IP 地址是 192.168.1.150,则使用上游 DNS 服务器。或者,我最初寻找的是这样的:
no-resolv --source 192.168.1.100
即,如果客户端的 IP 地址是 192.168.1.100,则根本不使用上游服务器。
如果我不能做这样的事情,那么也许我需要的是两个独立的网络。
答案1
本教程听起来正是您想要的。标题:保护和冲浪(dnsmasq 和白名单)。
这个想法相当简单。隔离计算机,以便它们知道的唯一 DNS 服务器是 DNSMasq 服务器。然后将以下行添加到 DNSMasq 的配置中。文件,/etc/dnsmasq.conf
:
domain-needed
bogus-priv
log-queries
log-facility=/var/log/dnsmasq.log
no-resolv
interface=eth0
# Add other name servers here, with domain specs if they are for
# non-public domains.
#server=/localnet/192.168.0.1
server=/google.com/192.168.0.1
server=/dan-dare.org/192.168.0.1
server=/dan-dare.net/192.168.0.1
server=/pbskids.org/192.168.0.1
server=/playhousedisney.com/192.168.0.1
server=/disney.go.com/192.168.0.1
server=/starfall.com/192.168.0.1
一旦完成此操作,指向 DNSMasq 服务器的服务器将无法找到除配置中的 DNS 结果之外的任何 DNS 结果。文件。
笔记:这绝不是完整的证据,并且可以很容易地规避。但如果您使用它来阻止孩子访问其他网站,那么它可能足以完成任务。
域名系统
您可以设置系统,使其 DNS 配置为仅通过配置文件 .dnsMasq 服务器发送请求/etc/resolv.conf
。
nameserver 192.168.1.1