pfSense配置DNS教程

你可能永远没有机会设置自己的DNS服务器,但是拥有自己的DNS服务器可以减少管理开销并提高DNS查询的速度,尤其是随着网络的增长。

pfSense有两个单独的DNS服务。在2.2版之前,DNS服务可通过DNS转发器来配置,它调用dnsmasq程序。对于2.2及更高版本,“ Unbound”是默认的DNS解析器,可以导航到系统服务>DNS解析器来进行配置。

一般情况下,新安装的pfSesne2.2或更高版本的DNS解析器已默认为启用状态,而从较早版本进行升级将默认启用DNS转发器 。虽然可以在较新的版本上使用DNS转发器 ,但如果这样做,则必须禁用 DNS解析器或更改其端口设置。因为在默认情况下,DNS转发器和DNS解析器都绑定到端口53,但是两个服务不能都绑定到同一端口。

一、DNS解析器配置

常规设置的第一个选项是选择是否启用,如果启用,它将启用unbound,在默认情况下,这一般为选中状态。

监听端口,它允许你设置用于响应DNS查询的端口。默认为端口53。DNS通常使用端口53和UDP,尽管DNS还将TCP用于大于数据报的响应,包括DNSSEC和某些IPv6查找。因此,在为DNS创建防火墙规则时要考虑到这一点。

S​​SL / TL服务,如果启用,它将允许DNS解析器通过TLS查询来响应DNS,从而使客户端更不容易受到DNS欺骗的攻击。在  SSL / TLS证书下拉框,你可以选择查询中使用的证书。基于TLS的DNS的默认端口是853,但是你可以通过在“ SSL / TLS侦听端口”栏中输入其他端口号来更改此端口  。

网络接口,允许你选择unbound使用哪些接口来响应来自客户端的查询。未选中的接口查询将被丢弃。但是,如果启用了unbound,则必须为此选项选择All或 localhost。

出站网络接口,允许你选择DNS解析器可用于将查询发送到权威服务器并接收其答复的网络接口。

如果本地数据中没有域匹配项,则“系统域本地区域类型”将确定DNS解析器如何处理查询。此下拉框中有几个可用选项:

  • Deny:如果本地数据中存在匹配项,则DNS解析器将仅回答查询。如果没有匹配项,查询将被静默删除。
  • Refuse:此选项与“Deny”类似,不同之处在于,当本地数据不匹配时,将返回rcode REFUSED,因此客户端知道查询被拒绝。
  • Static:DNS解析器在本地数据中查找匹配项。如果没有匹配项,则不返回任何数据或nxdomain,但如果本地数据中存在此类信息,它将返回根域的授权开始(SOA)。
  • Transparent: 如果存在匹配项,则DNS解析器将从本地数据中回答查询。如果本地数据不匹配,则查询将传递到上游DNS服务器。如果本地数据中存在匹配项,但是本地数据中不存在要查询的数据类型,则DNS解析器将返回没有错误/没有数据消息。
  • Type transparent:此选项类似于Transparent,但是在本地数据匹配但不存在要查询的数据类型的情况下,DNS解析器会将查询传递给上游DNS服务器。
  • Redirect: DNS解析器将尝试从本地数据回答查询。如果除区域名称外没有其他本地数据,则将重定向查询。
  • Inform:与Transparent相同,不同之处在于,还将记录客户端IP地址和端口号。
  • Inform / Deny:与Deny相同,除了查询将被记录。
  • No default:查询不会返回AS112区域的默认内容。

启用DNSSEC支持,默认为启用。DNSSEC是一种保护DNS数据免受使用伪造或操纵的DNS数据的攻击(例如DNS缓存中毒)的手段。在启用状态下,如果DNS请求转发到的上游DNS服务器不支持DNSSEC,则DNS解析可能不起作用。

启用转发模式,可以控制unbound是否直接查询根服务器(如果未选中此选项)或是否将查询转发到上游DNS服务器。仅当上游DNS服务器受信任时,才启用此选项。如果启用了DNSSEC支持,并且认为这很重要,则还应确保上游DNS服务器提供DNSSEC支持。

如果您使用的是没有默认网关切换的多WAN配置,则必须使用转发模式。

在DNS解析器中注册DHCP租约, 可让你注册DHCP静态映射。反过来,这可以解析由DHCP服务器分配的IP地址的主机名。

在DNS解析器中注册DHCP静态映射,类似于“注册DHCP租约” 的DNS解析器,除了前者允许你注册DHCP静态映射,而不是DHCP租约。

单击“  自定义选项”按钮将显示一个文本框,你可以在此处输入任何其他参数。

主机覆盖, 允许你配置特定的主机名,以解决与DNS转发器使用的DNS服务器不同的问题。

这可用于拆分DNS配置。它还提供了一种阻止访问某些站点的可能方法(尽管用户总是可以通过简单地输入目标域的正确IP地址来击败此措施)。

域覆盖,如果要在解析某些域时指定其他DNS服务器,则可以使用“ 域覆盖”,这将允许你指定其他DNS服务器的IP地址。这在许多情况下很有用:例如,在Windows Active Directory设置中指定Active Directory DNS服务器。

也可以使用它来阻止对某些站点的访问,尽管最终用户可以通过输入站点的IP地址来规避这一点。也可以以任意方式使用它,例如,将必应搜索引擎https://www.bing.com/重定向到https://www.baidu.com/

单击添加按钮将弹出一个页面,输入主机、域、IP地址和简要说明。

二、高级设置

第二个选项卡是“高级设置”。以下是一些主要设置内容:

  • 预取DNS密钥支持:启用此选项可使DNSKEY在验证过程中更早获取,从而减少了请求的延迟(但增加了CPU使用率)。
  • 消息高速缓存大小:控制消息高速缓存的大小,消息高速缓存存储DNS响应代码和验证状态。默认大小为4 MB。
  • 实验性0x20位支持:DNS事务ID的较小位长(16位)使其经常成为伪造的目标,这会带来安全风险。改善DNS交易安全性的方法之一是将问题名称的ASCII字母中的0x20位随机化。例如,请求者将www.mydomain.com和WWW.MYDOMAIN.COM的名称视为相同,但响应者会将其视为不相等。因此,它可以充当一种秘密加密通道,并使DNS交易更加安全。

三、访问列表

最后一个选项卡为”访问列表”。该选项卡使你能够允许或拒绝(并且拒绝可以是通用的,也可以仅针对非本地数据)访问指定子网(netblock)的DNS服务器。

如果你需要对不同的网络使用不同的策略,或者需要将DNS服务器的访问权限授予某些用户(例如通过VPN连接的远程用户),这个功能 将十分有用。单击 “添加”按钮来添加访问列表条目。

在此处,你可以指定(解析的)列表名称。选择设定的“动作”,这是一个下拉框。在这里,你可以指定源自指定网络范围的DNS查询接下来干什么。它包括以下选项:

  • Deny:停止来自已定义网络范围的查询。查询被静默丢弃。
  • Refuse:停止来自已定义网络范围的查询。而不是静默地删除查询,它发送回REFUSED DNS rcode。
  • Allow:允许从定义的网络范围内的主机进行查询。
  • Allow Snoop:类似于Allow,但是允许从定义的网络范围内的主机进行递归和非递归访问。仅仅为管理员配置此功能,以便进行故障排除。
  • Deny Nonlocal:仅允许从定义的网络范围内的主机进行权威的本地数据查询;其他查询将被静默删除。
  • Refuse Nonlocal:仅允许从定义的网络范围内的主机进行权威的本地数据查询;其他查询将发回REFUSED DNS rcode。

在“描述” 字段输入该条目的说明内容(不解析的),在“ 网络”字段中输入访问列表生效的网络范围(子网)、子网CIDR、描述。输入完成后,单击底部“添加网络”按钮来添加新定义的访问列表  。

四、DNS防火墙规则

在配置pfSense来充当DNS服务器之后,如果网络上的最终用户可以绕过pfSense并指定所需的任何DNS服务器,那将不是我们所期望看到的。但是,在我们的客户端操作系统,大多是可以自定义DNS服务器,如下图所示:

用户禁用自动获取DNS,自己手动指定公共DNS服务器。即使我们已经将pfSense设置为本地网络的DNS服务器,用户的计算机也可以绕过pfSense并直接转到自定义的DNS服务器。这种行为除了破坏我们试图执行的策略外,还有其他一些不利因素:

  • 每次用户访问进行新的DNS查询时,只会将查询结果缓存在其自己的计算机上。如果用户使用pfSense作为其DNS服务器,则查找结果将缓存在pfSense系统上,因此对本地网络上的其他所有人都可使用,这将大大加快查询的速度。
  • 用户如果指定了安全性受到威胁的DNS服务器,这将使他们的计算机容易受到DNS缓存中毒和其他攻击威胁。

解决办法:DNS使用端口53进行通信,因此我们可以在防火墙上建立阻止或允许端口53流量的规则,具体来说,需要添加两条如下规则:

  • 在LAN网络上添加一条允许端口53到LAN地址的规则。
  • 在LAN网络上添加一条禁止端口53通行的规则。

由于防火墙规则是从上到下应用的,遇到的第一个规则适用于要应用的流量,因此我们必须在这些规则之上创建一个规则,如下图所示(因为我的示例网络是多LAN和WAN,所以跟你的可能有所不同):

检查规则是否有效,可以使用nslookup尝试使用其他服务器来查找域名。例如:

nslookup baidu.com 114.114.114.114

该命令将使用其中一台公共DNS服务器对百度进行DNS查询。如果我们创建的规则有效,则此操作将失败。

nslookup baidu.com

而在省略第二个参数后,执行相同的命令(因nslookup将使用默认的DNS服务器)应该有效。

这些规则在阻止最终用户绕过pfSense DNS服务器方面可能非常有效,但也存在两个缺陷:

  • 该规则仅适用于LAN网络。在较大的网络上,如果存在几个网段。我们需要在多个网络上添加规则。
  • 如果建立了VPN,则可以绕过防火墙创建的规则。

原文地址