时间:2018-11-13 点击: 次 来源:网络 作者:佚名 - 小 + 大
google已经很久不正常了,利用传统的代理方法有些不足,比如有些是全局的(如vpn),有些需要配合些软件,且有不稳定因素。我用sniproxy+dnsmasq组合有几个月了,感觉很好用。上次有人说要根据我在v2ex的一篇帖子整理出方法发布,但是没下文了,那么我也来整理下吧。 原理简介: sniproxy类似于一个反向代理软件,可根据域名转发,且https使用的原始证书。在vps上搭建sniproxy,按需添加域名;再搭建一个dns服务,将域名解析到该sniproxy上;然后将需要上网的设备的dns设置成安装了dns服务的ip,这样就实现了按需代理。 该方法适用于以下情况: 1.被dns污染的网站(如推特等,如有关键词,需https) 2.被干扰连接的网站(如google等) 3.加速或代理任何网站(该网站不能在gfw关键词内,如果在,支持https的话可通过https访问) 优点: 1.一次搭建好后一劳永逸,无需额外软件。 2.按需代理,可按自己喜好添加需代理的网站,没设置的直接连接。 3.相比nginx的反向代理,https无需自制证书。 缺点: 1.如需dns泛解析需要在路由器或国内服务器安装dns软件。 2.有些网站喜欢一个页面多域名,可能需要自行抓包确定哪些域名需添加。 3.如果代理google,手机上的大部分google apps运行不正常,原因不明,如果知道,欢迎反馈。 4.如果被其他人发现自己的代理,可能会造成流量损失。 方法如下。 1.安装sniproxy。 sniproxy项目地址:https://github.com/dlundquist/sniproxy/ 如果你非centos系统,可按项目里的说明安装。如果是centos,可参考此篇文章,在此不再详述。注意如需代理国外网站,需在国外vps上安装。 2.配置sniproxy。 编辑/etc/sniproxy.conf,比较简单的方法就是转发所有的80和443端口流量,配置如下:
但此方法有个隐患,就是被其他人扫描到后可能会被滥用,甚至作为发垃圾邮件的代理,可能会被vps提供商惩罚。因此建议按需配置,可参考sniproxy项目中配置文件的写法,我也在本文后面贴上我的配置文件。 3.安装dns服务软件。 dns服务软件很多,我使用的是dnsmasq,安装在路由器上,另外我还在国内某vps上也安装了一个,方便在外和给朋友使用。 如果你想在国外vps上安装dns软件,那么不适用于被dns污染的网站,因为从国外任何ip的dns请求均会被污染。如果你没有条件安装dns软件,那么只有用最传统的hosts方法了,因为hosts不能泛解析,编写和维护较为麻烦。 dns软件的安装和配置不再详述,可自行查找相关资料。装好后把指定域名解析到安装了sniproxy的ip上即可。 4.最后的步骤 将sniproxy和dns服务软件启动,并建议设置成开机启动。如果你是在路由器上安装的dnsmasq那么连上路由器就ok了(设备的dns用的路由器的ip)。如果你是在外搭建了dns,那么把要上网的设备的dns改成该dns的ip即可。好好享受吧! 一些问题: 1.如何防止被他人滥用? 首先不建议sniproxy转发所有域名,而应该按需添加,这样可以大大降低各种风险。另外建议多配置一个vps,如果发现一个vps上的流量和连接数不正常,可将该vps的sniproxy关闭,使用另一台的,一段时间后可切换回来,这样也可以在一台vps线路慢时切换到另一台。 2.sniproxy如何不与其他软件冲突? 因为sniproxy需要监听web端口,如果你安装了其他web服务器,会造成冲突。比较简单的方法是给你的vps加一个ip,该ip用来传输sniproxy,在sniproxy的配置文件里listen ip:端口,在如nginx里的配置文件里listen另一个ip。 如果没法加ip,那么你的web服务器如果没有https的话,可以使用你的web服务器(如nginx)反向代理80端口,而443端口交给sniproxy,也可以使用下一条方法。 如果没法加ip且web服务器已经把80和443都用了,那么可以把web服务器的端口改成非80和443,sniproxy监听80和443,然后在sniproxy配置文件里添加规则,把本机域名的流量转发到本机的web服务器对应端口。但该方法有缺点,由于sniproxy是匿名代理,原来web服务器将无法获取到原始访问者ip。 ps:现在vps白菜价了,直接买个新的吧! 3.我的sniproxy配置文件:(建议访问使用https,防止关键词重置)
在dns服务器上按此规则泛解析过去,如果是hosts,可在网上找找对应的hosts完整域名文件。 |