yukinet

module
v0.2.23 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 26, 2024 License: MIT

README

Yukicat

Yukicat 是一个多功能转发工具,它能够实现以下功能

  • Socket 转发:
    • 实现基础的 TCP/UDP 转发功能。
    • TCP/UDP 的加密转发,转发协议为 chacha20-poly1305。UDP 的加密模式可以选择性配置 FEC 编码来降低丢包率。
  • Proxy
    • 对于 TCP 协议,可以实现代理的服务/客户端功能。
  • Mesh VPN:
    • 在设置了 Discovery Service 后,能够基于此服务实现 Mesh VPN 功能。

项目说明

本仓库包含以下程序:

  • ./cmd/cat: 本工具。
  • ./android: Mesh VPN 的 Andorid Apk.
  • ./cmd/server: 可选的中继及发现服务器。

使用说明

yukicat 将用户的行为简单归纳为将某类数据匹配到某类数据上, 如将一个TCP端口的数据匹配到一个远程的代理服务上。作为一个命令行工具, yukicat 需要用户提供两个 URL 地址来表达他们的意图。

基础用法

以下命令将会将本地的 8080/tcp 端口转发至远程的 example.com 的端口 123/tcp (XTCP本程序提供的TCP加密隧道)。

yukicat tcp://127.0.0.1:8080 xtcp://example.com:123

类似地,以下是一个 UDP 转发的用法:

yukicat -udp-timeout 30s udp://0.0.0.0:53 udp://127.0.0.53:53

-udp-timeout 为 UDP 转发指定了终止条件:当 UDP 在 30s 内无任何网络活动时,该连接将会被关闭。

中继

通过在公网上使用中继/发现服务器,可以将本工具用于内网穿透,该穿透支持 TCP/UDP。

设置中继/发现服务器
yukiserver --relay-background-interval 10s --pub AAA,BBB,CCC --host A.B.C.D

--relay-background-interval 指定了对于 UDP 类的中继连接,中继服务器进行连接检查的周期时间。 --pub 为 ed25519 公钥的名单, 在这个例子中,只有拥有 AAA, BBB, CCC 公钥的 yukicat 客户端才能够使用该服务器, 当此选项未指定时, 该服务器将允许所有客户端连接。 --host 为当 yukicat 使用该服务器时,它向其他客户端广播的它所使用的中继地址。

以下是一个内网穿透的例子:

yukicat disc://A.B.C.D/mychannel?relay=1&port=8081/tcp tcp://127.0.0.1:8080

这里 yukicat 将会注册 mychannel 为自己的地址,relay=1 代表开启中继(往往意味着它在 A.B.C.D 上使用了中继服务),而 port=8081/tcp 指定了它所使用的协议为 tcp, 且它会在本地的 8081 端口监听,其他 yukicat 在尝试中继之前将试图直接连接到该端口。port=-/tcp表示协议为 tcp, 但该客户端不在任何端口监听。

这是访问 mychannel 的命令:

yukicat tcp://127.0.0.1:8081 disc://A.B.C.D/mychannel

这里该客户端将会通过运行第一个命令的机器连接到 127.0.0.1:8080.

代理

代理服务在这里也被抽象成了资源映射的一种类型,以下命令将会启动一个代理服务器:

yukicat disc://A.B.C.D/myproxy?relay=1&port=8081/tcp proxy://

它的客户端将会运行一个本地代理,并将流量转发至代理服务器,如:

yukicat http-proxy://127.0.0.1:3128 disc://A.B.C.D/myproxy

将在本地启动一个 HTTP 服务器,并将其流量在 disc://A.B.C.D/myproxy 上代理。

Mesh VPN

Windows 前置条件

yukicat 依赖于 wintun, 请下载 wintun 并放在本程序所在目录。

使用

yukicat 基于以上发现服务和加密机制,在 wireguard-go 的基础上实现了 Mesh VPN。以下命令将会设置一个 VPN 服务:

yukicat tun://10.0.0.2?mtu=1320&dev=yuki0&mask=24&gateway=10.0.0.1 disc://A.B.C.D/mynetwork?relay=1&port=1000/xudp

该命令解释如下:

  • tun://10.0.0.2?mtu=1320&dev=yuki0&gateway=10.0.0.1: 本 VPN IP 地址为 10.0.0.2(/24网段), 它的默认网关为 10.0.0.1, VPN 的适配器名称为 yuki0, MTU 为 1320.
  • disc://A.B.C.D/mynetwork?relay=1&port=1000/xudp: VPN 的服务运行在发现网络 mynetwork 上,其他设备可通过 mynetwork/10.0.0.2 这一地址来找到本设备, 本设备同时也通过 mynetwork/IP 来找到其他设备。

支持的协议

  • udp, tcp, xudp, xtcp, stdio
  • disc(overy), proxy, http-proxy
  • tun

License

MIT License

Directories

Path Synopsis
cmd
cat
env
common
protocol
transport
udp

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL