之前在路由端配置好了2条openvpn的线路外加一条pptp的线路,后来长期运行一个维护脚本在其中某条线路抽掉后自动切换其他线路。这样的设置在多数情况其实都是没有问题的。不过还是会有很小的概率,在vpn被断掉或路由刚刚重启完用户登陆上网后导致dns被污染。于是就考虑构建这样的一个dns代理。
于是查了下文档,决定还是用dns via tcp的方式来做。
选用airyai酱的pwx-dns-proxy (嘛,理由是python写的,像偶这种小白出了问题还能简单应付下)
预期如下:
1.平时查询dns完全不走vpn
2.dns_proxy后台出问题后dns查询转走vpn线路(在vpn某条线路抽掉且未切换的这段间隙,用户基本完全上不去网)
3.不用怕污染(至少短期内gfw不会对dns via tcp下手吧)
不过在配置过程中还是发现了一些问题:
1.git clone回来以后直接运行没有任何提示直接退出
2.udp协议不支持UDPServer backend factory
目标实现:
于是简单调试修改了下log类,得知原来失败的原因是dnsmasq占用53端口导致端口冲突。
于是将dns_proxy做了一些简单修改(包括src/log/__init.py,run.sh,src/dnsproxy.py,data/dnsproxy.py这几个文件)。
配合dnsmasq可以完美解决。
安装配置方法如下:
1.为支持usb device或jffs的设备配置openwrt(没搞过的可以参考这篇文章)
2.安装python和twisted
ipkg update ipkg install python26 ipkg install py26-twisted
3.安装好后下载修改过的pwx-dns-proxy,然后将pwx-dns-proxy文件夹放在/opt/目录下即可。如果是用的dualwan固件可以直接开dualwan的ftp服务器,或者用winscp采用scp的方法传入。当然任何你任何习惯的方式都可以。
文件下回来之后可以修改data/dnsproxy.conf下的这2行
add_server("tw","168.95.1.1",53,True)
add_server("isp", "202.99.224.68", 53, False)
我默认采用的dns是中华电信的dns服务器(因为偶的route表里opendns和google dns都会自动走vpn线路,这里可以换成你喜欢的其他非本土dns服务器)
其中第一行的tw的ip可以改成你喜欢的dns服务器的ip
第二行的isp改成你当地isp提供的服务商的isp(实现本土站点cdn加速)
改完后保存传回路由。
在这里偶只给一张dualwan下的ftp配置截图了
4.telnet或ssh进路由(架设路由服务器地址是192.168.0.1)
ssh -l root 192.168.0.1
5.运行
/opt/pwx-dns-proxy/run.sh
之后输入netstat -ln后显示如下则说明安装成功。
root@unknown:/tmp/home/root# netstat -ln|grep 8081 tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN udp 0 0 0.0.0.0:8081 0.0.0.0:*
6.配置dnsmasq.custom
这个根据固件的不同方法也不同,在这里偶也只介绍dualwan的配置方式了。
其中/opt/hosts是用来放自定义hosts文件的位置。
7.自启动配置(注意偶这里的路径是/opt/shareroot/pwx-dns-proxy,如果是把文件夹放在/opt目录下的话需要修改成/opt/pwx-dns-proxy,第二行那个ln -s的可以不输入)
最后再感谢下这个组件的开发者airyai@gmail.com,实在是非常neat~
以上
P.S.:新电子书到了,真的很好用,最近会抽时间写篇评测对比。
P.S.S:Mirasol的商用机被Kyobo第一时间还真在11年第四季度赶出来了,不愧是棒子牌子,把这么好的一个东西做渣了。等Amazon或者Sony乱入了。
P.S.S.S:果然アマガミ是偶的菜wwww,班长腹黑各种美~
P.S.S.S.S:过年更没气氛了,不过这才是真正意义上的过年吧?(年兽神马的求萌化~~~)
P.S.S.S.S.S:Mavvies' back!
Comments (42)
班长酱赛高~【口水....
@linfcstmrrrrrrr
[:confuse]想看niceboat结局(拖~
好完备的网络措施...
@conanshang
zh_CN特色?~
嘛,不过效果确实好了很多就是了~而且最重要的是可以考虑在上面部署xmpp dispatcher了~
@EmiNarcissus
niceboat甚麼的,乃們就一個個被灌山羊奶然後被電据据死。。。
话说现在乃用的这个图片的显示插件叫什么?一直想找没找到。。。
已经很多年没有过年过生日过圣诞神马的的感觉了,也许将来有个女朋友陪着的话会好一点(拖走
@kita
牙医助手酱需要电仪治疗么[:blue]请左拐牙医治疗所:)
@illusionwing
图片显示?lightbox吗?
@lovee
嘛,钱包也会好过的多就是了[:cry]
今天貌似还是小年~过节还是南方城市好啊(摔~
@EmiNarcissus
嗚~~~不要(>_<)
@EmiNarcissus
就是点了一张图片之后网页变暗出来一个div显示图片的插件
是哪个lightbox呢。。
@illusionwing
jquery框架下我用的这个<http://leandrovieira.com/projects/jquery/lightbox/>
如果不用jquery框架的话直接上官方的就行<http://lokeshdhakar.com/projects/lightbox2/>
发现markdown的automatic语法被auto escape了..~
于是修正下~
Jquery lightbox
lightbox
@EmiNarcissus
多谢~
结果某兔半天没看懂用代理DNS意图何在。技术宅膜拜!
@Tojary
蹭宅兔,新快快乐的说~
墙内要解决2个问题嘛,一个是dns污染,一个是真正意义上的翻*墙,如果在路由上全局走vpn的话,一旦vpn线路不稳定且自动切换出现问题的时候dns就会出很大的问题,于是最佳的选择就是dns最好不走vpn且无污染,被墙的ip根据route table走vpn。于是dns via tcp就是实现无vpn解决dns污染的方法(采用墙外dns服务器)
@EmiNarcissus
就是通过代理选择不同的DNS,解决仅仅受DNS污染的网站访问问题,同时也能享受CDN加速,对否?
@Tojary
嗯,不过国内cdn是采用的白名单的方法,只对几个国内常用的站点采用国内的dns访问,其他站点全部都从国外的dns抓。优点就是开不开vpn走不走代理都不会导致dns污染。
Amagami SS 萌班长+1~ 其次是熏~
没看懂,主要是用来干什么的?
翻墙吗?
还以为RSS挂掉了....果然很久没更新了么..
@龙龙 FReD
嗯...可以这么理解啦...
@Linfcstmr
其实是世界线不同?(死
hum, 貌似emi醬也潜很久了[:kill]
@Tojary
嗯,估计封存到6月~心境比较down,事情也比较杂~某兔也消失了好久了:)
@EmiNarcissus
大三几乎满课,现在才过半期就开始要考试了[:cry]
@Tojary
大三确实是最讨厌的一年呢…而且这个时候也该开始忙考研或者工作了的说,祝福某兔XD
发现Emi酱最近也在潜水
@某懒风
潜水到6月底吧- -~不出意外~最近电脑都很少开是真的~
这么热的天气,蛋疼呀。
为什么有日语
@EmiNarcissus
偶才不会告诉乃现在已经是八月了 =。=
已經被惡鬼抓去啃掉了么OAO
真的蒸发了好久啊~~
@某懒风
@kita
@SZ
可能还要多蒸发几个月[:cry]
迅雷离线下载地址导出不会用,我想免费下载……
技术文,不懂,只路过.
Emi殿下好久没有新博文了...撒鼻息
@yqt
前一阵处于次元夹缝中,暂时养息中XD
EMI酱,肿么还不更新博客,去哪了 0.0?
@某懒风
前半年漂流,目前沉淀知识正从时间夹缝中挣扎ing[:cry]
顺带疼一个公司用的小项目且长期潜水[:dream]
正常进入2013年后估计会恢复冒泡(2333333[:shock]
@EmiNarcissus
嘛嘛,坐等乃回归
@酱爆灵梦
风酱新年快乐>_<
来学习一下,好专业的内容
Leave a comment