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.exe、devlink-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 serverShell:
./build_client.sh
./build_server.sh脚本通过 GOTOOLCHAIN 选择工具链。可分别使用 ClientToolchain、ServerToolchain 参数或 CLIENT_GO_TOOLCHAIN、SERVER_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 端口时使用端口映射;需要访问整个客户网段或使用全路由时使用异地并网。
通信双方都安装 DevLink,并分别获得唯一虚拟 IP。适合公司电脑直接调试已安装 Agent 的客户服务器。
Controller 10.10.1.12 -> DevLink Server -> Agent 10.10.1.11
目标设备无法安装 DevLink,但与 Agent 位于同一客户网络。Agent 使用 Proxy 将目标设备映射成 DevLink 虚拟 IP,并可按 TCP/UDP 端口或端口范围开放。
Controller -> 10.10.1.14:8080 -> Agent Proxy -> 192.168.3.30:8080
公司局域网中的调用设备不安装 DevLink,由公司 Controller 使用 Forward 提供 TCP 跳板端口。
公司设备 -> 192.168.1.108:12345 -> Controller -> 10.10.1.11:1433
客户笔记本上的 Agent 作为用户态 Gateway。Controller 或 Android 可以路由指定客户网段,也可以使用全路由,效果类似位于客户网络中的虚拟机。该模式支持 IPv4 TCP、UDP 和基本 ICMP,不依赖 ICS、WinNAT 或系统 NAT。
Android/Controller -> DevLink -> Gateway Agent -> 客户网段 192.168.5.0/24
异地并网是三层路由,不提供 ARP/MAC 透传、二层桥接、广播或组播发现。四种场景的各端最小配置见 Client 使用说明手册。
-
在 Linux 服务器上启动 server。
./devlink-server-linux-amd64 -s server.ini
建议注册为 systemd 服务长期运行。
-
配置 client。
将
client.ini放在devlink-agent.exe或devlink-controller.exe同级目录,至少填写:[server] ip = 你的服务器IP port = 9990 transport = tls token = 服务端相同token [client] device_name = office-pc addr = 10.10.1.12/24
-
以管理员身份启动 Windows client。
.\devlink-controller.exe -c client.ini
-
打开本地 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-sql01、company-controller-01。addr也应全局唯一,不要让两个 client 使用相同虚拟 IP。- 生产或长期挂载建议使用
transport = tls。 - 只开放必要端口,优先配置
expose_tcp_ports、expose_udp_ports,避免默认全端口暴露。 - 网关建议用
controllers、targets、tcp_ports、udp_ports按最小权限收紧;不需要借客户网络上公网时设置internet = false。 - Server Web 面板建议设置用户名和强密码,并只绑定内网管理地址或通过安全入口访问。
