Skip to content

FEAR IS THE PATH TO DARK SIDE. KNOWLEDGE IS THE ONLY WAY TO FREEDOM.

License

Notifications You must be signed in to change notification settings

wiiiky/skywalker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SkyWalker

介绍

SkyWalker 是一个代理程序,设计用来转换不同的数据格式。

例子

如果要把HTTP代理转化为SOCKS5代理输出,其数据流如下

+--------+                +-----------+            +---------------+
| CLIENT | <=HTTP-PROXY=> | SKYWALKER | <=SOCKS5=> | SOCKS5 SERVER | <=>
+--------+                +-----------+            +---------------+

一个典型的Shadowsocks的local服务如下

+--------+                +-----------+                 +------------+
| CLIENT |   <=SOCKS5=>   | SKYWALKER | <=SHADOWSOCKS=> | SS REMOTE  | <=>
+--------+                +-----------+                 +------------+

实现

为了达到这种可配置的代理转化效果,Skywalker内部大致被分为两个部分。

一部分用于接收并解析客户端数据,叫作ClientAgent(简称CA)。

另一部分用于接受CA解析完的数据并打包成新的数据格式,并发送给服务器,叫做ServerAgent(简称SA)。

通过实现不同的CA和SA协议,来达到可配置地转化数据协议地能力。

协议

目前

CA支持以下协议

* HTTP PROXY
* SOCKS4
* SOCKS5
* SHADOWSOCKS
* REDIRECT
* VOID
* ECHO

SA支持以下协议

* SOCKS4
* SOCKS5
* SHADOWSOCKS
* DIRECT
* VOID
* ECHO

DIRECT 表示无格式数据,直接把数据发送出去。

注意 在协议转化的过程中,有一个转化方向,那就是从高层协议往低层或者同层协议转化。

比如可以把HTTP代理转化为SOCKS5协议,但是无法把SOCKS5协议转化为HTTP代理协议,因此SA不能实现HTTP代理协议。

类似的还有,DIRECT只能作为SA协议,而不能作为CA协议。

配置

Skywalker 使用 Yaml1.2 作为配置格式。

具体配置方案请参考 example 目录。

编译

在代码目录下执行

  • make

管理

与Skywalker配套的一个管理程序叫做forctl,它既可以做作为命令行程序,也可以作为交互程序使用。

可以用于开启和关闭代理、查看代理状态、刷新配置等。

命令 说明 使用方式
status 查看当前代理状态 forctl status <name>...
info 查看代理的详细信息 forctl info <name>
list 查看代理当前的链接通道 forctl list <name>
reload 更新配置,将重启服务 forctl reload -y
start 启动代理 forctl start <name>
stop 关闭代理 forctl stop <name>
restart 重启代理 forctl restart <name>
quit 退出skywalker forctl quit -y

截图

start control

About

FEAR IS THE PATH TO DARK SIDE. KNOWLEDGE IS THE ONLY WAY TO FREEDOM.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages