防止运营商DNS劫持,DNS污染,DNS劫持怎么办,DNS污染怎么办,DNS污染怎么解决,DNS污染太严重
DNS劫持主要是运营商以盈利为目的,进行的域名解析干扰,比如广告和强制使用缓存。几年前很多教程会告诉你使用OPENDNS或者114、百度、阿里的公共DNS来解决,运营商也提升了劫持技术,针对UDP协议,伪造DNS查询结果。目前DNS劫持主要针对UDP协议,TCP还没有被劫持,目前国内公共DNS支持TCP的也只有114,可以预见基于TCP协议的DNS查询应该没事,因为门槛高,用的人比较少。
安装pdnsd,将DNS地址指向pdnsd所在的IP,让pdnsd通过TCP协议查询上游DNS,这样就避免了DNS劫持,上游服务器可以选择114、OPENDNS和PRCDNS,但是OPENDNS对CDN不友好,会把淘宝的图片CDN网址img.alicdn.com指向香港,所以不推荐使用。
安装
pdnsd不支持Windows,建议Windows用户使用UNbound。
pdnsd可以安装在openwrt(淘宝有刷好的几十元路由器)、树莓派(淘宝二手50元不带电源线)、x86的工控机小主机(淘宝上几十元可能买到),推荐后2种,路由器性能太低,可玩性不高。
配置
根据不同的需求,我推荐pdnsd的2种配置。
普通用户
使用114DNS,114DNS还有其他功能
纯净 无劫持 无需再忍受被强扭去看广告或粗俗网站之痛苦
服务地址为:114.114.114.114 和 114.114.115.115
拦截 钓鱼病毒木马网站 增强网银、证券、购物、游戏、隐私信息安全
服务地址为:114.114.114.119 和 114.114.115.119
学校或家长可选拦截 色情网站 保护少年儿童免受网络色情内容的毒害
服务地址为:114.114.114.110 和 114.114.115.110
详见114DNS官网
下面是pdnsd的配置:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19global {
perm_cache=2048;
cache_dir="/var/cache/pdnsd";
run_as="pdnsd";
server_ip = 0.0.0.0; // Use eth0 here if you want to allow other
server_port = 53; // machines on your network to query pdnsd.
status_ctl = on;
paranoid=on;
query_method=tcp_only; // pdnsd must be compiled with tcp 只用tcp协议
min_ttl=1d; // Retain cached entries at least 15 minutes.
max_ttl=1w; // One week.
timeout=10; // Global timeout option (10 seconds).
}
server {
label = "114dns"; //设置114DNS作为上游服务器
ip = 114.114.114.114,114.114.115.115;
timeout = 10;
port = 53;
}高级用户
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
26global {
perm_cache=2048;
cache_dir="/var/cache/pdnsd";
run_as="pdnsd";
server_ip = 0.0.0.0; // Use eth0 here if you want to allow other
server_port = 53; // machines on your network to query pdnsd.
status_ctl = on;
paranoid=on;
query_method=tcp_only; // pdnsd must be compiled with tcp 只用tcp协议
min_ttl=1d; // Retain cached entries at least 15 minutes.
max_ttl=1w; // One week.
timeout=10; // Global timeout option (10 seconds).
par_queries=1; 一定要加,否则会同时查询114,114会抢答查询结果
}
server {
label = "prcdns"; //设置PRCDNS作为上游服务器
ip = 23.106.151.177;
timeout = 10;
port = 3535;
}
server {
label = "114dns"; //备用114DNS作为上游服务器
ip = 114.114.114.114,114.114.115.115;
timeout = 10;
port = 53;
}