当前位置: 首页 > linux, 系统安全 > 正文

绕过 DNS 默认 UDP 53端口的屏蔽之苦逼SA

[摘要]因为业务特性对DNS请求量比较大(其实也没有多大,UDP流量也就50M+),然后整个网段的UDP53请求被运营商残忍地Block掉,所有机器无法解析域名。。。然后与IDC与运营商各种电话,发现流程非常繁琐,而且时间无法保证,重点是业务受到了严重影响,于是只能努力寻求其他解决方案。

初步想法是找台该IDC没有被block的ip地址,然后搭建dns,我们中转出去,后来经过沟通没有这样的IP存在,也就是说整个IDC被我们搞挂了,所有客户都无法解析域名啦,对这个表示非常sorry。。

另外就是猜测运营商是通过IP地址+协议+端口封的请求,是不是可以修改DNS的默认请求,下面就是这样的测试,后来发现成功鸟,不过这也只是临时解决方案,最终还是要找运营商把限制解开,这个暂且不提,下面是如何通过DNS非标准端口绕过封堵的过程。

具体操作如下:
需要搭建两台unbound服务器,远离就是通过本地DNS缓存与DNS forward功能:
DNS1:10.20.30.40:53(内网)
DNS2:80.70.60.50:5553(公网)

DNS请求流程:
10.20.30.0/24(内部服务器) –> 10.20.30.40:53(DNS1) –> 80.70.60.50:5553(DNS2)

##DNS2:80.70.60.50
DNS1 unbound配置:

cat /etc/unbound/unbound.conf
    interface: 80.70.60.50
    port: 5553
    root-hints: "/etc/unbound/named.cache"    
    access-control: 10.20.30.0/24 allow

DNS2本机的dns配置

# cat /etc/resolv.conf 
nameserver 8.8.8.8

##DNS1: 10.20.30.40
DNS1 unbound配置:

cat /etc/unbound/unbound.conf
    interface: 10.20.30.40
    port: 53
forward-zone:
    name: "."
    forward-addr: 80.70.60.50@5553

DNS1本机的dns配置

# cat /etc/resolv.conf 
nameserver 127.0.0.1

其他10.20.30.0/24网段的服务器可以配置10.20.30.40为dns服务器

# cat /etc/resolv.conf 
nameserver 10.20.30.40

下面是在其中一台服务器的测试情况:
# dig www.baidu.com

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5 <<>> www.baidu.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65416
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 5

;; QUESTION SECTION:
;www.baidu.com.			IN	A

;; ANSWER SECTION:
www.baidu.com.		1200	IN	CNAME	www.a.shifen.com.
www.a.shifen.com.	300	IN	A	119.75.217.56
www.a.shifen.com.	300	IN	A	119.75.218.77

如果通过公网DNS dig +trace的话,结果会非常长,能够看到13个根DNS服务器,依次是com. baidu.com. 最后找到www.baidu.com
# dig @8.8.8.8 www.baidu.com +trace

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> @8.8.8.8 www.baidu.com +trace
; (1 server found)
;; global options: +cmd
.			16322	IN	NS	a.root-servers.net.
.			16322	IN	NS	b.root-servers.net.
.			16322	IN	NS	c.root-servers.net.
.			16322	IN	NS	d.root-servers.net.
.			16322	IN	NS	e.root-servers.net.
.			16322	IN	NS	f.root-servers.net.
.			16322	IN	NS	g.root-servers.net.
.			16322	IN	NS	h.root-servers.net.
.			16322	IN	NS	i.root-servers.net.
.			16322	IN	NS	j.root-servers.net.
.			16322	IN	NS	k.root-servers.net.
.			16322	IN	NS	l.root-servers.net.
.			16322	IN	NS	m.root-servers.net.
;; Received 228 bytes from 8.8.8.8#53(8.8.8.8) in 6013 ms

com.			172800	IN	NS	a.gtld-servers.net.
com.			172800	IN	NS	b.gtld-servers.net.
com.			172800	IN	NS	c.gtld-servers.net.
com.			172800	IN	NS	d.gtld-servers.net.
com.			172800	IN	NS	e.gtld-servers.net.
com.			172800	IN	NS	f.gtld-servers.net.
com.			172800	IN	NS	g.gtld-servers.net.
com.			172800	IN	NS	h.gtld-servers.net.
com.			172800	IN	NS	i.gtld-servers.net.
com.			172800	IN	NS	j.gtld-servers.net.
com.			172800	IN	NS	k.gtld-servers.net.
com.			172800	IN	NS	l.gtld-servers.net.
com.			172800	IN	NS	m.gtld-servers.net.
;; Received 491 bytes from 193.0.14.129#53(193.0.14.129) in 9984 ms

baidu.com.		172800	IN	NS	dns.baidu.com.
baidu.com.		172800	IN	NS	ns2.baidu.com.
baidu.com.		172800	IN	NS	ns3.baidu.com.
baidu.com.		172800	IN	NS	ns4.baidu.com.
baidu.com.		172800	IN	NS	ns7.baidu.com.
;; Received 201 bytes from 192.12.94.30#53(192.12.94.30) in 396 ms

www.baidu.com.		1200	IN	CNAME	www.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns2.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns4.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns3.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns1.a.shifen.com.
a.shifen.com.		1200	IN	NS	ns5.a.shifen.com.
;; Received 228 bytes from 202.108.22.220#53(202.108.22.220) in 1 ms

通过自己的DNS服务器则只有一跳:
# dig www.baidu.com +trace

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> www.baidu.com +trace
;; global options: +cmd
;; Received 12 bytes from 10.20.30.40#53(10.20.30.40) in 1 ms

测试结果还是比较满意,至少功能上实现了,临时顶一阵,如果被封就继续换端口,还被封可以试试20,21,22,80之类的,我就不信量http/ftp也给封了(当然,人家把整个IP段封掉我也没辙,不过这个咱不告诉他:)

本文固定链接: https://sudops.com/unbound-pass-dns-udp-53-port-block.html | 运维速度

该日志由 u2 于2014年11月19日发表在 linux, 系统安全 分类下,
原创文章转载请注明: 绕过 DNS 默认 UDP 53端口的屏蔽之苦逼SA | 运维速度
关键字: , ,

报歉!评论已关闭.