首页 > 网络协议 > DNS > 关于服务器被禁用UDP协议后如何使用DNS解析和时间同步服务

关于服务器被禁用UDP协议后如何使用DNS解析和时间同步服务

DNS 系统软件

一.问题情况

由于服务器出现持续长期的DDos攻击,大部分是udp的小包攻击,应该是ntp和dns解析udp放大攻击所致,机房直接封禁了外网IP的UDP协议,造成服务无法正常的解析域名和同步时间,所以找了个方法可以让服务器继续正常的使用解析服务和同步时间,找到如下方法.

二.解决办法

系统是centos7,dns默认使用UDP的53端口解析,封禁udp后,所有的dns解析无法正常,需要使用tcp,网上找了一些方法,都无法生效:

以上方法均无法让dns正常,只能从网上找了一个把udp转成tcp协议的工具

https://github.com/zfl9/dns2tcp

服务器上需要先安装过gcc环境,否则无法编译,如果当前服务器无法解析,只能先把yum源的域名用能解析的机器现在解析出来,然后写入/etc/hosts里先强制解析把需要的环境装好,git下不到文件同理

安装的默认目录是/usr/local/bin/dns2tcp,可安装到其它目录,如 make install DESTDIR=/opt/local/bin

安装好以后启动这个程序,前提是没有程序占用本地的127.0.0.1的53端口,程序会把请求本地127.0.0.1的53端口的udp解析请求转发到114.114.114.114的53端口的tcp请求

然后网卡/etc/sysconfig/network-scripts/ifcfg-{网卡名}里修改一下dns设置为127.0.0.1重启网卡服务器service network restart或者直接修改/etc/resolv.conf的servername为127.0.0.1临时使用

有些DNS的IP是不支持tcp请求的,所以可以安装dig用+tcp测试一下,有返回就是支持的,没返回就不支持,已知114.114.114.114和8.8.8.8都支持tcp请求

这样DNS问题就算解决了.下来还要处理服务器时间同步ntp问题,因为有些服务器时间长了因为高负载或者本身硬件问题,时间会过快或者过慢,就需要定期同步系统时间,ntpdate也使用的UDP协议的123端口,哪怕使用-u参数,也只是使用了高位端口依然还是不通的,更换chrony和rdate还是没有任何效果.

网上也看到了ntp使用tls和https同步的方法,感觉有些麻烦也没有尝试,由于服务器不需要高精度时间,最后想了一个比较偷懒的方法,直接请求baidu头部,获取到时间,设置为系统时间

或者使用wget也可以