-
Notifications
You must be signed in to change notification settings - Fork 655
使用教程
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="VPS_IP:8100"
连接,VPS_IP
为服务端的IP。
客户端启动后,请设置本地代理为127.0.0.1:8100
(类型为HTTP或SOCKS5代理)。8100端口为默认值,可以使用以下命令修改:
-l="ip:port" 或 -p="ip:port"
对于服务端,-l
同样用于修改其监听地址,请不要忘了同时修改客户端-up
命令中的端口号。
服务端与客户端的KEY
需保持一致,如果在本地使用了错误的KEY
连接,服务端会在两次尝试后BAN掉连接IP。此时请:
- 重启服务端(以清空IP黑名单)
- 或访问 http://127.0.01:8100/?goflyway-console ,点击“解锁”
在服务端和客户端使用-a username:password
启用用户认证(username
和password
请自行设定,不要忘了中间的冒号),开启后您需要用户名和密码才能够连接客户端的HTTP或SOCKS5代理。
客户端使用-g
开启全局代理,此时不会区分国内和国外流量。
服务端可以使用-partial
开启半加密模式,这样HTTPS传输的数据只有前18kb会被加密(后续的数据本身就是加密的)以降低CPU占用。需要注意的是客户端同样需要加上-partial
,且HTTP流量不受该命令影响。如果使用SOCKS5代理,请不要使用该命令。
因为goflyway的服务端本质上是一个具有代理功能的HTTP服务器,所以您可以使用-proxy-pass http://xxx.xxx.xxx.xxx:xxx
的方式打开goflyway的反向代理功能。
+---------+ +-----------------+
| browser |-. .-| your web server |
+---------+ \ +----------+ / +-----------------+
}==>| goflyway |==={
+--------------+ / +----------+ \ +----------------+
| proxy client |-' '-| GFWed websites |
+--------------+ +----------------+
设置goflyway监听在80端口上,这样客户端发出的代理请求会被正常处理,而浏览器也可以正常访问网站。
在客户端和服务端同时加上-u PORT
打开UDP relay功能,注意端口号必须相同。目前relay只在Discord、Chrome(QUIC)之类的软件中测试过(使用SocksCap64和SSTap),且不会区分国内外流量(默认全局)。
goflyway使用的是UDP over TCP的传输方式,-udp-tcp N
可以指定使用N个TCP连接来承载1个UDP连接(默认N=1),您可以适当调整该值优化传输速度。