如何configurationUFW允许私人DNS请求,但阻止来自互联网的DNS请求

我有一个Ubuntu服务器12.04,有两个网卡:

  • eth0连接到互联网
  • eth1连接到专用networking(192.168.10.1)

服务器被configuration为网关,并从专用networking托pipeDNS和DHCP。 专用networking中的计算机(如IP地址192.168.10.50)可以成功连接到互联网。

UFW规则如下:

Status: active To Action From -- ------ ---- 22 ALLOW Anywhere 80 ALLOW Anywhere 443 ALLOW Anywhere 67/udp on eth1 ALLOW 68/udp 53 ALLOW Anywhere 22 ALLOW Anywhere (v6) 80 ALLOW Anywhere (v6) 443 ALLOW Anywhere (v6) 67/udp on eth1 ALLOW 68/udp 53 ALLOW Anywhere (v6) 

任何互联网用户可以查询我的DNS服务器。 我想阻止这样的请求,因为它带来了安全风险。 我重置防火墙,允许访问端口80,443,22,并键入以下内容,只允许私有networking上的设备发出DNS请求。

 sudo ufw allow in on eth1 to 192.168.10.1 port 53 

在专用networking中的Windows计算机(IP地址为192.168.10.50)上键入以下内容时:

 nslookup google.com. 192.168.10.1 

我得到一个回应,如下所示:

 DNS request timed out. timeout was 2 seconds. Server: Unknown Address: 192.168.10.1 

当我重置防火墙,并允许从任何地方访问端口53,一切都工作。

 sudo ufw allow 53 

如何在192.168.10.1上configurationUFW

  • 阻止来自Internet的DNS查询(又名eth0)
  • 允许专用networking中的计算机进行DNS查询
  • 允许192.168.10.1上的DNS服务器将内部DNS请求转发到Internet
  • 适用于IPv4和IPv6

尝试这个

 sudo ufw allow from 192.168.10.0/24 to 192.168.10.1 port 53 proto tcp sudo ufw allow from 192.168.10.0/24 to 192.168.10.1 port 53 proto udp 

这将允许从本地专用networking(我假设是192.168.10.0/24 ,或换句话说, 192.168.10.1-255 ),而不是其他任何地方的TCP和UDP DNS(端口53)stream量。

最后,请检查以确保您的UFW状态(运行sudo ufw status )具有以下行:

 To Action From -- ------ ---- 192.168.10.1 53/tcp ALLOW 192.168.10.0/24 192.168.10.1 53/udp ALLOW 192.168.10.0/24 

对于基于接口的ufw规则,以下方法将禁止从任何不是eth1的接口访问端口53(假设您的dns / bind服务器在端口53上configuration):

 sudo ufw allow all in on eth1 to any port 53 proto tcp sudo ufw deny to any port 53 

要configuration绑定到转发dns请求,您可以在您的所有内部处理的区域之后在named.conf文件中使用此指令:

 zone "." { type forward; forwarders { 8.8.8.8; }; }