🚫 免责声明
本程序按原样提供,作者不对程序的正确性或可靠性提供保证,请使用者自行判断具体场景是否适合使用该程序,使用该程序造成的问题或后果由使用者自行承担!
中文 | English
本程序基于 EasierConnect(现已停止维护)完成,感谢原作者 lyc8503。
QQ 交流群:946190505,欢迎来自 ZJU 的使用者加入交流。
Windows 用户可以使用 GUI 版 ZJU Connect for Windows。
-
在 Release 页面下载对应平台的最新版本。
-
以 macOS 为例,解压出可执行文件
zju-connect
。 -
macOS 需要先解除安全限制。命令行运行:
sudo xattr -rd com.apple.quarantine zju-connect
。 -
命令行运行:
./zju-connect -username <上网账户> -password <密码>
。 -
此时
1080
端口为 Socks5 代理,1081
端口为 HTTP 代理。如需更改默认端口,请参考参数说明。
请先直接运行,确保无误后再创建服务,避免反复登录失败导致 IP 被临时封禁!
对于 Ubuntu/Debian、RHEL 系、Arch 等基于 Systemd 的 Linux 发行版,除按照上述方法运行外,亦可通过以下步骤将 ZJU Connect 安装为系统服务,实现自动重连功能:
-
在 Release 页面下载对应平台的最新版本,将可执行文件放置于
/opt
目录并赋予可执行权限。 -
在
/etc
下创建zju-connect
目录,并在目录中创建配置文件config.toml
,内容参照仓库中的config.toml.example
。 -
在
/lib/systemd/system
下创建zju-connect.service
文件,内容如下:[Unit] Description=ZJU Connect After=network-online.target Wants=network-online.target [Service] Restart=on-failure RestartSec=5s ExecStart=/opt/zju-connect -config /etc/zju-connect/config.toml [Install] WantedBy=multi-user.target
-
执行以下命令启用服务并设置自启:
$ sudo systemctl start zju-connect $ sudo systemctl enable zju-connect
对于 macOS 平台,系统服务的安装与运行基于 launchctl
,使用上与 systemctl
有一定差异,可通过下述方案实现后台自动重连、开机自启动等功能:
-
在 Release 页面下载对应 darwin 平台的最新版本。
-
将可执行文件放置于
/usr/local/bin/
目录并赋予可执行权限。 -
解除安全限制:
sudo xattr -rd com.apple.quarantine zju-connect
。 -
参考 com.zju.connect.plist 建立 macOS 系统服务配置文件,plist 文件为二进制文件,建议使用 PlistEdict Pro 编辑,其中关键配置参数如下:
UserName
: 后台运行 zju-connect 的的用户默认为root
,建议修改为你自己的用户名ProgramArguments
: zju-connect 运行参数StandardErrorPath
: 输出 zju-connect 运行日志的目录(用于调试,可不指定)StandardOutPath
: 输出 zju-connect 运行日志的目录(用于调试,可不指定)RunAtLoad
: 是否开机自启动KeepAlive
: 是否后台断开重连
详细参数配置可参考以下文档:
-
移动配置文件至
/Library/LaunchDaemons/
目录,同时执行以下命令:$ cd /Library/LaunchDaemons $ sudo chown root:wheel com.zju.connect.plist
-
执行以下命令启用服务并设置自启:
$ sudo launchctl load com.zju.connect.plist
-
执行以下命令关闭自启动服务:
$ sudo launchctl unload com.zju.connect.plist
如需开关服务,可直接在 macOS 系统设置中的后台程序开关 zju-connect。
对于 OpenWrt 系统,可通过 procd init 脚本让 zju-connect 开机自启、后台运行,在代理插件中添加对应本机节点和分流规则即可正常使用。
-
从 Release 页面下载对应平台的最新 linux 版本,将可执行文件保存为
/usr/bin/zju-connect
并赋予可执行权限。 -
参照仓库中的
config.toml.example
,创建配置文件/etc/back2zju.toml
,配置好 socks/http 代理端口,因通过代理插件实现分流,建议将 zju-connect 的配置项proxy_all
设置为true
。 -
将以下内容保存为
/etc/init.d/back2zju
并赋予可执行权限:#!/bin/sh /etc/rc.common USE_PROCD=1 START=60 STOP=03 PROGRAM="/usr/bin/zju-connect" NET_CHECKER="rvpn.zju.edu.cn" CONFIG_FILE="/etc/back2zju.toml" LOG_FILE="/var/log/back2zju.log" boot() { ubus -t 10 wait_for network.interface.wan 2>/dev/null sleep 10 rc_procd start_service } start_service() { ping -c1 ${NET_CHECKER} >/dev/null || ping -c1 ${NET_CHECKER} >/dev/null || return 1 procd_open_instance procd_set_param command /bin/sh -c "${PROGRAM} -config ${CONFIG_FILE} >>${LOG_FILE} 2>&1" procd_set_param respawn 3600 5 3 procd_set_param limits core="unlimited" procd_set_param limits nofile="200000 200000" procd_set_param file ${CONFIG_FILE} procd_close_instance logger -p daemon.warn -t back2zju 'Service has been started.' } reload_service() { stop start logger -p daemon.warn -t back2zju 'Service has been restarted.' }
-
执行以下命令:
/etc/init.d/back2zju enable /etc/init.d/back2zju start
或通过 OpenWrt LuCi 网页的
系统-启动项
启用并启动back2zju
(也可在此处停用服务)。随后 zju-connect 将开始运行,支持开机自启动,其运行日志保存在
/var/log/back2zju.log
-
在代理插件中添加对应本机节点和分流规则
根据在
/etc/back2zju.toml
中的配置,在代理插件中添加本机节点。ip 填写127.0.0.1
,端口号/协议与/etc/back2zju.toml
保持一致,若设置了 socks 用户名和密码也需要填写。然后在对应代理插件中添加分流规则,具体操作略。
注意事项:
-
ZJU 校园网使用的内网 IP 段是
10.0.0.0/8
,可能需要将此 IP 段从代理插件的直连列表/局域网列表中移除并添加至代理列表。 -
请确保使用的 RVPN 服务器与 OpenWrt 直连。若未将
rvpn.zju.edu.cn
配置为直连,此域名可能匹配分流规则与其他zju.edu.cn
流量一样被发往 zju-connect 代理,这会造成网络异常。
-
$ docker run -d --name zju-connect -v $PWD/config.toml:/home/nonroot/config.toml -p 1080:1080 -p 1081:1081 --restart unless-stopped mythologyli/zju-connect
也可以使用 Docker Compose。创建 docker-compose.yml
文件,内容如下:
version: '3'
services:
zju-connect:
image: mythologyli/zju-connect
container_name: zju-connect
restart: unless-stopped
ports:
- 1080:1080
- 1081:1081
volumes:
- ./config.toml:/home/nonroot/config.toml
另外,你还可以使用 configs top-level elements 将 zju-connect 的配置文件直接写入 docker-compose.yml,如下:
services:
zju-connect:
container_name: zju-connect
image: mythologyli/zju-connect
restart: unless-stopped
ports: [1080:1080, 1081:1081]
configs: [{ source: zju-connect-config, target: /home/nonroot/config.toml }]
configs:
zju-connect-config:
content: |
username = ""
password = ""
# other configs ...
并在同目录下运行
$ docker compose up -d
- 当使用其他开启了Tun模式的代理工具,同时配合zju-connect作为下游代理时,请注意务必提供正确的校网分流规则,参考此issue
-
需要管理员权限运行
-
Windows 系统需要前往 Wintun 官网下载
wintun.dll
并放置于可执行文件同目录下 -
为保证
*.zju.edu.cn
解析正确,建议配置dns-hijack
劫持系统 DNS -
macOS 暂不支持通过 TUN 接口访问
10.0.0.0/8
外的地址
-
server
: SSL VPN 服务端地址,默认为rvpn.zju.edu.cn
-
port
: SSL VPN 服务端端口,默认为443
-
username
: 网络账户。例如:学号 -
password
: 网络账户密码 -
disable-server-config
: 禁用服务端配置,一般不需要加此参数 -
disable-zju-config
: 禁用 ZJU 相关配置,一般不需要加此参数 -
disable-zju-dns
: 禁用 ZJU DNS 改用本地 DNS,一般不需要加此参数 -
disable-multi-line
: 禁用自动根据延时选择线路。加此参数后,使用server
参数指定的线路 -
proxy-all
: 是否代理所有流量,一般不需要加此参数 -
socks-bind
: SOCKS5 代理监听地址,默认为:1080
-
socks-user
: SOCKS5 代理用户名,不填则不需要认证 -
socks-passwd
: SOCKS5 代理密码,不填则不需要认证 -
http-bind
: HTTP 代理监听地址,默认为:1081
。为""
时不启用 HTTP 代理 -
shadowsocks-url
: Shadowsocks 服务端 URL。例如:ss://aes-128-gcm:password@server:port
。格式参考此处 -
dial-direct-proxy
: 当URL未命中RVPN规则,切换到直连时使用代理,常用于与其他代理工具配合的场景,目前仅支持http代理。 例如:http://127.0.0.1:7890"
,为""
时不启用 -
tun-mode
: TUN 模式(实验性)。请阅读后文中的 TUN 模式注意事项 -
add-route
: 启用 TUN 模式时根据服务端下发配置添加路由 -
dns-ttl
: DNS 缓存时间,默认为3600
秒 -
disable-keep-alive
: 禁用定时保活,一般不需要加此参数 -
zju-dns-server
: ZJU DNS 服务器地址,默认为10.10.0.21
-
secondary-dns-server
: 当使用 ZJU DNS 服务器无法解析时使用的备用 DNS 服务器,默认为114.114.114.114
。留空则使用系统默认 DNS,但在开启dns-hijack
时必须设置 -
dns-server-bind
: DNS 服务器监听地址,默认为空即禁用。例如,设置为127.0.0.1:53
,则可向127.0.0.1:53
发起 DNS 请求 -
dns-hijack
: 启用 TUN 模式时劫持 DNS 请求,建议在启用 TUN 模式时添加此参数 -
debug-dump
: 是否开启调试,一般不需要加此参数 -
tcp-port-forwarding
: TCP 端口转发,格式为本地地址-远程地址,本地地址-远程地址,...
,例如127.0.0.1:9898-10.10.98.98:80,0.0.0.0:9899-10.10.98.98:80
。多个转发用,
分隔 -
udp-port-forwarding
: UDP 端口转发,格式为本地地址-远程地址,本地地址-远程地址,...
,例如127.0.0.1:53-10.10.0.21:53
。多个转发用,
分隔 -
custom-dns
: 指定自定义DNS解析结果,格式为域名:IP,域名:IP,...
,例如www.cc98.org:10.10.98.98,appservice.zju.edu.cn:10.203.8.198
。多个解析用,
分隔 -
custom-proxy-domain
: 指定自定义域名使用RVPN代理,格式为域名,域名,...
,例如nature.com,science.org
。多个域名用,
分隔 -
twf-id
: twfID 登录,调试用途,一般不需要加此参数 -
config
: 指定配置文件,内容参考config.toml.example
。启用配置文件时其他参数无效
- 代理 TCP 流量
- 代理 UDP 流量
- SOCKS5 代理服务
- HTTP 代理服务
- Shadowsocks 代理服务
- ZJU DNS 解析
- ZJU 规则添加
- 支持 IPv6 直连
- DNS 缓存加速
- 自动选择线路
- TCP 端口转发功能
- UDP 端口转发功能
- 通过配置文件启动
- 定时保活
- TUN 模式
- 自动劫持 DNS
- Fake IP 模式