Skip to content

Repository files navigation

ZJU Connect

🚫 免责声明

本程序按原样提供,作者不对程序的正确性或可靠性提供保证,请使用者自行判断具体场景是否适合使用该程序,使用该程序造成的问题或后果由使用者自行承担


中文 | English

本程序基于 EasierConnect(现已停止维护)完成,感谢原作者 lyc8503

QQ 交流群:1037726410,欢迎使用者加入交流。

使用方法

使用 GUI 版客户端

直接运行

使用 EasyConnect 协议
  • 如果你是来自 ZJU 的用户:

    1. Release 页面下载对应平台的最新版本。

    2. 以 macOS 为例,解压出可执行文件 zju-connect

    3. macOS 需要先解除安全限制。命令行运行:sudo xattr -rd com.apple.quarantine zju-connect

    4. 命令行运行:./zju-connect -protocol easyconnect -username <上网账户> -password <密码>

    5. 此时 1080 端口为 Socks5 代理,1081 端口为 HTTP 代理。如需更改默认端口,请参考参数说明。

  • 如果你是非 ZJU 的用户:

    其他步骤与上述相同,运行参数请尝试设置为:

    ./zju-connect -server <服务器地址> -port <服务器端口> -username xxx -password xxx -disable-zju-config -skip-domain-resource -zju-dns-server auto

    如果你的服务器需要输入图形验证码,运行参数请尝试设置为:

    ./zju-connect -server <服务器地址> -port <服务器端口> -username xxx -password xxx -disable-zju-config -skip-domain-resource -zju-dns-server auto -disable-multi-line -graph-code-file graph_code.jpg

    登录时会将图片保存至 graph_code.jpg 文件,请查看并手动输入验证码。

    详情见此链接

使用 aTrust 协议
  • 如果你是来自 ZJU 的用户:

    其他步骤与 EasyConnect 相同,运行参数请设置为:

    ./zju-connect -protocol atrust -username <上网账户> -password <密码> -client-data-file client_data.json

    之后按照提示操作。如果你不希望保存登录状态,可以不填 -client-data-file 参数。

  • 如果你是非 ZJU 的用户:

    其他步骤与 ZJU 用户相同,请根据情况指定登录域及协议。

    如何确定登录域及协议?

    1. 运行 ./zju-connect -protocol atrust -server <服务器地址> -port <服务器端口> -auth-info
    2. 该命令会获取可用的认证方式,例如
      [{"loginDomain":"Radius","authType":"auth/psw","authName":"上网账号","loginUrl":""},{"loginDomain":"local","authType":"auth/psw","authName":"IDC运维账号","loginUrl":""},{"loginDomain":"radius93482","authType":"auth/psw","authName":"INTL ID","loginUrl":""}]
      包含三个登录方式。方式一的登录域为 Radius,认证类型为 auth/psw。如果要使用方式一登录,则需要在运行参数中添加 -login-domain Radius -auth-type "auth/psw"
    3. 目前支持的认证类型包括 auth/psw(密码验证)、auth/cas(CAS 验证)、auth/smsCheckCode(短信验证码验证)。

作为服务运行

链接

Docker 运行

链接

警告

  1. 当使用其他开启了 TUN 模式的代理工具,同时配合 zju-connect 作为下游代理时,请注意务必提供正确的分流规则,参考此 issue

TUN 模式注意事项

  1. 需要管理员权限运行

  2. Windows 系统需要前往 Wintun 官网下载 wintun.dll 并放置于可执行文件同目录下

  3. EasyConnect 协议下的推荐配置为 -tun-mode -add-route -dns-hijack

  4. aTrust 协议下的推荐配置为 -tun-mode -add-route -dns-hijack -fake-ip。在使用 aTrust 协议时,如果不使用 DNS劫持/Fake IP,直接通过 TUN 网卡的涉及域名的 TCP 流量可能会出错

参数说明

通用参数

  • protocol: 登录协议,支持 easyconnect/atrust,默认为 easyconnect

  • server: VPN 服务端地址,默认为 rvpn.zju.edu.cn/vpn.zju.edu.cn

  • port: VPN 服务端端口,默认为 443

  • username: 网络账户。例如:学号

  • password: 网络账户密码

  • graph-code-file: 图形验证码文件路径。默认为空。在 aTrust 模式下,留空时使用浏览器完成验证码,设置路径则登录时会将图形验证码保存至该文件,由用户手动输入 JSON

  • disable-zju-config: 禁用 ZJU 相关配置,非 ZJU 用户可能需要添加此参数

  • disable-zju-dns: 禁用远端 DNS 改用本地 DNS,一般不需要加此参数

  • 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 未命中规则,切换到直连时使用代理,常用于与其他代理工具配合的场景,目前仅支持 http 代理。例如:http://127.0.0.1:7890",为 "" 时不启用

  • tcp-tunnel-mode: TCP 隧道模式,默认为 false。启用后仅可通过 TCP 隧道代理 TCP 流量。由于只有 aTrust 支持 TCP 隧道,此模式在 EasyConnect 下无效。启用后会禁用 TUN 模式

  • skip-tcp-tunnel-wait: 不等待 aTrust TCP 隧道连接状态,默认为 false。仅用于兼容不返回连接状态的服务端;启用后连接失败可能要到后续读写时才能发现

  • tun-mode: TUN 模式(实验性)。请阅读 TUN 模式注意事项

  • add-route: 启用 TUN 模式时根据服务端下发配置添加路由

  • dns-ttl: DNS 缓存时间,默认为 3600

  • disable-keep-alive: 禁用定时保活,一般不需要加此参数

  • keep-alive-url: 使用 HTTP 保活,适用于服务端不下发 DNS 的情况。填写要访问的 URL,例如 https://www.cnki.net/favicon.ico 。默认为空,此时使用服务端下发的 DNS 保活

  • zju-dns-server: 远端 DNS 服务器地址,默认为 auto。设置为 auto 时使用从服务端获取的 DNS 服务器,如果未能获取则禁用远端 DNS

  • secondary-dns-server: 当使用远端 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 模式时添加此参数

  • fake-ip: 启用 Fake IP 功能,与 dns-hijack 配合使用,建议在使用 aTrust 协议并启用 TUN 模式时添加此参数。此参数在 EasyConnect 协议下无效

  • debug-dump: 是否开启调试,一般不需要加此参数

  • bind-interface: 手动指定 VPN 底层连接使用的网卡接口,支持 EasyConnect 和 aTrust。非空时优先使用该接口,不再自动探测

  • auto-detect-interface: 自动探测并绑定 VPN 底层网卡,默认为 false。设为 true 时启用自动探测;未启用且未指定 bind-interface 时,底层连接使用系统路由。若同时使用其他启用了 Fake IP 的 VPN,此功能可能无法正常工作

  • 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。多个解析用 , 分隔

  • config: 指定配置文件,内容参考 config.toml.example。启用配置文件时其他参数无效

EasyConnect 相关参数

  • totp-secret: TOTP 密钥,可用于自动完成 TOTP 验证。如服务端无需 TOTP 验证或希望手动输入验证码,可不填

  • cert-file: p12 证书文件路径,如果服务器要求证书验证,需要配置此参数

  • cert-password: 证书密码

  • disable-server-config: 禁用服务端配置,一般不需要加此参数

  • skip-domain-resource: 不使用服务端下发的域名资源分流,一般不需要加此参数

  • disable-multi-line: 禁用自动根据延时选择线路。加此参数后,使用 server 参数指定的线路

  • proxy-all: 是否代理所有流量,一般不需要加此参数

  • custom-proxy-domain: 指定自定义域名使用 RVPN 代理,格式为 域名,域名,...,例如 nature.com,science.org。多个域名用 , 分隔

  • twf-id: twfID 登录,调试用途,一般不需要加此参数

aTrust 相关参数

  • auth-type: aTrust 登录验证类型,支持 auth/psw(密码验证)、auth/cas(CAS 验证)、auth/smsCheckCode(短信验证码验证),默认为空(尝试不验证)

  • login-domain: 登录域,默认为 Radius

  • client-data-file: 客户端数据文件路径,可用于保存登录状态,避免重复验证

  • cas-ticket: CAS 验证票据,默认为空,此时进入交互式验证

  • phone: 短信验证码登录时使用的手机号

  • update-best-nodes-interval: 自动选择最优线路的更新间隔,单位为秒,默认为 300 秒。设置为 0 则禁用自动选择最优线路

  • auth-info: 仅获取 aTrust 验证信息而不登录,一般不需要加此参数。可用于查看服务端支持的验证方式

  • trust-device: 设置当前设备为授信终端(需要已登录的 -client-data-file),不启用隧道

  • untrust-device: 从授信终端中移除当前设备(需要已登录的 -client-data-file),不启用隧道

  • sid: aTrust SID,调试用途,一般不需要加此参数

  • device-id: aTrust 设备 ID,调试用途,一般不需要加此参数

  • sign-key: aTrust 签名密钥,调试用途,一般不需要加此参数

  • resource-file: aTrust 资源文件,调试用途,一般不需要加此参数

计划表

已完成

  • 代理 TCP 流量
  • 代理 UDP 流量
  • SOCKS5 代理服务
  • HTTP 代理服务
  • Shadowsocks 代理服务
  • 远端 DNS 解析
  • ZJU 规则添加
  • 支持 IPv6 直连
  • DNS 缓存加速
  • 自动选择线路
  • TCP 端口转发功能
  • UDP 端口转发功能
  • 通过配置文件启动
  • 定时保活
  • TUN 模式
  • 自动劫持 DNS
  • 短信验证
  • TOTP 验证
  • 证书验证
  • aTrust 协议支持
  • Fake IP

To Do

贡献者

感谢

Star History

Star History Chart

About

ZJU RVPN 客户端的 Go 语言实现

Resources

Stars

715 stars

Watchers

4 watching

Forks

Releases

Used by

Contributors

Languages