Skip to content

Repository files navigation

DevLink

DevLink

DevLink 是一套面向远程调试和运维场景的 IPv4 三层组网工具。它通过中心 Server 连接不同位置的 Agent、Controller 和 Android 设备,并将主要用途归纳为四种模式:虚拟组网、代理组网、端口映射和异地并网。

当前发布目录主要包含:

文件 作用
devlink-server-linux-amd64 Linux 服务端程序
devlink-agent.exe Windows 受控端 client,通常运行在客户服务器或客户现场跳板机
devlink-controller.exe Windows 控制端 client,通常运行在公司电脑
Android Controller Android VpnService 控制端,源码位于 android-app
client.ini client 默认配置文件,程序默认读取 exe 同目录下的这个文件
wintun.dll Windows TUN 驱动运行库,当前 exe 也支持内嵌释放

兼容性与构建工具链

目标 最低目标系统 构建工具链
devlink-agent.exedevlink-controller.exe Windows 10、Windows Server 2012/2012 R2 Go 1.20.14
devlink-server Linux Go 1.23 或更新版本
Android Controller Android 4.4(API 19) Go 1.23 或更新版本、gomobile

根模块声明 go 1.20,用于保证共享源码和依赖可以被 Windows 兼容工具链读取。这不表示所有产物都使用旧运行时:构建脚本会强制 Windows Client 使用 Go 1.20.14;Linux Server 使用独立的 go.server.mod 和现代依赖语义;Android 使用独立的 android/go.mod。Server 和 Android 都拒绝低于 Go 1.23 的工具链。

PowerShell:

.\build.ps1 -Target client
.\build.ps1 -Target server

Shell:

./build_client.sh
./build_server.sh

脚本通过 GOTOOLCHAIN 选择工具链。可分别使用 ClientToolchainServerToolchain 参数或 CLIENT_GO_TOOLCHAINSERVER_GO_TOOLCHAIN 环境变量覆盖工具链来源,但 Windows 发布包仍必须使用 Go 1.20.14。

角色说明

  • Server:公网或双方都能访问的中转服务,负责认证、路由登记、转发和 Web 面板。
  • Agent:受控端。一般部署在客户服务器或客户现场电脑,暴露自身允许访问的端口。
  • Controller:控制端。一般部署在公司电脑,用于访问 agent 或 agent 代理出来的设备。

Agent 和 Controller 都属于 client,但使用不同的 exe 启动,不需要在 ini 里配置 role

四种应用场景

场景 需要安装 DevLink 的端 不需要安装的端 访问方式
虚拟组网 通信双方分别运行 Agent、Controller 直接访问对方 10.10.x.x 虚拟 IP
代理组网 Controller 和目标局域网内的一台 Agent 被代理的服务器、PLC、Web 设备 Agent 将真实设备映射成独立虚拟 IP
端口映射 远端 Agent 和作为跳板的 Controller Controller 所在局域网的调用设备 访问 Controller 物理 IP 的指定端口
异地并网 客户网络中的 Gateway Agent,以及 Controller 或 Android 客户网段内的目标设备 将指定网段或全路由范围内的 TCP、UDP、ICMP 流量交给 Gateway Agent

选择原则:双方都能安装 Client 时使用虚拟组网;目标设备不能安装但需要独立虚拟 IP 时使用代理组网;调用端不能安装且只需要少量固定 TCP 端口时使用端口映射;需要访问整个客户网段或使用全路由时使用异地并网。

1. 虚拟组网

通信双方都安装 DevLink,并分别获得唯一虚拟 IP。适合公司电脑直接调试已安装 Agent 的客户服务器。

Controller 10.10.1.12 -> DevLink Server -> Agent 10.10.1.11

2. 代理组网

目标设备无法安装 DevLink,但与 Agent 位于同一客户网络。Agent 使用 Proxy 将目标设备映射成 DevLink 虚拟 IP,并可按 TCP/UDP 端口或端口范围开放。

Controller -> 10.10.1.14:8080 -> Agent Proxy -> 192.168.3.30:8080

3. 端口映射

公司局域网中的调用设备不安装 DevLink,由公司 Controller 使用 Forward 提供 TCP 跳板端口。

公司设备 -> 192.168.1.108:12345 -> Controller -> 10.10.1.11:1433

4. 异地并网

客户笔记本上的 Agent 作为用户态 Gateway。Controller 或 Android 可以路由指定客户网段,也可以使用全路由,效果类似位于客户网络中的虚拟机。该模式支持 IPv4 TCP、UDP 和基本 ICMP,不依赖 ICS、WinNAT 或系统 NAT。

Android/Controller -> DevLink -> Gateway Agent -> 客户网段 192.168.5.0/24

异地并网是三层路由,不提供 ARP/MAC 透传、二层桥接、广播或组播发现。四种场景的各端最小配置见 Client 使用说明手册

快速开始

  1. 在 Linux 服务器上启动 server。

    ./devlink-server-linux-amd64 -s server.ini

    建议注册为 systemd 服务长期运行。

  2. 配置 client。

    client.ini 放在 devlink-agent.exedevlink-controller.exe 同级目录,至少填写:

    [server]
    ip = 你的服务器IP
    port = 9990
    transport = tls
    token = 服务端相同token
    
    [client]
    device_name = office-pc
    addr = 10.10.1.12/24
  3. 以管理员身份启动 Windows client。

    .\devlink-controller.exe -c client.ini
  4. 打开本地 client GUI。

    如果启用了 [client_gui],浏览器访问:

    http://127.0.0.1:7600/
    

Server 面板会显示每个 client 的协议、在线时长、Forward、Proxy、VPN/Gateway 能力和诊断日志,并支持查询、排序和清退。

更多文档

授权协议

本项目使用修改版 GNU General Public License version 3 (GPLv3)。使用 DevLink 前端、后台、GUI、控制台或应用时,不得移除或修改 DevLink LOGO 和版权信息;贡献者同意项目方可按需调整开源协议,且贡献代码可用于商业用途。详见 LICENSE

常用建议

  • device_name 全局唯一,建议使用能识别归属的名称,例如 customer-a-sql01company-controller-01
  • addr 也应全局唯一,不要让两个 client 使用相同虚拟 IP。
  • 生产或长期挂载建议使用 transport = tls
  • 只开放必要端口,优先配置 expose_tcp_portsexpose_udp_ports,避免默认全端口暴露。
  • 网关建议用 controllerstargetstcp_portsudp_ports 按最小权限收紧;不需要借客户网络上公网时设置 internet = false
  • Server Web 面板建议设置用户名和强密码,并只绑定内网管理地址或通过安全入口访问。

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages