通过pdnsd使用TCP查询dns
当通过redsocks转发代理之后会发现一个问题,某些网站解析不到正确的域名IP,这就是DNS服务器的原因,我们可以通过使用pdnsd来实现dns查询也通过tcp请求查询,然后tcp流量就会通过代理,这样就正确查询到IP地址了。
安装
一般我都使用Centos7的,首先下载pdnsd(截至目前2019-11-26最新版本)
wget http://members.home.nl/p.a.rombouts/pdnsd/releases/pdnsd-1.2.9a-par_sl6.x86_64.rpm
安装
yum localinstall pdnsd-1.2.9a-par_sl6.x86_64.rpm -y
如此即可安装完成。
配置
获取配置文件
cp /etc/pdnsd.conf.sample /etc/pdnsd.conf
然后按需修改/etc/pdnsd.conf即可
我们先找到query_method=udp_tcp;
修改成query_method=tcp_only;
此时就是仅tcp查询dns。
然后下面就有一个ip = 192.168.0.1;
这就是dns的查询地址,我此处修改为ip = 8.8.8.8,8.8.4.4;
google的dns。
其他的就不用管了,保存退出。
使配置生效
/etc/init.d/pdnsd reload
然后修改本地dns为127.0.0.1,
vi /etc/sysconfig/network-scripts/ifcfg-eth0
在最后一行添加DNS1=127.0.0.1
.
然后重启网络配置
service network restart
测试
安装测试工具
yum install -y bind-utils
执行nslookup www.douban.com 127.0.0.1
查看是否能正常解析。
如果不正常清理缓存再试试。
pdnsd-ctl empty-cache