69

GitHub - fanpei91/gap-proxy: gap-proxy 是一个加速网络的 SOCKS5 安全代理工具,使...

 5 years ago
source link: https://github.com/fanpei91/gap-proxy
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

README.md

简介

gap-proxy 是一个加速网络的 SOCKS5 安全代理工具,使用了专门设计的加密传输协议。

mTCP

mTCP 是专门为 gap-proxy 设计的快速、可靠,加密安全、基于 UDP 的传输协议,借鉴了 KCP,TCP,Quic 的优点,技术特性:

  • 支持连接迁移,在 IP 地址变化的情况下继续保持连接不断。
  • 从协议头到应用数据都使用了 AES-256-CFB 加密。
  • 类似 HMAC 机制,可防止数据被篡改。
  • 选择确认,快速重传,快速超时选择重传。
  • 简单的 KeepAlive,及时释放意外终止的连接。
  • 简单快速的连接建立、连接释放。

mTCP 没有拥塞控制,只有流量控制。正因为如此,在高丢包率网络环境中,它才比使用了拥塞控制的 TCP 更快,即便是用了 BBR。

mTCP 的 RTO 不像 TCP 那样丢包就翻 2 倍,也不像 KCP 翻 1.5 倍,而是根本不翻倍。拥塞控制都去掉了,要流氓就要专注点。

支持平台

gap-proxy 仅支持 macOS, Linux, 其他类 Unix 理论上支持,但并未测试过。如果需要在其他类 Unix 上运行,需要自己安装 go1.8+ 并自己编译 gap-proxy:

$ go build -o gap-proxy *.go

安装

提示:为了简单,如下操作在个人电脑,国外服务器上可都一样。

下载

根据你所使用的操作系统从 releases 下载相应已编译好的二进制文件压缩包。

安装

首先解压程序包,进入该目录,把 .gap-proxy 目录移动到用户主目录下:

$ mv .gap-proxy ~/.gap-proxy

接着把 gap-proxy 二进制文件移动到 /usr/local/bin 或其他在 $PATH 环境变量的目录里,并命名为 gap

$ mv gap-proxy /usr/local/bin/gap

最后编辑 ~/.gap-proxy/config.json 文件,配置相关参数,举例:

{
	"local":  "127.0.0.1:1186", # 客户端监听地址 (SOCKS5)
	"server": "8.8.8.8:2286",   # 服务器端监听地址
	"key":    "gap-proxy"       # 密钥
}

基本使用

启动

一旦安装并配置好后,在个人电脑系统上执行:

$ gap local start

然后在国外服务器上执行:

$ gap server start

这样便分别启动了 gap-localgap-server 后台进程。

代理

gap-proxy 只是个简单的 SOCKS5 代理服务,无 PAC 机制,无内置 gfwlist。为了更方便科学上网,需要自己在浏览器安装代理管理插件。Chrome 浏览器推荐使用 SwitchyOmega

一旦安装好代理管理插件,插件的 SOCKS5 地址填写为配置文件的 local 字段的地址。

现在,去冲浪吧!

高级使用

gap-proxy 的默认接收窗口为 256 个包,每个包最多能装 1420 字节数据,假设数据包传输每轮次需要 300 毫秒(RTT),一秒就有 3.3 个轮次,那么每秒最多能传输 256 * 1420 * 3.3 / 1024 = 1171 KB 有效数据,不包括重传,不包括协议头。

默认值 256 基本上能流畅观看 720p 的 youtube 视频。如果看更高清的视频会卡顿,只要带宽允许,可把接收窗口值逐渐调大,比如:

$ gap wnd 512

这样便把当前所有连接、新连接的接收窗口都设为 512,gap-server 就能通过协议头的 Window 字段知道新发送窗口值。

现在,每秒最多能传输 2343 KB 数据。

待办事项

感谢及参考


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK