Files
goodlink/README.md
2024-12-30 16:30:57 +08:00

4.4 KiB
Raw Blame History

GoodLink Logo

特点

  1. 两台主机之间直连!直连!直连!不经过第三方服务器,不用担心数据隐私泄露

  2. 一条命令搞定,无需安装、无需注册,无需公网 IP无需配置文件

  3. 直连基于 QUIC高性能已加密

1.1.6 版本开始加强了通信安全,因此和老版本不兼容

原理图

介绍

  1. 两台主机运行同一个程序, 一台主机加--remote 选项(以下称 remote 端), 另一台主机加--local 选项(以下称 local 端)

  2. local 端和 remote 端之间的连接是点对点直连的,不经过第三方服务器

  3. 可以在 local 端访问 remote 端, 但是反过来不可以

  4. 如果需要反过来, 或者需要访问多个 remote 端, 就运行多个程序或启动多个 Docker

  5. 可以多个 local 端对应一个 remote 端,但一个 local 端不能对应多个 remote 端。通过使用相同的--key 确认对应关系

  6. 由于直连过程复杂,会出现反复重试,通常 10 分钟内成功。如果长时间无法连接,请反馈我解决

  7. 本程序即支持命令行方式,也支持 docker 方式,以下举例仅作参考,实际可随意切换

  8. windows 自带杀毒软件,会将所有 go 语言写的程序都认为是病毒。本程序已开源,可放心食用

简单使用

工作模式 - 介绍

代理模式

local端需要指定本地端口以提供Socks5代理服务

local端需要在系统或者软件中配置Socket5代理便可访问remote端所处网络中的所有主机端口

转发模式

remote端需要指定所处网络中的某一个主机端口local端也需要指定本地端口。

local端无需配置Socks5代理直接访问指定的本地端口就等于访问remote端指定的主机端口。但也只能访问这一个端口

注转发模式仅支持TCP协议一个remote端只能转发一个端口可运行多个remote端

代理模式 - 举例

local 端运行在公司的电脑remote 端运行在家里的 NAS。

在公司电脑上配置代理地址socks5://127.0.0.1:18080便可访问家里包括 NAS 在内的所有主机端口。

家里的 NAS ( linuxDocker )

下载镜像registry.cn-shanghai.aliyuncs.com/kony/goodlink

docker rm goodlink -f; docker run -d --name=goodlink --net=host --restart=always registry.cn-shanghai.aliyuncs.com/kony/goodlink --key= nas_202412140928

公司的电脑 ( windows, 命令行 )

下载程序

使用说明

remote 端和 local 端均支持命令行 和 Docker 方式,二选一即可,以上仅作两种方式的举例。

转发模式 - 举例

local 端运行在公司的电脑remote 端运行在家里的 NAS。

在公司访问 http://127.0.0.1:9999 , 等于访问家里的 NAS 管理页面http://192.168.3.2:9999

家里的 NAS (linuxDocker)

下载镜像registry.cn-shanghai.aliyuncs.com/kony/goodlink

docker rm goodlink -f; docker run -d --name=goodlink --net=host --restart=always registry.cn-shanghai.aliyuncs.com/kony/goodlink --remote=192.168.3.2:9999 --key=nas_202412140928

公司的电脑 (windows, 命令行)

下载程序

使用说明

选项说明

root@VM-4-9-ubuntu:~/go/src/goodlink# ./bin/goodlink-linux-amd64 -h
Usage of bin/goodlink-linux-amd64:
  --remote string
        remote端所处网络中, 需要被远程访问的主机地址端口。若不加这个选项,就是代理模式
  --local string
        local端监听的地址端口
  --key string
        自己随便定义, 但local端和remote端必须一致。建议16-24个字节长度防止冲突: {name}_{YYYYMMDDHHMM}, 例如: kony_202412140928
  --conn int
        由于remote和local两端默认使用的算法不一样如果出现超过10分钟无法连接的情况可能是其中一端和默认的算法不兼容
        此时可在local端增加 "--conn=1" 选项,以调换两端的算法,就能连接了

问题解答