科学上网——搭建自己的DNS服务器

DNS(Domain Name Server)故名思议就是把把域名解析为IP地址。为啥要自己搭DNS服务器呢?好处主要有以下几个:(1)通过缓存来提高域名解析的速度。(2)通过域名指向正确的IP地址能够访问被wall的网站。(3)通过域名指向无效的IP地址来过滤网站的广告。那么这篇文章就带领你搭建自己的DNS服务器来实现上述功能。

首先你需要一台主机来做DNS服务器:可以用普通电脑,或者树莓派,或者一个路由器刷openwrt系统。其设置都是大同小异。这里我用树莓派,比较省电,可以7x24小时开机、性能也还不错。

image_1b92v70v7a93gac1ofog7k1no29.png-172.7kB

安装dnsmasq

dnsmasq是linux下的一个轻量级DHCP和DNS服务器。在这里我们只用到它的DNS服务。那我们先把它装好:

1
sudo apt install dnsmasq -y

把如下配置项加入/etc/dnsmasq.conf

1
2
listen-address=127.0.0.1,192.168.1.10
cache-size=15000

这个地址192.168.1.10就是树莓派的固定IP。
设置好之后我们通过service dnsmasq status能看到服务是否跑起来了。

设置hosts

这里提供了能访问很多被wall网站的hosts
这里提供了能去广告的hosts
下面我们需要把这些hosts加入到本机的/etc/hosts文件里面,我写了一个脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/bin/sh
# script to update the hosts file
# Must be run as root
if [[ `whoami` != "root" ]]
then
echo "This install must be run as root or with sudo."
exit
fi
DATE=`date`
cp /etc/hosts /etc/hosts.bak
echo "" > /etc/hosts
# for google, wiki, etc.
git clone https://github.com/racaljk/hosts
cat hosts/hosts >> /etc/hosts
rm -rf hosts
# wipe out ads
git clone https://github.com/vokins/yhosts
cat yhosts/hosts >> /etc/hosts
rm -rf yhosts
# delete some entry: taobao alipay ...
sed -i '/taobao/d' /etc/hosts
sed -i '/alipay/d' /etc/hosts
# restart the dns server
service dnsmasq restart
echo "updated at "$DATE >> update_hosts.log

接下来把这个脚本加入定时任务crontab -e,设为每周执行一次来获取最新的hosts。

1
2
# m h dom mon dow command
0 0 * * 1 /root/update_hosts.sh

配置路由器

接下来需要把路由器的首选DNS服务器设置为我们刚刚搭建的DNS服务器的IP地址192.168.1.10。设置完之后你的手机、平板、电脑等设备就会在每次接入路由器的时候从路由器获取DNS。当然也可以挨个设置每个设备的DNS。很显然,因此如果你有多个设备比如手机平板的话,在路由器统一设置比较方便。

image_1b8uf1bb49o41hh6eakk0ugn9.png-63.3kB

测试

网站 网址 是否能访问
谷歌 https://www.google.com.hk OK
YouTube https://www.youtube.com OK
维基百科 https://www.wikipedia.org OK
Facebook https://www.facebook.com OK
twitter https://www.facebook.com OK

有些网站需要用https协议才能正常访问,所以需要输入https打头的地址。

另外好多原来被wall的app都可以用了,好多视频网站的广告也消失了。

参考

https://wiki.archlinux.org/index.php/Dnsmasq
http://debugo.com/dnsmasq/
http://www.heystephenwood.com/2013/06/use-your-raspberry-pi-as-dns-cache-to.html

如果还想看到更多此类文章,请移步到小宇的博客

文章目录
  1. 1. 安装dnsmasq
  2. 2. 设置hosts
  3. 3. 配置路由器
  4. 4. 测试
  5. 5. 参考
|