Open-source project
snltty/linker avatar
snltty/linker

Linker: A GPL-3.0 P2P Mesh and Relay Toolkit for Self-Hosted Remote Access

Project brief: P2P (UDP+TCP IPV4+IPV6) + . Very distinctive, P2P hole punching (UDP+TCP, IPV4+IPV6) + server forwarding, realizing remote networking and intranet penetration. Make your connected devices scattered around the world as easy to access as if they were in the next room.

1,504 stars263 forksC#GPL-3.0

At a glance

What is it?
Linker is a C#-based, self-hosted remote networking suite that combines UDP/TCP hole punching, IPv4/IPv6, server relay, virtual NICs, port forwarding, and Socks5. It targets engineers who want full control over their remote access infrastructure without depending on commercial VPN services.
Who is it for?
Adopt Linker if you need a self-hosted, cross-platform remote access layer with multiple tunneling strategies, virtual NIC support, and fine-grained firewall control, and you can commit to running your own relay or mesh nodes. Skip it if you want a managed service, a simple single-command setup, or if you cannot handle the complexity of NAT traversal and virtual network configuration.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 20 days ago.
What is it written in?
Mainly C#, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What Linker Actually Solves

Linker addresses a common pain: devices scattered across different networks, behind NATs, need to talk to each other as if they were on the same LAN. The README lists a hierarchy of connection methods, from IPv6 direct connection down to server relay. That ordering matters. It tells you that the project tries the fastest path first, then falls back to slower ones. For a home user with a public IPv4, UPNP or NAT-PMP can open a direct path. For symmetric NATs or CGNAT, you need TCP/UDP hole punching or a relay. The project also covers scenarios where you cannot install a virtual NIC, offering port forwarding and Socks5 as alternatives. The intended audience is not a casual user who wants a one-click VPN. It is someone who wants to run their own infrastructure, with the option to use the official public servers but with the advice to deploy privately. The README explicitly says the public servers are limited, so the project assumes you have your own server for relay or mesh.

The Tunneling Stack: From IPv6 to Mesh to Relay

The core mechanism is a layered set of tunnel establishment methods. The README lists them in order of effectiveness: IPv6 direct, UPNP direct, TCP/UDP hole punching, mesh network, and server relay. Each method is a fallback for the previous one. The mesh network is an interesting twist: clients with good network conditions can relay traffic for other clients, reducing the load on a central server. The server relay supports multiple nodes, which is meant to scale to a large number of devices. The data flow is not described in detail in the README, but the architecture is clear: you run a client on each device, and optionally a server for relay. The client attempts to establish a direct tunnel, and if that fails, it uses the relay. The mesh option adds a peer-to-peer relay layer, which is a distinct approach compared to a star topology. The README also mentions a feature called 'TCP over TCP' that uses a separate project, tun324, to speed up communication. That is a specific optimization for a known problem: running TCP over TCP can cause performance collapse, so the project integrates a workaround.

Communication Modes: Virtual NIC, Port Forward, and Socks5

Once a tunnel is up, Linker offers three ways to access actual services. The first is virtual networking, which creates a virtual NIC and supports point-to-point, point-to-network, and network-to-network topologies, with automatic virtual IP assignment. This is the most transparent mode, because applications see a normal network interface. The second is port forwarding, which maps a local port to a remote port. The README links to a separate blog post about managing port forwarding state for multiple services over a single tunnel, which suggests that this mode has non-trivial state management. The third is Socks5, which is more flexible than port forwarding because it can proxy any port, not just a fixed mapping. The choice between these modes depends on whether you can install a virtual NIC driver (which requires admin rights) and whether you want to expose all ports or just specific ones. The README also mentions an application-layer NAT that kicks in when the system's built-in NAT (iptables or NetNat) is not available. That is a fallback for environments like containers or restricted OSes where you cannot set up kernel NAT.

Getting It Running: Commands and Config from the README

The README does not provide a quickstart with exact commands. It lists supported platforms: Windows, Linux, Android, Docker, OpenWrt, NAS, PVE, LXC, macOS. iOS is explicitly unsupported because the author lacks a Mac and a developer account. There is a Docker image on Docker Hub (snltty/linker-musl), which suggests a musl-based build for Alpine-like environments. To run it, you would pull that image or download a release from the GitHub releases page. The project has a documentation site at linker-doc.snltty.com, but the README does not include the specific configuration keys. Based on the repository layout, you would run a server component and a client component, but the exact commands are not in the material. The README mentions features like '自动分配虚拟IP' (auto-assign virtual IP) and '网段映射' (subnet mapping), which imply configuration files for network ranges. There is also a mention of '计划任务' (scheduled tasks) for the intranet penetration feature, where you can set a start time and duration. Without the docs, you cannot know the exact syntax, so the practical start is to consult the documentation site or the Docker Hub page.

Limitations and Failure Modes

The most obvious limitation is the lack of iOS support. If your device fleet includes iPhones or iPads, you cannot use Linker on them. That alone rules out many mixed-device households. The README also warns that the public servers are limited, so relying on them is not a long-term plan. The project's reliance on hole punching means that in restrictive networks, such as carrier-grade NAT or symmetric NAT, the success rate drops. The README claims a high success rate for TCP/UDP hole punching, but it does not quantify it. The mesh network feature depends on having clients with good network conditions; if all clients are behind strict NATs, the mesh may not help. The FEC and KCP features are described as 'strongly optimized', but that is a marketing term, not a benchmark. There is no data on CPU overhead or latency. The application-layer NAT is a fallback, but it likely has higher overhead than kernel NAT. Another failure mode is the complexity of managing virtual NICs, which require administrative privileges and can conflict with other VPN software. The README does not mention any conflict resolution.

Alternatives: FRP and Tailscale, with Different Approaches

The README itself compares the intranet penetration feature to FRP. FRP is a client-server model where a client connects to a server, and the server forwards traffic to a specified port. Linker's intranet penetration is similar, but it also supports scheduled on/off, which FRP does not natively do. The big difference is that Linker's penetration is part of a larger P2P system, so you can use the same infrastructure for direct connections when possible. A different alternative is Tailscale, which uses WireGuard and a coordination server to establish direct connections, but it is not fully self-hosted unless you run Headscale. Tailscale does not offer port forwarding or Socks5 in the same way; it focuses on virtual networking. Linker's advantage is its breadth: it combines VPN, port forwarding, Socks5, and relay in one package. The trade-off is that Tailscale has a simpler setup and a managed coordination service, while Linker requires you to run your own server and handle NAT traversal yourself. For a user who wants a quick, reliable mesh VPN, Tailscale is easier. For someone who wants to avoid third-party coordination and have granular control over firewall rules, Linker is more fitting.

Maintenance and License Implications

The project is under GPL-3.0, which means any derivative work must be open-sourced under the same license. If you embed Linker in a proprietary product, you cannot keep your changes closed. That is a significant constraint for commercial use. The project is actively maintained, with releases as recent as August 2026 and a last push on the same day. The release cadence is roughly monthly, with v2.0.18 in early August and v2.0.19 and v2.0.20 later that month. That suggests a responsive maintainer. However, the README is partly in Chinese, and the documentation site is likely in Chinese as well. If you do not read Chinese, you may struggle with advanced configuration. The maintenance cost includes keeping up with releases, as each update may change config formats. The project has a blog that explains technical details, but it is also in Chinese. There is no mention of a migration guide or a changelog in the README, so upgrading might require reading release notes. The Docker image is musl-based, which is good for small containers, but you need to ensure your platform supports it. The GPL license also means that if you distribute a modified version, you must provide source code, which is a legal obligation you should verify with a lawyer.

Editorial conclusion

Adopt Linker if you need a self-hosted, cross-platform remote access layer with multiple tunneling strategies, virtual NIC support, and fine-grained firewall control, and you can commit to running your own relay or mesh nodes. Skip it if you want a managed service, a simple single-command setup, or if you cannot handle the complexity of NAT traversal and virtual network configuration. Before deploying, verify the exact behavior of TCP hole punching on your target ISPs, test the FEC and KCP settings on your actual lossy links, and confirm that the GPL-3.0 license is acceptable for your distribution model. The project is actively maintained with frequent releases, but the documentation is sparse and largely in Chinese, so plan for a learning curve.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community notes

Community notes