Skip to content

使用教程

Coyove edited this page Nov 6, 2017 · 31 revisions

Release

goflyway的客户端与服务端均为同一个文件,下载对应系统版本即可运行。

从源码编译

goflyway基于golang,所以请首先安装go环境并正确配置$GOPATH$GOROOT路径(参考)。然后:

go get -u github.com/coyove/goflyway/cmd/goflyway

完成后goflyway会被编译到$GOPATH/bin目录下,您也可以将$GOPATH/bin这个路径加入到$PATH中以直接调用goflyway。

客户端的安装与服务端类似。完成后请将$GOPATH/src/github.com/coyove/goflyway/chinalist.txt这个文件拷贝至goflyway的同目录下,注意这一步不是必须的:在缺乏chinalist.txt文件的情况下,goflyway只会通过IP判断国内外流量,而chinalist可以更快的匹配(无匹配时才会查询IP)。

运行

在服务器上执行./goflyway -k=KEY即可启动服务端,KEY为自定义密码,默认监听8100。本地执行./goflyway -k=KEY -up="SERVER_IP:8100"启动客户端连接,SERVER_IP为服务端的IP。

客户端启动后,请设置本地代理为127.0.0.1:8100(协议为HTTP或SOCKS5代理)。8100端口为默认值,可以使用-l="ip:port"-p="ip:port"命令修改。

对于服务端,-l同样用于修改其监听地址,请不要忘了同时修改客户端-up命令中的端口号。

简单认证

在服务端和客户端使用-a username:password启用用户认证(usernamepassword请自行设定,不要忘了中间的冒号),开启后您需要用户名和密码才能够连接客户端的HTTP或SOCKS5代理。

全局

客户端使用-g开启全局代理,此时不会区分国内和国外流量。

半加密

服务端可以使用-partial开启半加密模式,这样HTTPS传输的数据只有前18kb会被加密(后续的数据本身就是加密的)以降低CPU占用。需要注意的是客户端同样需要加上-partial,且HTTP流量不受该命令影响。如果使用SOCKS5代理,请不要使用该命令。

反向代理

因为goflyway的服务端本质上是一个具有代理功能的HTTP服务器,所以您可以使用-proxy-pass http://IP:PORT的方式打开goflyway的反向代理功能。设置goflyway监听在80端口上,这样客户端发出的代理请求会被正常处理,除此之外的其他请求会forward到IP:PORT

中间人模式

请将ca.pem添加至系统的信任证书列表中,然后使用命令(客户端)-mitm打开中间人模式,注意该模式只有在使用HTTP代理时有效,不支持HTTP2,Websocket等协议,不支持文件的下载进度显示(使用了Transfer-Encoding: chunked)。中间人模式下HTTPS和HTTP均会通过HTTP请求发出,但是body和一些关键的HTTP头会被加密。

前置代理

中间人模式下您可以使用公共的HTTP代理服务器作为前置,以达到加速或隐藏IP的目的。这里我们假设域名example.com已经指向您的服务器IP,服务端监听在8100端口上,则客户端使用以下命令连接:

./goflyway -up=HTTP_PROXY_IP:HTTP_PROXY_PORT -k=KEY -mitm -d example.com:8100

如果使用cloudflare,服务端需运行在80/8080等指定端口上,客户端使用以下命令连接:

./goflyway -up=example.com:80 -k=KEY -mitm -d example.com

UDP Relay

在客户端和服务端同时加上-udp PORT打开UDP relay功能,注意端口号必须相同。目前relay只在Discord、Chrome(QUIC)之类的软件中测试过(使用SocksCap64和SSTap),且不会区分国内外流量(默认全局)。

goflyway使用的是UDP over TCP的传输方式,-udp-tcp N可以指定使用N个TCP连接来承载1个UDP连接(默认N=1),您可以适当调整该值优化传输速度。

Clone this wiki locally