本次文章为在进行一次项目实施时,基于客户出海的需求而学习到的,简单需求如下:客户引进海外专线,需要将国内流量走向本地出口,国外流量走向海外专线,如果客户端DNS配置为国内DNS,则会造成DNS污染,而配置成国外DNS,则会导致访问国内网站较慢的情况,因此才诞生出本篇文档。
本篇文章介绍了一种DNS分流的工具,这是在Dnsmasq工具的基础上添加了dnsmasq-china-list来达到以下效果:终端DNS指向这个设备,这个设备内置了中国大陆几乎所有的域名,当访问这些域名时使用国内DNS解析,反之则用国外DNS解析。下面开始进行配置
一、创建Centos7服务器
该创建方法不多赘述CDSN中有较多讲述搭建服务器的教程
二、下载Dnsmasq
1、Dnsmasq 提供 DNS 缓存和 DHCP 服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存 DNS 请求来提高对访问过的网址的连接速度。
首先安装后续需要用到的工具
yum install net-tools
yum install traceroute
yum install bind-utils
yum install vim
yum install -y git
yum -y install wget
2、下载Dnsmasq
yum -y install dnsmasq
3、配置Dnsmasq
进入dnsmasq.conf中
vim /etc/dnsmasq.conf
配置文件,添加红框中的文字,由于该文件全被注释掉了,所以可以集中收集后统一进行添加
最终所需添加内容为:
no-resolv
no-poll
server=8.8.8.8
listen-address=192.168.2.246,127.0.0.1
conf-dir=/etc/dnsmasq.d,.rpmnew,.rpmsave,.rpmorig
cache-size=10240
这几行是dnsmasq的配置文件中的一些选项,它们的含义如下:
no-resolv
:表示不使用系统默认的DNS解析文件(/etc/resolv.conf),而是使用dnsmasq自己的DNS解析文件。no-poll
:表示不进行周期性的DNS服务器状态检查。server=8.8.8.8
:指定一个DNS服务器地址为8.8.8.8,即谷歌的公共DNS服务器。listen-address=192.168.2.246,127.0.0.1
:指定dnsmasq监听的地址,这里监听了两个地址:192.168.2.246和127.0.0.1。conf-dir=/etc/dnsmasq.d,.rpmnew,.rpmsave,.rpmorig
:指定dnsmasq的配置文件目录为/etc/dnsmasq.d,以及备份文件目录为.rpmnew、.rpmsave和.rpmorig。cache-size=10240
:设置DNS缓存大小为10240条记录。
其中第四行的192.168.2.246替换成服务器本身的地址
三、拉取dnsmasq-china-list
1、拉取dnsmasq-china-list
wget https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/install.sh
该资源正常需要拥有访问海外的权限才能拉取,或者下载后手动拉到服务器中
2、提高权限
chmod +777 install.sh
3、运行安装文件
sudo ./install.sh
运行前可以进入该脚本中查看一下,看一下红框中的域名是否为223.5.5.5,如果是,就没关系,如果不行就需要修改成这个。
4、
四、关闭防火墙并将dnsmasq设为开机自启
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl restart dnsmasq
systemctl enable dnsmasq
systemctl start dnsmasq
五、测试网站
dig xxx
使用dig加上网站进行测试