解决DNSMASQ内网地址无法解析No address (A) records available

部署DNSMASQ有一段时间了,最近发现一个奇怪现象,所有内网网站均无法解析,通过nslookup命令,得到如下结果:

Server:  192.168.24.6
Address:  223.5.5.5

*** No address (A) records available for oa.example.com

其中oa.example.com是内网域名,当然这里我只是举个例子:-) 域名管理员已经将该域名解析到一个私有内网地址上,外部DNS服务器均能正常解析这个域名,唯独部署了DNSMASQ的域名服务器无法解析。

开始时并没有介意,而是通过硬绑定的方式在DNSMASQ的配置文件中将内网地址映射到oa.example.com,配置方式如下:

address=/oa.example.com/192.168.25.4

继续阅读

iptables劫持并拦截DNS查询53端口实现转向(Redirect)

企业内网中经常会有这样的需求,比如说业务服务器的IP地址为192.168.6.25,大家也就习惯于访问这个地址了,运维也很厚道的将某个域名解析到这个IP地址,这样大家也就不必记住繁琐的IP地址,同时运维也很方便的将业务服务器由192.168.6.25的主机迁移到192.168.6.26的主机而无需通知客户端更改地址,这也是域名发挥的作用,好了,现在问题来了:-)

客户说我们企业很小,不想另外购买域名,好吧,每年五十几块也是一笔费用,而且购买域名后还需要有人维护,比如要记得续费什么的,略麻烦。同样的还觉得将内网地址公布到外网上不是安全的行为。

经过我的询问得知该企业拥有一台自建的DNS服务器,为全网提供DNS查询,那这事情就好办多了,对DNS服务器软件硬绑定指定的域名到IP地址的记录(由于是我们自己的DNS服务器,这里的域名可以任意设置,当然最好设置为公网上没有的域名地址以避免冲突)。

继续阅读

无线路由器安全与DNS设置

前一段时间央视曝光多家路由器存在后门和漏洞,不乏有Cisco(思科)、NetGear(网件)这样的大牌子,话说Cisco路由器的品质确实给我留下了深刻的印象,这里我就路由器安全随便谈谈自己的一些想法吧。

不可否认的是某些厂家出于某些利益需要在路由器系统里确实预留了控制的后门,这些后门一旦被黑客发现的确会造成毁灭性的破坏,对于这样的安全问题我们只能寄希望于那些良心路由器厂家,或者你也可以参考我前面的文章自己用Raspberry Pi树莓派搭建个自己的无线路由器。当然大多数情况下我们可能杞人忧天了,无线路由器最大的安全问题却是弱密码或者默认密码问题,比如TP-Link经典的admin和admin,所以购买路由器后第一件事就是修改出厂的默认密码,大多数路由器设置被恶意篡改就是因为默认密码没有更改而被XSS,这里建议路由器厂家采取CSRF TOKEN防范这类恶意构造攻击。另外对于无线路由器来说,无线密码也是骇客最爱破解的弱项之一,我曾经就使用12345678这样的弱密码连接过周围的无线热点,这类弱密码设置了也和没有设置一样,建议立即修改,另外不建议采用纯数字位数低的无线密码,因为这类密码也很容易被软件暴力破解,对于无线来说如果你连接的设备允许的话,可以选择关闭SSID(不广播),这样别人就看不见无线名字了,也不会动了破解的心思。

继续阅读

Debian/树莓派Raspberry Pi加速上网体验之设置公共DNS查询服务器

之前我有一篇文章将树莓派(Raspberry Pi)设置为无线路由的,试用了一段时间觉得效果不错,但是总觉得树莓512MB内存仅仅作为路由太浪费了,于是我就想能不能将DNS公共查询服务器也架设在上面,这样常用的DNS查询将会缓存到树莓派上,也起到DNS查询加速的作用。

首先我找到了网上的解决方案,在树莓讨论版上《[HOW TO] Use your RPI as a DNS server and speed up yo’ net!》,当然这个解决方案是基于这篇文章的《DNS on Raspberry Pi — Speed up your internet Experience》,使用树莓派最大的好处是有强大的社区支持,基本上你所遇到的问题网上都有相关的解决方案,得益于Debian的丰富的包,一些软件可以直接apt安装,我在这里再简单的阐述一下关于DNS公共查询服务器的设置:

原作者为我们直接打包了命令,所以我们可以直接执行下面的代码:

继续阅读

CNNIC的免费公共DNS不可用了?

昨天接到机房报障,说是用户只能上QQ而不能打开网页,很明显是DNS出现了故障,那台负责网关的服务器配置的上游DNS使用的是中国互联网络信息中心(CNNIC)的免费公共DNS(主DNS:210.2.1.1,辅DNS:210.2.2.2 ),随即进行测试,测试结果是主DNS和辅DNS均访问超时,无法获取DNS查询结果,如下所示,其中谷歌的公共DNS查询正常:

CNNIC公共DNS服务器故障

不晓得是什么原因,看来只有替换这两个DNS服务器了,由于用的是江苏电信,于是采用了电信在江苏设立的4台DNS服务器,为防止意外,还添加了谷歌等国外几个DNS服务器,然后网络恢复正常。

说实话真的不想用电信的DNS解析,因为容易被劫持访问,但是测试下来还是电信的解析速度比较快,国外的DNS容易被×,算了,稳定第一。有童鞋可能要问为什么一开始不设置电信的DNS呢,因为当时在Windows 2008 R2上配置DNS的时候电信的几台DNS服务器一台也不认,最后还是CNNIC的通过了验证,其实配置完成后,可以手动忽略警告强制把先前不认的DNS服务器地址配置进去。

好了,这个问题算是解决了,如果对DNS配置或者江苏电信的几台DNS服务器比较感兴趣的话可以参考这篇《解决DNS解析故障导致能上QQ却打不开网页的问题》文章。

2012年8月9日更新

感谢lscomeon的提醒,没想到CNNIC搞云解析了,新的CNNIC公共云解析服务(SDNS)地址为:首选DNS服务器:1.2.4.8备用DNS服务器:210.2.4.8。

不要给域名设置过多的DNS(Nameserver)服务器

今天论坛上有童鞋问,他的域名注册商可以允许其设置最多13个DNS(Nameserver)服务器,问是不是全部设置了,域名的DNS就会比较稳定?也就是说NS1挂了还有NS2,NS2挂了还有NS3,依次类推到NS13。恩,这个想法是好的,多个NS进行冗余备份,有效的降解了DNS被屏蔽导致的网站无法访问的风险系数。但是实际可能不如大家想的那么美好,首先RFC已经指出这种做法是不妥的,参考RFC 1537第6条(节选如下):

For each top level domain there should be 2 secondary servers in Europe and 2 in the USA, but there may of course be more on either side. An excessive number of nameservers is not a good idea though; a recommended maximum is 7 nameservers.

意思是过多的nameservers是不好的做法,建议最大nameservers数目保持在7。

有些DNS在线健康检查会指出:Too many nameservers cause larger packets, requiring more bandwidth. should aim to reduce this to no more than 5.

继续阅读

再谈域名DNS服务器不能混用多个NS的问题

前面有篇文章《域名DNS服务器设置不能混用多个不同的Name Server》介绍的是关于域名Nameserver不能混用的问题,但是后来发现自己的一些想法有些绝对了。

其实稍微有些高级的域名DNS服务器都提供Primary DNS(Master DNS)和Secondary DNS(Slave DNS),顾名思义,域名NS分为两种模式,一种是首要DNS服务器(Primary/Master),一种是辅助DNS服务器(Secondary/Slave),也称为主DNS和从DNS。之所以前面那篇文章介绍不能混用,是因为不能混用多个不同的主DNS服务器,因为一个主DNS服务器拥有一个起始授权机构(SOA),多个主DNS混用必然导致SOA混乱,进而容易造成解析混乱。假如我们想利用多家DNS服务商进行冗余解析,那该怎么办呢?其实很简单,我们只需要保证一个Primary DNS,其余的都是Secondary DNS就可以了,对于不同的DNS服务商来说,从属DNS和主要DNS通讯的方式就是AXFR。什么是AXFR,准确的说AXFR是一种请求(request),是指从DNS服务器请求在主DNS服务器上更新信息的一类域名系统的请求。也就是说我们只需要更新主DNS的解析设置,相关的设置将在设定的时间内被从DNS抓取,所以我们也没有必要再去设置从DNS了。相关的操作又称为Zone Transfer。

继续阅读

几款免费的公共DNS域名解析服务介绍

公共DNS域名解析服务(Public DNS Service)是供大家进行域名解析的服务,有别于注册域名设置的Nameservers,虽然都属于解析域名的DNS服务,注册域名所设置的Nameserver DNS是该域名的权威解析服务器,而公共DNS域名解析服务器是一种非权威的域名解析,你向它发起查询,它将优先检索自己的缓存,没有的话才向上级DNS服务器直至该域名的权威服务器发起查询,并根据返回记录的TTL设置缓存公共DNS域名解析服务器的时间,这样下次查询就会快些。这也就是为什么返回的查询会有“非权威应答(Non-authoritative answer)”字样了。

有童鞋可能会问,为什么我们不直接查询权威DNS,而是让公共DNS服务器向权威服务器发起查询?这正是我们所要讲的区别,该域名的权威服务器只负责返回该域名或者其他在它上面注册的DNS记录,未经注册的域名,将无法返回记录,这也是一个由普遍到特殊的过程,公共DNS是普遍的,权威DNS是特殊的。负责返回权威DNS记录的是域名的顶级根服务器,通用顶级域名(gTLD)根服务器貌似全球就13台,好啦,更详细的有关DNS的知识还是参考网络方面的书籍吧。

今天我要介绍的是我们老百姓用的公共DNS解析服务,前面我已经介绍了关于DNS服务不正常导致能上QQ却打不开网页的问题。具体的设置可以参考那篇文章,当然我也提供了几组电信的DNS服务器地址,不过有时电信的DNS解析确实不给力,如果不喜欢电信的解析服务的话不妨尝试一下下面的免费DNS解析服务:

继续阅读

域名DNS服务器设置不能混用多个不同的Name Server

本来一直使用dnspod的域名解析服务的,后来发现国外的DNS服务HE.NET也不错,有一天突发奇想,就是想能不能混用多个DNS 解析服务器,于是就混用了dnspod和HE.NET这两家的NS,现在域名的NS列表变成了如下:

1
2
3
4
5
6
Name Server:NS2.HE.NET
Name Server:NS3.HE.NET
Name Server:NS4.HE.NET
Name Server:NS5.HE.NET
Name Server:F1G1NS1.DNSPOD.NET
Name Server:F1G1NS2.DNSPOD.NET

后来解析生效后网站访问正常,于是暗暗自喜,然而DNSPOD控制台却显示解析错误,然后我通过DNSPOD查看了各地的生效情况,基本都能正常解析到服务器IP上,不过我注意到一个东西,那就是SOA,什么是SOA?“起始授权机构 (SOA) 资源记录指明区域的源名称,并包含作为区域信息主要来源的服务器的名称。它还表示该区域的其他基本属性。”也就是说其指明了哪个Name Server为主要的权威解析服务器,观察各地的解析情况,发现要么只定位到HE.NET的SOA,要不只定位到DNSPOD的SOA,本来以为没有什么,但是通过在线域名DNS诊断服务INTODNS发现了问题,首先每个SOA指定了权威NS服务器的序列号,很明显HE.NET的一组NS服务器和DNSPOD的NS服务器的序列号是不一样的,一般情况下一个域名DNS解析不允许有两个SOA服务器存在,貌似这样会导致NO GLUE问题(在参考了《DNS NO GLUE》这篇文章后,了解到不是同属于一个 TLDs才会出现NO GLUE现象),NO GLUE略微会造成解析上的延迟,不过不是致命的问题,还有就是解析的混乱了,一会SOA是HE.NET一会是DNSPOD的,所以这个问题还是要尽快更正的。

解决DNS解析故障导致能上QQ却打不开网页的问题

最近发现单位的DNS不是很稳定的,经常会出现解析问题,比如部分网站打不开,另外DNS故障还会导致“能上QQ却打不开网页”这一类经典的问题。

本人记性不是很好的,开始也就是简单的将DNS服务器设置为谷歌的DNS服务8.8.8.8和8.8.4.4,一开始工作也正常,但是过一段时间后发现谷歌的DNS经常会被切断,有段时间直接是8.8.8.8无法访问,幸好8.8.4.4还能正常查询,不得不感慨防火墙的强大。

鉴于以上的情况,我只有选择国内的DNS服务器了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
> server a.center-dns.jsinfo.net
Default Server:   a.center-dns.jsinfo.net
Address:   218.2.135.1
南京电信
 
> server b.center-dns.jsinfo.net
Default Server:   b.center-dns.jsinfo.net
Address:   221.228.255.1
无锡电信
 
> server c.center-dns.jsinfo.net
Default Server:   c.center-dns.jsinfo.net
Address:   61.177.7.1
苏州电信
 
> server d.center-dns.jsinfo.net
Default Server:   d.center-dns.jsinfo.net
Address:   61.147.37.1
徐州电信

一般情况下我将南京电信 218.2.135.1设为主服务器,苏州电信 61.177.7.1设为辅助服务器。设置的方法就是对本地连接右击属性然后如下图所示:

继续阅读