最近又有一个逗友跟我推荐了个新的代理软件,研究了下感觉挺不错的,开发周期还不到一年,和该作者交流一番后,就打算写个教程推荐给大家了。
或许该代理软件在某些方面还比不上现有主流的成熟代理软件,但是对于 GFW 来说,DAZE 的一切都是陌生的,在 DAZE 没有发展普及开来之前,GFW是不会针对的。这些年我一直在挖掘新秀代理软件,让大家四处开花,用的代理软件各不相同,增加 GFW 的精准封锁成本。事实证明还是有点用的。
另外,我发现 Go 语言似乎成为了代理界的新秀语言,最近几年我发现的大部分代理软件都是 Go 语言编写的,看来 Gol 语言在跨平台支持方面、网络技术方面还是很占优势的,不过 GUI客户端是一个大缺点,往往需要用其他语言制作。
该文章写的是 DAZE 的服务端手动搭建教程。
DAZE Windows 客户端手动教程:DAZE 轻量化代理软件 —— Windows 客户端简单使用教程
DAZE 一键脚本:『原创』Go语言轻量化 代理工具 —— DAZE 一键安装管理脚本
其他 DAZE 教程请看:https://doub.io/tag/daze/
简单介绍
DAZE 是一个由 Go 语言编写的轻量化代理工具。即支持普通方式传输(协议+加密),也支持 HTTP 混淆方式传输(协议+加密+混淆),同时客户端还支持流量过滤模式(类似于SSR的代理规则)。
目前,DAZE 只有各平台命令行客户端,稍后我可能会写个服务端一键脚本 及 DAZE Tools 辅助客户端。
项目地址:https://github.com/mohanson/daze
下载安装
首先建立并进入文件夹:
mkdir /usr/local/daze && cd /usr/local/daze
然后获取最新的版本号:
new_ver=$(wget --no-check-certificate -qO- -t1 -T3 https://api.github.com/repos/mohanson/daze/releases| grep "tag_name"| head -n 1| awk -F ":" '{print $2}'| sed 's//"//g;s/,//g;s/ //g') && echo ${new_ver}
执行完后会显示获取的最新版本号,比如 2018.10.15
这样的格式,如果返回是空或者其他错误的内容,那么就代表获取失败。如果获取失败,请去 Github 获取最新的版本号,例如 2018.10.15
,然后执行 new_ver=2018.10.15
(自己替换版本号) 即可继续下面的步骤。
if [[ $(uname -m) == "x86_64" ]]; then bit='amd64';else bit='386';fi && [[ ! -z ${bit} ]] && wget -N --no-check-certificate "https://github.com/mohanson/daze/releases/download/${new_ver}/daze_linux_${bit}" # 自动判断系统位数并下载服务端 mv "daze_linux_${bit}" daze # 重命名服务端 chmod +x daze # 赋予服务端执行权限
参数介绍
-dns string (default "8.8.8.8:53") # -dns 服务端解析域名用的DNS,默认:8.8.8.8:53 # 示例:-dns "8.8.8.8:53" -e string engine {ashe, asheshadow} (default "ashe") # -e 服务端加密方式,用于定义是否使用 HTTP 混淆,默认:ashe # ashe 代表仅加密,asheshadow 代表加密+HTTP混淆,默认:ashe # asheshadow 需要搭配 -m 参数使用。 # 当你使用 ashe 加密时,在外界看来你是 TCP流量访问国外服务器,当你使用 asheshadow 加密时,在外界看来你是 HTTP流量访问国外服务器。 # 因为作者把加密方式和混淆方式都写到一个参数了,我也不知道到底该叫这个参数什么名字。。。 # 示例:-e "ashe" -k string cipher (default "daze") # -k 服务端密码,默认:daze(不建议默认) # 示例:-k "doubi233" -l string listen address (default "0.0.0.0:51958") # -l 服务端监听地址:端口,默认:0.0.0.0:51958 # 0.0.0.0 代表监听网卡上绑定的所有 IPv4+IPv6 地址(我没测试过是否支持 IPv6)。 # 51958 代表监听端口,也就是客户端要填写的代理端口。 # 示例:-l "0.0.0.0:80" -m string (default "http://httpbin.org") # -m 服务端混淆地址,默认:http://httpbin.org # 混淆地址必须是 http:// 的,说是混淆,实际上就是个 HTTP 反向代理。 # 只有当加密为 asheshadow 时,此参数才有效。 # 如果你客户端服务器地址写的是 IP,那么在外界看来你就是在访问 http://ip:端口 # 如果你客户端服务器地址写的是 域名(A记录指向服务器IP),那么在外界看来你就是在访问 http://域名:端口 # 示例:-m "http://kernel.ubuntu.com/~kernel-ppa/mainline/"
启动参数示例
对于老手来说,看了上面的启动参数介绍,就基本知道怎么用了,但是对于新手来说,还需要用示例指导一下。
普通方式启动示例
当你要使用普通方式时,即加密方式:ashe (仅加密,不混淆),那么启动命令如下:
nohup ./daze server -l "0.0.0.0:80" -k "doubi233" -e "ashe" > /tmp/daze.log 2>&1 & # 使用此命令启动后,你的代理账号即为: # 代理端口:80 # 代理密码:doubi233 # 加密方式:ashe # 混淆地址:无 # 日志文件:/tmp/daze.log
混淆方式启动示例
当你要使用 HTTP 混淆方式时,即加密方式:asheshadow (加密+HTTP混淆),那么启动命令如下:
nohup ./daze server -l "0.0.0.0:80" -k "doubi233" -e "asheshadow" -m "http://kernel.ubuntu.com/~kernel-ppa/mainline/" > /tmp/daze.log 2>&1 & # 使用此命令启动后,你的代理账号即为: # 代理端口:80 # 代理密码:doubi233 # 加密方式:asheshadow # 混淆地址:http://kernel.ubuntu.com/~kernel-ppa/mainline/ # 日志文件:/tmp/daze.log # 这时候,当你访问 http://ip:80 时,就能看到混淆地址网页的内容了。 # 混淆地址,我写的仅为示例,请不要无脑跟着做,都用这个地址的话,也就没有混淆意义了。 # 如果你有域名,那么域名 A 记录指向你的服务器 IP,然后客户端处服务器地址填写域名,则伪装成访问 http://域名/ 的流量了。
停止
kill -9 $(ps -ef|grep "daze"|grep -v grep|awk '{print $2}')
查看日志
# 实时查看日志 tail -f /tmp/daze.log # 查看完整日志 cat /tmp/daze.log
其他说明
启动失败,提示端口被占用
很多服务器因为不够纯净,往往会自带一些 HTTP 服务程序(Apache、Nginx),他们默认都会占用 80 端口,所以遇到端口被占用的问题,你需要停止这些 HTTP 服务的进程,或者卸载它们。
先通过 netstat -lntp
确认是哪个进程占用了 80 端口。
# 例如输出如下: # apache 在 CentOS 系统中又叫做 httpd。 Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 14233/apache tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1555/sshd tcp6 0 0 :::22 :::* LISTEN 1555/sshd # 找到占用 80 端口的进程 PID:14233,终止进程。 kill -9 14233 # 并取消该程序服务的开机启动,根据程序名不同,下面的 apache 可以改成相应的程序名。 # CentOS 系统: chkconfig --del apache # Debian / Ubuntu 系统: update-rc.d -f apache remove
如果教程哪里写的有错误或者不够严谨,请在下面评论区告诉我~
转载请超链接注明:月下博客 » 一个由Go语言编写的轻量化代理工具 —— DAZE 服务端手动教程
责任声明:本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!