标签 DNS 下的文章

我在Linux下使用拨号连接上网,频繁的拨号断线造成DNS的问题。我如何在Linux/Unix发行版下使用shell命令清除DNS缓存?

在MS-Windows下,你可以使用ipconfig命令来清除dns缓存。然而,Linux和Unix提供了不同的方法来清除缓存。Linux可以运行 nscd 或者 BIND 或者 dnsmasq 作为名称服务缓存守护进程。大型或者工作组服务器可能使用BIND或者dnsmasq作为专用缓存服务器来加速查询。

如何: 清除 nscd dns 缓存

Nscd 会缓存libc发起的名称服务的请求。如果把检索NSS数据看做很慢,那么nscd能够显著加快连续访问同一数据的速度,并能提高整个系统的性能。只需重启nscd即可刷新缓存:

$ sudo /etc/init.d/nscd restart

# service nscd restart

# service nscd reload

这个守护进程给最常用的名称服务请求提供了高速缓存。默认的配置文件/etc/nscd.conf,其决定了高速缓存守护进程的行为。

清除 dnsmasq dns 缓存

dnsmasq的是一个轻量级的DNS、TFTP和DHCP服务器。它的目的是给局域网提供配对的DNS和DHCP服务。 dnsmasq接受DNS查询,并从一个小的本地高速缓存应答它们或将其转发到一个真正的递归DNS服务器。该软件也被安装在很多便宜的路由器上来缓存DNS查询。只需重新启动dnsmasq的服务来清除DNS缓存:

$ sudo /etc/init.d/dnsmasq restart

或者

# service dnsmasq restart

清除BIND缓存服务器的dns缓存

一台BIND缓存服务器从另一台服务器(区域主)响应主机的查询而获得信息,然后保存(缓存)数据到本地。您所要做的就是重启BIND以清除其缓存:

# /etc/init.d/named restart

你也可以使用下面rndc命令来清除所有的缓存:

# rndc restart

或者

# rndc exec

BIND v9.3.0 及其以上版本支持一个清除一个特定域名的所有记录缓存的命令:rndc flushname。本例中刷新cyberciti.biz相关域的所有记录:

# rndc flushname cyberciti.biz

同样也可以清除BIND View。比如,LAN和WAN的View可以用下面的命令清除:

# rndc flush lan
# rndc flush wan

给 Mac OS X Unix 用户的提示

Mac下用root用户输入下面的命令:

# dscacheutil -flushcache

或者

$ sudo dscacheutil -flushcache

如果你正在使用OSX 10.5 或者更早的版本,尝试使用下面的命令:

lookupd -flushcache

关于 /etc/hosts 文件的一个提示

/etc/hosts用作静态查询主机的表格。你需要在类Unix操作系统下依据你的要求移除并且/或者更新它:

# vi /etc/hosts

示例输出:

127.0.0.1   localhost
127.0.1.1   wks01.WAG160N   wks01
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
10.37.34.2     build
192.168.1.10    nas01
192.168.1.11    nas02
192.168.1.12    nas03
#192.168.2.50   nfs2.nixcraft.net.in nfs2
#192.168.2.51   nfs1.nixcraft.net.in nfs1
172.168.232.50  nfs1.nixcraft.net.in nfs1
172.168.232.51  nfs2.nixcraft.net.in nfs2
192.168.1.101   vm01

参考

相关: 在Windows Vista / XP中用ipconfig 命令清除 DNS 缓存


via: http://www.cyberciti.biz/faq/rhel-debian-ubuntu-flush-clear-dns-cache/

译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

正如SSL能将HTTP通信变为加密过的HTTPS通信,DNSCrypt, 物如其名, 是一款能加密您电脑与OpenDNS之间的通信的小神器。

DNSCrypt刚问世的时候,官方公布它只是一款Mac才能用的工具,但根据最近一篇由OpenDNS发的文章表明,虽然还没有用户界面,但其实当Mac版DNSCrypt推出的时候源码已经放到了Github上了, Linux的用户也可以安装以及使用哦!(LCTT译注:目前已经有DNSCrypt WinClientDNSCrypt Windows Service ManagerDNSCrypt OSXClientDNSCrypt Tools for Linux 等第三方图形界面客户端出现。)

为神马要使用 DNSCrypt?

DNSCrypt可以加密您电脑与OpenDNS服务器的所有通信,加密可以防止中间人攻击,信息窥觑,DNS劫持。更能防止网络供应商对某些网站的封锁。

这是世界上第一款加密DNS通信的工具,虽然TOR可以加密DNS的请求,但毕竟它们只是在出口节点加密而已。

这款工具并不需要对域名或其工作方式做任何的改变,它只是提供了个该工具的用户与机房里的DNS服务器之间的加密方式而已。

您可以在GitHubOpenDNS DNSCrypt页面阅读更多的相关信息。

如何在Linux使用DNSCrypt

首先下载安装DNSCrypt (LCTT译注,安装过程不详述,请参照官网描述), 然后在Terminal里输入这个命令:

sudo /usr/sbin/dnscrypt-proxy --daemonize

然后把您的DNS服务器调成"127.0.0.1" - 在GNOME界面下的话,只要到Network Connections(网络连接)选项然后选择"Edit"并在"DNS servers"输入"127.0.0.1"就好了。如果您用的是DHCP的话,请选择Automatic (DHCP) addresses only", 这样的话才能输入DNS服务器。然后只要重连网络便可。

您可以访问这条链接来测试您连接到了OpenDNS了没。

如果您想设置开机启动DNSCrypt,可以自建一个init的脚本,如果您用的是Ubuntu,可以参考下面的。

Arch Linux的用户可以通过AUR来安装DNSCrypt-proxy (内含rc.d脚本)

Ubuntu下的DNSCrypt

如果您想在Ubuntu设置开机启动,您可以使用这个Upstart脚本

注: 在Ubuntu 12.04版在127.0.0.1有个本地的DNS cache 服务器(dnsmasq)在跑,所以已经把改脚本改成让DNSCrypt使用127.0.0.2了, 所以按照上面的教程,应该把127.0.0.1换成127.0.0.2了。

要安装此脚本请使用以下的指令(要首先解压下下来的压缩文件):

sudo cp dnscrypt.conf /etc/init/
sudo ln -s /lib/init/upstart-job /etc/init.d/dnscrypt

然后用这个指令来启动:

sudo start dnscrypt

现在DNSCrypt就应该是开机自启了,如果您想停止的话,可以使用:

sudo stop dnscrypt

下载DNSCrypt (.deb、 .rpm以及源码都可供下载哦!)


via: http://www.webupd8.org/2012/02/encrypt-dns-traffic-in-linux-with.html

译者:213edu 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

上篇教程里,我们为一个测试域exmample.tst创建了一个主域名服务器(ns1)。在本篇中,我们会在CentOS中使用bind包为相同的域创建一个辅域名服务器(ns2)。

当创建一个辅DNS服务器的时候,下面的因素需要仔细考虑。

  • 在辅域名服务器中,你不需要手动创建正向和反向区域文件。这些区域文件会定期从主域名服务器上面同步。
  • 当主域名服务器上的任何区域文件被修改的时候,'serial'参数也应当被更新。只有当主服务器上面区域文件的serial被修改之后,辅DNS服务器才会进行同步。

我们假设辅DNS服务器的IP地址是172.16.1.4。让我们来进行安装。

设置主机名

就像主域名服务器一样,辅域名服务器的主机名也应当是一个完全限定域名(FQDN)。

# vim /etc/sysconfig/network

HOSTNAME=ns2.example.tst

注意,在该文件中设置的主机名在服务器启动的时候会被使用。因此,如果你在系统启动之后修改该文件,修改结果不会立刻生效。下面的命令可以用来在系统运行的时候修改并及时生效。

# hostname ns2.example.tst

设置之后,可以用下面的命令来查看主机名称。

# hostname

ns2.example.tst

在进行下面的步骤之前,确保所有三台服务器的主机名称已经被正确设置。

安装软件包

就像主服务器一样,配置一台辅域名服务器可以使用chroot或者不用。必须的软件包可以使用yum轻松安装。

不使用 chroot:

# yum install bind

使用 chroot:

# yum install bind-chroot

为区域文件的传输准备配置文件

在CentOS中使用bind创建域名服务器后,默认设置允许所有的区域文件被任意服务器同步。安全起见,我们需要配置主域名服务器,只允许它允许辅域名服务器进行同步。

1. 主域名服务器

不使用chroot:

# vim /etc/named.conf

使用chroot:

# vim /var/named/chroot/etc/named.conf

zone "example.tst" IN {
    type master;
    file "example-fz"; ## 文件example-fz在主域名服务器上 ##
    allow-update { none; };
    allow-transfer {172.16.1.4; }; ## 允许辅域名服务器进行传输 ##
};

zone "1.16.172.in-addr.arpa" IN {
    type master;
    file "rz-172-16-1"; ##文件rz-172-16-1在主域名服务器上##
    allow-update { none; };
    allow-transfer {172.16.1.4; }; ## 允许辅域名服务器进行传输 ##
};

2. 辅域名服务器

软件安装后提供的默认配置文件就可以用来配置辅域名服务器。但是,我们使用会使用另外一个实例配置文件来进行配置,因为这样便于调整。

不使用chroot:

# cp /usr/share/doc/bind-9.8.2/sample/etc/named.rfc1912.zones /etc/named.conf

使用chroot:

# cp /usr/share/doc/bind-9.8.2/sample/etc/named.rfc1912.zones /var/named/chroot/etc/named.conf

当执行完上面的命令进行文件拷贝后,添加下面的内容到刚才那个拷贝后的文件中。

options {
        directory "/var/named";
        forwarders {8.8.8.8; };

};

zone "example.tst" IN {
        type slave;  ## 该主机为辅域名服务器 ##
        file "example-fz"; ## 这个文件会被自动创建 ##
        //allow-update { none; };
        allow-transfer {172.16.1.3; };  ## 定义必要时进行从其传输的主域名服务器 ##
        masters {172.16.1.3; }; ## 定义主域名服务器 ##
};

zone "1.16.172.in-addr.arpa" IN {
        type slave; ## 该主机被定义为辅域名服务器 ##
        file "rz-172-16-1"; ## 这个文件会被自动创建 ##
//      allow-update { none; };
        allow-transfer {172.16.1.3; };  ## 定义主域名服务器 ##
        masters {172.16.1.3; };
};

结束工作

为了确保没有权限相关的问题,我们需要做如下调整。

不使用chroot:

chmod 770 /var/named/

使用chroot,你需在named服务启动后按照下面的命令修改权限。

# chmod 770 /var/named/chroot/var/named

现在万事俱备,我们可以重启named服务。或者,确保named服务已经被加到了开始列表中。

# service named restart
# chkconfig named on

如果不出意外,辅域名服务器应该会向主域名服务器请求一个区域的传输,并且产生自己的/var/named目录。日志文件/var/log/messages会包含一些named服务的有用信息,包括区域文件传输过程中的信息。

测试一个辅域名服务器

我们可以使用dig或者nslookup进行DNS测试操作。在本篇教程中我们会使用nslookup来进行演示。必要的软件包可以通过yum进行安装。

# yum install bind-utils
# nslookup

> server 172.16.1.4
Default server:     172.16.1.4
Address:            172.16.1.4#53

> example.tst
Server:             172.16.1.4
Address:    172.16.1.4#53

Name:       example.tst
Address:    172.16.1.3

> set type=mx
> example.tst
Server:             172.16.1.4
Address:            172.16.1.4#53

example.tst         mail exchanger = 10 mail.example.tst.

> exit

排错提示

  1. 我们无需在辅域名服务器上创建任何区域文件。所有的区域文件都会与主域名服务器进行同步。
  2. 辅域名服务器上的named服务会定期与主服务器进行同步。如果你想来一次及时的同步,可以使用命令"rncd retransfer "。如下:
# rndc retransfer example.tst
  1. 只有当主服务器上区域文件的serial数字被修改变大的时候,辅域名服务器才会进行更新。
  2. 确保用户named可以对文件夹/var/named或者/var/named/chroot/var/named(使用chroot的情况下)进行写操作。
  3. /var/log/messages会包含有用的信息。
  4. 我已经将SELinux关闭了。
  5. 确保防火墙对UDP53端口开放。

希望这个可以帮到你。


via: http://xmodulo.com/2014/04/secondary-dns-server-centos.html

译者:zzlyzq 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

任何运作中的域名至少有两台DNS服务器,一台称为主域名服务器(比如叫做ns1),而另一台称为从域名服务器(比如叫做ns2)。这些服务器通常用于故障转移:如果一台宕机,另外一台就激活成为DNS服务器(译注:此处译者有不同意见,事实上两个或更多的DNS服务器是共同工作的,并不是第一台停止服务后,第二台才接替工作。解析器是随机选择一个DNS服务器进行询问,如果超时则会询问下一个,这是多个DNS的故障容错机制)。也可以实现包括负载均衡、防火墙和集群在内的更为复杂的故障转移机制。

一个域的所有DNS条目都会被添加到主域名服务器,从服务器只会根据主服务器上的SOA记录的序列号参数从主服务器同步所有信息。

此教程将会讲述如何创建一台在CentOS上运行的主DNS服务器。请注意,本教程中提到的DNS服务器将会是一台开放DNS服务器,这也就是说该服务器将会回应来自任何IP地址的查询。对于DNS服务器的访问控制将在此教程中讨论(译注:开放的DNS服务器是一个安全隐患)。

在开始之前,我想要提一下的是,DNS可以在chroot环境中配置,也可以在非chroot环境中配置。chroot环境将DNS服务器限制在系统中某个特定目录中,以避免让服务器具有系统级的访问权限。在此环境中,任何DNS服务器的安全漏洞不会导致整个系统的破坏。将DNS服务器置于chroot环境中,对于部署测试也很有用。

目标

我们将在基于域名example.tst的测试环境中配置一台DNS服务器,这个域名是虚假的(并不真实存在的)。这样,我们就不会意外干扰到其它真实的域名。

在该域中,有以下三台服务器。

服务器IP地址托管的服务完全限定域名(FQDN)
Server A172.16.1.1Mailmail.example.tst
Server B172.16.1.2Web, FTPwww.example.tstftp.example.tst
Server C172.16.1.3Primary DNS serverns1.example.tst

我们将会配置一台主域名服务器,并添加上表中必要的域和DNS记录。

设置主机名

所有的主机名必须以完全限定域名的方式正确定义,可以通过以下方法完成设置。

# vim /etc/sysconfig/network 

HOSTNAME=ns1.example.tst

注:该文件中指定的主机名参数在服务器启动后才会启用(译注:或者网络服务重启后),因此,该设置不会马上生效。下面的命令可以立刻临时性地修改主机名。

# hostname ns1.example.tst 

一旦设置,主机名可以通过以下命令验证。

# hostname   
ns1.example.tst

在进入下一步之前,请确保上述三台服务器上的主机名已经设置正确。

安装软件包

我们将使用bind来配置DNS服务,该软件可以很方便地通过yum来安装。

不使用chroot环境的:

# yum install bind bind-chroot 

使用chroot环境的:

# yum install bind bind-chroot 

准备配置文件

正如前面提到的,bind可以在chroot环境下配置,或者在非chroot环境下配置,配置文件的路径会因为是否安装chroot包而不同。

配置文件路径区域文件路径
不带有 chroot/etc//var/named/
带有 chroot/var/named/chroot/etc//var/named/chroot/var/named/

可以使用默认提供的named.conf配置文件,但是为了更方便使用,我们将使用另外一个简单的配置文件模板。

非chroot环境:

# cp /usr/share/doc/bind-9.8.2/sample/etc/named.rfc1912.zones /etc/named.conf

chroot环境:

# cp /usr/share/doc/bind-9.8.2/sample/etc/named.rfc1912.zones /var/named/chroot/etc/named.conf

现在来备份并修改配置文件。

非chroot环境:

# vim /etc/named.conf 

chroot环境:

# vim /var/named/chroot/etc/named.conf 

添加/修改以下行:

options {
## 区域文件存放目录 ##
directory "/var/named";

## 对于非本地权威域的请求转发到 Google 的公开 DNS 服务器 ##
forwarders { 8.8.8.8; };
};

## 申明一个本地域 example.tst ##
zone "example.tst" IN {
        type master;
        file "example-fz"; ## 存储文件名,放在 /var/named ##
        allow-update { none; };
};

## 为IP段 172.16.1.0 提供反向解析 ##
zone "1.16.172.in-addr.arpa" IN {
        type master;
        file "rz-172-16-1"; ## 存储文件名,放在 /var/named ##
        allow-update { none; };
};

准备区域文件

那些默认的区域文件会自动创建到/var/named 或者/var/named/chroot/var/named (chroot环境)。如果在这些地方找不到这些文件,/usr/share/doc/bind目录中提供了模板文件,可以从这里拷贝。

假设默认区域文件没有提供,我们可以从/usr拷贝模板文件。

非chroot环境:

# cp /usr/share/doc/bind-9.8.2/sample/var/named/named.* /var/named/

chroot环境:

# cp /usr/share/doc/bind-9.8.2/sample/var/named/named.* /var/named/chroot/var/named

很好!由于现在默认的区域文件已经准备好,我们可以为example.tst和172.16.1.0网络创建区域文件了,以下要点必须时刻谨记。

  • 区域文件中的特殊字符‘@’意味着空。(译注:意即代表本域。)
  • 所有的完全限定域名必须以点‘.’结束。如:example.tst.如果没有这个点,你会发生问题。(译注:即会被当做当前@所代表的域的子域。)

1. 转发区域(本地权威域)

转发区域包含了名称到IP地址的映射。对于公开的域,域名托管提供商的DNS服务器存储了转发区域文件。(译注:转发区域即本地的权威域,由这个服务器自身提供权威的解析数据)

非chroot环境:

# vim /var/named/example-fz 

chroot环境:

# vim /var/named/chroot/var/named/example-fz 

$TTL 1D
@       IN SOA  ns1.example.tst. sarmed.example.tst. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
IN NS      ns1.example.tst.
IN A       172.16.1.3
mail        IN A        172.16.1.1
        IN MX 10    mail.example.tst.
www     IN A        172.16.1.2
ns1     IN A        172.16.1.3
ftp     IN CNAME    www.example.tst.

说明:在区域文件中,SOA是开始授权(Start Of Authority)的意思。它的值的第一段是授权名称服务器的完全限定域名。完全限定域名后面跟着的是电子邮件地址。由于不能在[email protected]这样的格式中使用‘@’符号(译注:@有特定意义,代表本域。),我们将电子邮件地址重写成sarmed.example.tst.这样的格式。

以下是典型的常用DNS记录类型:

  • NS:域名服务器
  • A: 地址记录,记录主机名到IP地址的映射(译注,此处原文有误。)
  • MX: 邮件交换记录。这里我们只用了一个邮件交换记录,设置其优先级为10。如果有多个邮件交换记录,我们可以使用多个数值优先级,数字小的优先级最高。例如,MX 0比MX 1优先级更高。
  • CNAME: 标准名。如果在一台单一服务器上托管了多个服务,也很可能将多个名称解析到某个单一服务器。CNAME指定了一台服务器可能有的其它名称,并且将它们指向具有实际A记录的名称。

2. 反向区域

反向区域包含了IP地址到名称的映射。这里,我们为172.16.1.0网络创建反向区域。在正式的域中,公共IP区块的拥有者拥有的DNS服务器存储反向区域文件。(某些服务,如邮件服务,要求IP地址具备正确的反向解析才能正常工作。而IP的反向解析,通常是由IP的拥有者如接入商或IDC来负责解析。)

非chroot环境:

# vim /var/named/rz-172-16-1 

chroot环境:

# vim /var/named/chroot/var/named/rz-172-16-1 

$TTL 1D
@       IN SOA  ns1.example.tst. sarmed.example.tst. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
IN NS      ns1.example.tst.
1       IN PTR  mail.example.tst.
2       IN PTR  www.example.tst.
3       IN PTR  ns1.example.tst.

说明:除了下面的参数外,反向区域文件中的大多数参数和转发区域文件中的相同。

  • PTR: IP反向解析记录,指向一个反向限定域名。

结束工作

既然区域文件已经准备好,我们接下来调整它们的权限。

非chroot环境:

# chgrp named /var/named/* 

chroot环境:

# chgrp named /var/named/chroot/var/named/* 

现在,我们为DNS服务器设置IP地址。

# vim /etc/resolv.conf 

nameserver 172.16.1.3

最后,我们可以启动DNS服务,并确保将它添加到启动服务中。

# service named restart
# chkconfig named on 

DNS服务器起动后,建议关注一下日志文件/var/log/messages,这里头包含了后台运行的一些有用信息。如果没有发现错误,我们可以开始测试DNS服务器。

测试DNS

我们可以使用dig或者nslookup来测试DNS。首先,我们需要安装必要的软件包。

# yum install bind-utils 

1. 使用dig测试转发区域

使用dig来测试时,必须时刻关注状态信息:“NOERROR”,任何其它值都表明存在问题。

# dig example.tst 

;; ->>HEADER<<- opcode: QUERY,  status: NOERROR, id: 31184

;; QUESTION SECTION:
;example.com.                   IN      A

;; ANSWER SECTION:
example.com.            86400   IN      A       172.16.1.3

;; AUTHORITY SECTION:
example.com.            86400   IN      NS      ns1.example.com.

;; ADDITIONAL SECTION:
ns1.example.com.        86400   IN      A       172.16.1.3

2. 使用dig测试PTR记录

使用dig来测试时,必须时刻关注状态信息:“NOERROR”,任何其它值都表明存在问题。(译注,也可用 dig 1.1.16.172.in-addr.arpa. ptr 来测试。)

# dig -x 172.16.1.1 

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27415

;; QUESTION SECTION:
;1.1.17.172.in-addr.arpa.       IN      PTR

;; ANSWER SECTION:
1.1.16.172.in-addr.arpa. 86400  IN      PTR     mail.example.tst.

;; AUTHORITY SECTION:
1.16.172.in-addr.arpa.  86400   IN      NS      ns1.example.tst.

;; ADDITIONAL SECTION:
ns1.example.tst.        86400   IN      A       172.16.1.3

3. 使用dig测试MX记录

# dig example.tst mx 

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35405

;; QUESTION SECTION:
;example.tst.                        IN      MX

;; ANSWER SECTION:
example.tst.         14366   IN      MX     10  mail.example.tst.

排错提示

  1. 我已经把SELinux关闭。
  2. 保证防火墙没有阻挡UDP 53端口
  3. 万一出错,可在/var/log/messages中查看到有用的信息
  4. 确保区域文件的属主为‘named’
  5. 确保DNS服务器的IP地址是/etc/resolv.conf中的第一条目
  6. 如果你使用example.tst作为实验环境,确保将服务器从互联网断开,因为example.tst是一个不存在的域。

最后小结,该教程关注的是实验环境中配置example.tst域用作为演示。请注意,该教程中创建了一台公共DNS服务器,此服务器会回应来自任何源IP地址的查询。如果你是在配置DNS生产服务器,请确保检查与公共DNS相关的策略。其它教程涵盖了创建从DNS服务器, 限制对DNS服务器的访问以及部署DNSSEC。

希望此教程对您有所帮助。


via: http://xmodulo.com/2014/04/primary-dns-server-using-centos.html

译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

我们在之前的教程中创建的DNS服务器是一个开放DNS解析器。开放解析器不会过滤任何来源请求,并会接受来自所有IP的查询。

不幸的是,开放解析器很容易成为一个攻击目标。比如,攻击者可以对开放DNS服务器发起一个拒绝服务攻击(DoS)或者更糟的分布式拒绝服务攻击(DDoS)。这些也可与IP欺骗结合,将应答包指向受害者被欺骗的IP地址。在另外的场合下称作DNS放大攻击,开放的DNS服务器很容易就会成为攻击的对象。

根据openresolverproject.org,除非有必要,运行一个开放解析器是不明智的。大多数公司要让它们的DNS服务器仅对他们的客户开放。本篇教程会只要集中于如何配置一个DNS服务器来使它停止开放解析且仅对有效的客户响应。

调整防火墙

由于DNS运行在UDP的53端口上,系统管理可能试图仅允许来自53端口的客户端IP地址,并阻止剩余的因特网端口。虽然这可以工作,但是也会有一些问题。既然根服务器与DNS服务器的通信也用53端口,我们不得不在防火墙内也确保UDP 53端口被允许。

一个防火墙示例如下所示。对于生产服务器,确保你的规则匹配你的要求并遵守与公司安全制度。

# vim firewall-script 

## existing rules are flushed to start with a new set of rules ##
iptables -F

iptables -A INPUT -s A.A.A.A/X -p udp --dport 53 -j ACCEPT
iptables -A INPUT -s B.B.B.B/Y -p udp --dport 53 -j ACCEPT
iptables -A INPUT -s C.C.C.C/Z -p udp --dport 53 -j ACCEPT

iptables -A INPUT -p udp --dport 53 -j DROP

## making the rules persistent ##
service iptables save

让脚本可执行并运行它。

# chmod +x firewall-script
# ./firewall-script 

阻止递归查询

DNS查询主要可以分为递归查询和迭代查询。对于递归查询,服务器会响应客户端应答或者错误信息。如果应答不在服务器的缓存中,服务器会与根服务器通信并获得授权域名服务器。服务器会不停查询知道获得结果,或者请求超时。对于迭代查询,另一个方面讲,服务器会将客户端指向另外一个可能可以处理的服务器上,那么就会减少服务器自身的处理。

我们可以控制运行递归查询的IP地址。我们修改位于/etc/named.conf的配置文件并增加/修改下面的参数。

# vim /etc/named.conf

## we define ACLs to specify the source address/es ##
acl customer-a{ A.A.A.A/X; };
acl customer-b { B.B.B.B/Y; C.C.C.C/Z; };

## we call the ACLs under options directive ##
options {
        directory "/var/named";
        allow-recursion { customer-a; customer-b; };
};

调整用于开放解析器的防火墙

如果你必须运行一个开放解析器,建议你适当调节一下你的服务器,这样就不会被利用了。smurfmonitor 仓库提供了强大的一组可以用于开放解析器的iptables规则,比如阻止来自DNS放大攻击的域名解析请求。这个仓库会定期地更新,强烈建议DNS服务器管理员使用它。

总的来说,对于开放DNS解析器的攻击是很常见的,特别是对于没有适当安全防护的DNS服务器而言。这个教程延时了如何禁止一个开放DNS服务器。我们同样看到了如何使用iptables在一个开放DNS服务器上加上一层安全防护。

希望这对你有用。


via: http://xmodulo.com/2014/04/close-open-dns-resolver.html

译者:geekpi 校对:校对者ID

本文由 LCTT 原创翻译,Linux中国 荣誉推出

互联网是个大熔炉。无论是好人还是坏人,都可以和我们一样连接到网络。那些制作病毒感染人们电脑的坏蛋以及寻求保护人们的好人们全都连接到同一网络中。

就像人们所说的那样,互联网是过去所出现的一个最好的东东。它包含着任何人都可以获取的有价值的信息和资源,且大部分可以免费获取。一些最著名高校的人提供了免费的高质量课程,可供任何想学习的人来学习。今天,我们都可以连入互联网真是一件好事情。

但是有些事情你一定要记住,当你连入互联网时,你的电脑就成了攻击的目标。成为病毒,木马和其它程序破坏的目标。

正因为此,推荐连入互联网的电脑都要使用反病毒和反间谍软件来保护。在有些情况下,即使使用了这些软件也不能完全保证你的安全。再添加一个安全层总是一个好主意。

当寻找添加一个额外的安全层去保护你的机器时,使用OpenDNS的安全DNS框架可能会有帮助。因特网有许多部分组成,尽力对其每一部分都进行相应保护是保证安全的最好方法。

首先,你要在你的电脑上安装反病毒和反间谍软件。由于浏览因特网时允许你的电脑查询远程DNS服务器,因此使用受保护的安全的DNS服务器将是保护你电脑安全的好方法。(译注:我们认为,其实在Ubuntu上使用反病毒和反间谍软件并不太必要,但是使用OpenDNS来拦截对恶意网址的访问是有必要的。另外,使用国外的DNS可能会比较慢,也许过一段时间,国内也会出现类似的服务。)

这是一个简明手册,告诉你如何在Ubuntu上配置OpenDNS框架以便保护你的电脑。

sudo gedit /etc/dhcp/dhclient.conf

最后,在打开的文件中添加下面一行,然后保存。

supersede domain-name-servers 208.67.222.222,208.67.220.220;

重启你的电脑,祝你玩的开心!

好好享受吧!


via: http://www.liberiangeek.net/2013/11/daily-ubuntu-tipsprotect-your-computers-using-opendns-secure-dns-infrastructure/

译者:Linux-pdz 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出