Categorygithub.com/nange/easyss/v2
package
2.5.0
Repository: https://github.com/nange/easyss.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# README

Easyss

Easyss是一款兼容socks5的安全代理上网工具,目标是使访问国外技术网站更流畅免受干扰。

有报道表明访问国外技术网站正变得越来越困难,即使用了一些常用代理技术也面临被干扰的可能性。 为了以防万一,提前准备,重新实现了一套协议以加快访问速度和对抗嗅探。

特性

  • 简单稳定易用, 没有复杂的配置项
  • 支持 IPv4/IPv6 双栈网络; 无流量特征,不易被嗅探
  • 全平台支持(Linux, MacOS, Windows, Android等)
  • 支持SOCKS5(TCP/UDP, thanks socks5)、HTTP 代理协议
  • 支持浏览器级别代理(设置系统代理), 和系统全局代理(thanks tun2socks); 可选代理规则
  • 支持TCP连接池 (默认启用,大幅降低请求延迟)
  • 支持系统托盘图标管理 (thanks systray)
  • 可配置多服务器切换; 自定义直连白名单(IP/域名)
  • 基于TLS底层传输(可禁用); 上层支持AEAD类型高强度加密通信, 如aes-256-gcm, chacha20-poly1305
  • http2帧格式交互 (更灵活通用, 更易扩展)
  • 支持多种出口协议: native(默认), http, https; 以适应各种复杂场景
  • 支持服务端(easyss-server)链式代理
  • 内建DNS服务器,支持DNS Forward转发,可用于透明代理部署时使用 (默认关闭,可通过命令行启用)

下载安装

在release页面直接下载(各平台)编译好的二进制文件

去下载

或者 通过源码安装(go version 1.22+ is required)

// Ubuntu20.04 or Debian11 
apt-get install gcc libgtk-3-dev libayatana-appindicator3-dev -y

// Ubuntu18.04 or Debian10
apt-get install gcc libgtk-3-dev libappindicator3-dev -y

// build easyss client
make easyss

// build easyss server
make easyss-server

用法

客户端

创建配置文件:config.json,并把配置文件放入easyss二进制相同目录中。

单服务器配置文件示例:

{
  "server": "your-domain.com",
  "server_port": 9999,
  "password": "your-pass",
  "local_port": 2080,
  "method": "aes-256-gcm",
  "timeout": 60,
  "bind_all": false,
  "outbound_proto": "native",
  "log_file_path": "easyss.log"
}

多服务器配置文件示例:

{
  "server_list": [
    {
      "server": "your-domain.com",
      "server_port": 7878,
      "password": "your-pass",
      "default": true
    },
    {
      "server": "your-domain2.com",
      "server_port": 9898,
      "password": "your-pass2"
    }
  ],
  "local_port": 2080,
  "method": "aes-256-gcm",
  "timeout": 60,
  "bind_all": false,
  "ca_path": "",
  "log_file_path": "easyss.log"
}

参数说明:

  • server: 服务器地址(必填,没有配置自定义证书情况下,必须是域名不能是IP,使用自定义证书可以是IP)
  • server_port: 服务器对应端口(必填)
  • password: 通信加密密钥(必填)
  • local_port: 本地监听端口(默认2080)
  • method: 通信加密方式(默认aes-256-gcm)
  • timeout: 超时时间,单位秒(默认60)
  • bind_all: 是否将监听端口绑定到所有本地IP上(默认false)
  • ca_path: 自定义CA证书文件路径(当使用自定义tls证书时才配置)
  • outbound_proto: 出口协议,默认native,可选:native, http, https
  • log_file_path: 日志文件路径,为空则输出到系统标准输出

其他还有一些参数没有列出,如无必要,无需关心。除了3个必填的参数,其他都是可选的,甚至可以不要配置文件,全部通过命令行指定即可。

如需查看完整配置参数,可执行:./easyss -show-config-example

保存好配置文件后,双击easyss,程序会自动启动,托盘会出现Easyss的图标,如下:

托盘图标 托盘图标 托盘图标

右键图标可选择代理规则和代理对象。

注意:代理对象,选择系统全局流量时,需要管理员权限。

自定义直连白名单:

对于少部分国内的IP/域名,或者部分特殊的IP/域名,可能Easyss没有正确识别,造成本该直连的IP/域名走了代理, 这时可在easyss所在目录下, 新建direct_ips.txt, direct_domains.txt, 分别用于存储直连IP列表和直连域名列表,每行一条记录。

direct_ips.txt文件示例:

39.156.66.10
110.242.68.66
106.11.84.3
206.0.68.0/23

direct_domains.txt文件示例:

baidu.com
taobao.com
your-custom-domain.com

手机客户端

手机客户端EasyssTun.apk文件可直接在release页面下载。

注意: 可将常用的国内大流量APP勾选上跳过,这样可减少电量消耗。当然不选也没关系,Easyss会自动判断该直连还是走代理。

服务器端

和客户端一样, 同样先创建配置文件config.json,并配置文件和二进制easyss-server放同一目录中。

服务端配置文件示例:

{
    "server": "your-domain.com",
    "server_port": 9999,
    "password": "your-pass",
    "timeout": 60,
    "cert_path": "",
    "key_path": ""
}

保存config.json文件, 其中server(在没有使用自定义证书情况下必填且为服务器域名地址)、server_portpassword必填, cert_path, key_path只有在使用自定义证书时配置,这两参数不为空则表示使用自定义tls证书,而非自动获取。

执行:

./easyss-server

注意:在没有使用自定义证书且没有禁用TLS情况下,服务器的443端口必须对外可访问,用于自动获取服务器域名证书的TLS校验使用。 并且这种情况需要sudo权限运行easyss-server

docker部署

docker run -d --name easyss --network host nange/docker-easyss:latest -p yourport -k yourpassword -s yourdomain.com

自定义证书

默认情况下,easyss-server端部署时配置了域名,则会自动从Let's Encrypt获取tls证书,用户无需操心证书配置。 但这要求我们必须有自己的域名,这加大了使用Easyss的难度。如果我们没有自己的域名,也可以通过自定义tls证书来使用Easyss。

生成自定义证书

可根据自己的需求,使用openssl等工具生成自定义证书。也可以参考: ./scripts/self_signed_certs 目录示例,使用cfssl生成自定义证书。 示例就是使用IP而不是域名生成自定义证书,这样就可以无域名使用Easyss了。

高级用法

服务器部署在反向代理(或CDN)之后

默认Easyss的出口协议为native,是基于TCP的一种特有协议。 但由于各种网络情况的客观复杂性,有可能我们的Easyss-server服务器只能部署于HTTP(s)反向代理之后的, 这时候native协议将无法工作,因此easyss支持了三种出口协议可选:native, http, httpshttphttps出口协议是对native的包装,基于tcp over http(s)技术实现。 如果可能的话应该优先使用native协议,因为其性能和延迟都有最好的表现。

在Easyss配置文件中,指定outbound_proto: http 或者 outbound_proto: https, 并在Easyss-server配置文件中,指定enable_http_inbound: true,即可实现服务器部署在反向代理之后的场景。 如果outbound_proto: http,还需要在Easyss-server配置文件中禁用tls:disable_tls: true

配置Cloudflare优选IP

可以把Cloudflare CDN作为反向代理,再将流量转发给Easyss,这样在很多时候能够改善我们的网络访问速度。 使用Cloudflare CDN通常会配合其优选IP同时使用,这样可以大幅提高访问速度和降低网络延迟。

我们只需要在配置文件中,将server字段配置为优选IP,再将sn字段配置为对应的在Cloudflare后台管理的域名即可。

启动前或定期执行自定义命令

同时Easyss还支持配置cmd_before_startup, cmd_interval参数,用于配置一个自定义命令,在Easyss启动前执行或者定期的执行。 cmd_interval_time可用于控制定期执行间隔,默认10分钟执行一次。

作为透明代理将Easyss部署在路由器或者软路由上

直接将Easyss部署在路由器或这软路由上,可实现家里或公司网络自动透明代理,无需在终端设备上安装Easyss客户端。

只需要在配置文件或者命令行指定enable_tun2socks: true 或者 -enable-tun2socks=true开启全局代理, 并同时开启DNS流量转发enable_forward_dns: true 或者-enable-forward-dns=true,即可实现透明代理。

服务端链式代理

服务端(easyss-server)支持将请求再次转发给下一个代理(目前只支持socks5)。

只需要在配置文件中指定next_proxy_url: "socks5://your-ip:your-port", 然后在easyss-server目录下创建next_proxy_domains.txt, next_proxy_ips.txt文件,用于指定对哪些域名或IP地址走链式代理。 也可以在配置文件中手动指定自定义文件路径:next_proxy_domains_file: "your_custom_domain_file.txt", next_proxy_ips_file: "your_custom_ip_file.txt"。 如果想链式代理所有地址的请求,则可以配置:enable_next_proxy_all_host: true

另外需要注意的是,链式代理默认是不转发UDP请求的,主要原因是很多socks5代理都不支持UDP请求,如Warp就不支持。 如果确定自己的代理是支持UDP请求的,又想开启UDP请求链式代理,则可以配置: enable_next_proxy_udp: true

LICENSE

MIT License