可搜索,可注册,可登录,致敬逗比大佬!尽在救援版逗比根据地 dbgjd.com
投稿文章 | 广告合作 | Telegram 群组 / 公告频道 / 使用教程

一个由Go语言编写的轻量化代理工具 —— DAZE 服务端手动教程

逗比 Toyo 157℃ 0评论

最近又有一个逗友跟我推荐了个新的代理软件,研究了下感觉挺不错的,开发周期还不到一年,和该作者交流一番后,就打算写个教程推荐给大家了。

或许该代理软件在某些方面还比不上现有主流的成熟代理软件,但是对于 GFW 来说,DAZE 的一切都是陌生的,在 DAZE 没有发展普及开来之前,GFW是不会针对的。这些年我一直在挖掘新秀代理软件,让大家四处开花,用的代理软件各不相同,增加 GFW 的精准封锁成本。事实证明还是有点用的。


另外,我发现 Go 语言似乎成为了代理界的新秀语言,最近几年我发现的大部分代理软件都是 Go 语言编写的,看来 Gol 语言在跨平台支持方面、网络技术方面还是很占优势的,不过 GUI客户端是一个大缺点,往往需要用其他语言制作。


该文章写的是 DAZE 的服务端手动搭建教程。

DAZE Windows 客户端手动教程:DAZE 轻量化代理软件 —— Windows 客户端简单使用教程

DAZE 一键脚本:『原创』Go语言轻量化 代理工具 —— DAZE 一键安装管理脚本


其他 DAZE 教程请看:https://dbgjd.com/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 服务端手动教程

喜欢 (3)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址