relay/proxy 服务端必须能创建 tun 接口,agent 端则不需要特权;agent 无特权时无法转发原始数据包,nmap SYN 扫描实际走 connect(),建议加 --unprivileged 或 -PE 避免误报;README 未给出具体安装命令,需按官方文档操作。

ligolo-ng
nicocha30GPL-3.0活跃维护基于 TUN 虚拟网卡的隧道与内网横向移动工具,让渗透测试人员在拿下入口后轻松穿透多层网络、访问内网主机。
An advanced, yet simple, tunneling/pivoting tool that uses a TUN interface.
README 未给出安装命令,请参考官方文档 https://docs.ligolo.ng/ 的 QuickstartREADME 未说明具体硬件或显存要求;relay/proxy 服务端需要能创建 tun 接口(通常需 root 或相应权限),agent 端无需管理员权限。
用 TUN 接口做隧道与内网穿透的轻量工具,让渗透测试摆脱 SOCKS 代理
基于 TUN 虚拟网卡的隧道与内网横向移动工具,让渗透测试人员在拿下入口后轻松穿透多层网络、访问内网主机。
核心能力
- 用 TUN 接口转发流量,无需 SOCKS 或 proxychains
- 基于 Gvisor 用户态网络栈,把 SYN 翻译成远端 connect()
- 支持 TCP、UDP 和 ICMP echo 请求
- agent 端无需 root 权限,可在 agent 上监听和绑定 socket
- 支持多隧道、反向与绑定连接,断网后自动恢复隧道
容易踩的坑
- v0.9.2Ligolo-ng v0.9.2最新正式版2026-09-26 · 2026-09-26 08:02 UTC
Changelog
- e543732f4be6dc899096ae322ae620bf010bfbfc Merge pull request #196 from N1s0n/fix/agent-sni-hostname-parsing
- c271794d6919caa03d758f5304e320042c27f240 fix(agent): parse host:port connect strings so TLS ServerName/SNI is set
- v0.9.1Ligolo-ng v0.9.12026-08-11 · 2026-08-11 09:32 UTC
查看更新说明
Changelog
- bec34a6aed459e74e40caa0ae54d3808a7a7ee01 Merge pull request #193 from nicocha30/b-dosfixes
- bcfd4cc9b4ceae52c32cf103e91573dce8dd99f1 fix dos issues reported by @BenTheCyberOne
- v0.9Ligolo-ng v0.92026-07-13 · 2026-07-13 17:27 UTC
查看更新说明
Ligolo-ng Changelog
New Features & Enhancements
- UDP Port Scanning: Implemented faster UDP port scanning by handling ICMP port unreachable messages.
- Customization: Added configurable paths for the config file, history, and self-signed certificates.
- TCP Connections: Implemented configurable in-flight TCP connections (#168).
- Certificates: Implemented bind certificate fingerprint verification (#151).
- Architecture: ARM64 binaries are now built by default (@desterhuizen).
Bug Fixes
- Memory Management: Fixed memory leaks across multiple core components (
agent.go,relay.go,listeners.go,handlers.go, andhandler.go) (@CarrotCultivator). - Networking: Fixed return traffic issues for the reverse UDP listener (@noderaven).
- Code Quality: Resolved non-constant format string
veterrors during the build process (@desterhuizen).
Maintenance, Dependencies & CI/CD
- Dependencies: Updated core dependencies and the
ligolo-ng-websubmodule. - CI Build: Updated the Go version used in the CI pipeline.
Commits
- 60fb207404d35a0674874220a5b93de1d2bdcfb0 update ligolo-ng-web
- 3cffa3dd35245c4b2d13cbf572670cf337abbdca Merge pull request #190 from nicocha30/f-config
- 437428a095aacfde8f74cca6a6c2e39e484703d4 remove retired readme
- 1499252bae7d07a6f5cafefe5e3db141fcbfbb88 configurable paths for config, history and selfcerts
- 21228ea713e948021eb09144de795157c804c94c Merge pull request #189 from nicocha30/f-icmpportunreachable
- 9d6fb24f7de9aa78d202fc09e68e74815fac01d6 remove icmp handling in todo
- 8e9e3c6e3dde5be1352b7d0fc3e56b65900197e7 feat: faster udp port scanning with icmp port unreachable handling
- 5b4baa92a70e5a8c711a9ae2dc97ec52b1e6137b Merge pull request #188 from nicocha30/f-maxinflight
- 11dc09d78032871ac6d3c36145816a4a56897bad implement configurable inflight tcp conns #168
- 648c92ef839da547a29e5767163c55c5c8b76554 Merge pull request #187 from nicocha30/f-bindcertfingerprint
- 8fe479b4f5b9aaaa3b744939c01c90f1858fea42 implement #151
- cc147dff502a9eb4c83a92a1f1e23fd6fd6eca92 update go version in ci build
- 0bfa7c4e62957ee19f6d1075e8455c500e804fe4 update deps
- 26c383d044d29bf039caec1d224c5f3ee7ccfc81 Merge pull request #186 from desterhuizen/feat/arm64-builds
- 3023430a28722b904f2d68242e495f9ac17f88c6 Merge pull request #185 from desterhuizen/fix/printf-vet-format-string
- fb73cb6d2b3fb3b1b5f9d367597fefe169b95a52 Build arm64 binaries by default
- 50664c708165b9da202f660a98f7a4162cc40c69 Fix non-constant format string vet errors
- 1d5f466f6e50278b6382074a8943ba58968b88db Merge pull request #175 from CarrotCultivator/master
- 34dfb7717d89cbaa5d1da9e0d09b7069264d1896 Merge pull request #183 from noderaven/fix/reverse-udp-tunnel-return-traffic
- 860c838a126f309a015d7bfd62f2dc009b9dd732 fix reverse UDP listener return traffic
- 9682c22ecc6392e47ebe4770834715262cca0928 Update relay.go for memleak
- 601d1eca6d384f9080f434bac836a78c057f0144 Update handlers.go for memleak
- 566614c472d0d2508a0844e3830fd4683217b170 Update listeners.go for memleak
- 09da5eb3a65049c19900c4bd1fbd77da8181fbdf Update agent.go for memleak
- 53d644c13a44726ea2b9df930d44381b2cac5122 Update handler.go for memleak
- v0.8.3Ligolo-ng v0.8.32026-02-15 · 2026-02-15 13:26 UTC
查看更新说明
Changelog
- 913fe64e088d5db2185d392965bf4cd3dd1d9495 update websocket dependencies (close #156)
- 3d60ed67d61a1bca0b1a669f7991ac114eb67410 update dependencies
- 85562780d31ccd1479ce001aa09c17856a625a5c Merge pull request #172 from letmedr3am/dev
- 47af91692353ab8d03623893f6fa26a01a83893b Enhanced Interface Management Commands
- 01f6419dc0fc6e2d69fc82d72a9f9ba199827907 Improved Proxy Agent Recovery and Tunnel Management
- 8eacc8aee5a904546618de0c18da2b264e519522 Enhanced Agent Reconnection and Recovery
- 1f3c198169f1cbe206d13d846ce245b6eb1deb03 Merge pull request #167 from muzaffar1337/master
- f094fbde67b72626aebe51a7e641a59399483d10 feat: add --api-laddr flag and fix TLS initialization bug
- a4966ba1f87c0a257d93a10796187c467e63204b Merge pull request #165 from vipa0z/enhancement/improve-autoroute-ui
- ad9f21ee297db6aac846eebd955c4330aab4a5d3 Merge pull request #166 from nicocha30/f-insecureconns
- a170590d5b37795976602c510946fc1f9ddc1371 add file header
- b00e0d9ec06d2972f359d5d7f844d1eff43d0255 feat: insecure websockets
- 8624c3d31998a206839a9b5fc3c646d6ef114df6 autoroute enhancement:show existing routes for each interface when selecting which interface to attach a new route to.
- v0.8.2Ligolo-ng v0.8.22025-05-24 · 2025-05-24 19:04 UTC
查看更新说明
Changelog
- 82bec5be5e2368dd85448525cd63cc8a90b9734e fix #146 (interface cleanup) - fix #148 (listeners api not working)
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Ligolo-ng : Tunneling like a VPN

An advanced, yet simple, tunneling tool that uses TUN interfaces.
📑 Ligolo-ng Documentation (Setup/Quickstart)
[!TIP] Ligolo-ng 0.8 added a lot of new features, including:
- 🌐 API and a beautiful Web Interface thanks to L'ami du Raisin, allowing multiplayer!
- ⚙️ Simple configuration file, to keep your tunneling/proxy settings
- 🚦 Daemon mode, to run Ligolo-ng as a service
- 🔗 Auto-bind, to automatically configure tunneling whenever a specific agent connects
- 📶 Easy and automatic (autoroute) route and interface management on Windows, Linux, MacOS and BSD!
- 💀 Agent kill, to remotely terminate an agent
Please try it out!
Table of Contents
- Introduction
- Features
- Demo
- How is this different from Ligolo/Chisel/Meterpreter... ?
- How to use - documentation - tutorial
- Does it require Administrator/root access ?
- Supported protocols/packets
- Performance
- Caveats
- Todo
- Credits
Introduction
Ligolo-ng is a simple, lightweight and fast tool that allows pentesters to establish tunnels from a reverse TCP/TLS connection using a tun interface (without the need of SOCKS).
Features
- Tun interface (No more SOCKS/Proxychains!)
- Simple UI with agent selection and network information
- Easy to use and setup
- Automatic certificate configuration with Let's Encrypt
- Performant (Multiplexing)
- Does not require privileges on the agent
- Socket listening/binding on the agent
- Multiple platforms supported for the agent
- Can handle multiple tunnels
- Reverse/Bind Connection
- Automatic tunnel/listeners recovery (in case of network issues)
- Websocket support
Demo
How is this different from Ligolo/Chisel/Meterpreter... ?
Instead of using a SOCKS proxy or TCP/UDP forwarders, Ligolo-ng creates a userland network stack using Gvisor.
When running the relay/proxy server, a tun interface is used, packets sent to this interface are translated, and then transmitted to the agent remote network.
As an example, for a TCP connection:
- SYN are translated to connect() on remote
- SYN-ACK is sent back if connect() succeed
- RST is sent if ECONNRESET, ECONNABORTED or ECONNREFUSED syscall are returned after connect
- Nothing is sent if timeout
This allows running tools like nmap without the use of proxychains (simpler and faster).
How to use - documentation - tutorial
You will find the documentation for Ligolo-ng, as well as the steps to follow to get it up and running on the Ligolo-ng Documentation
Does it require Administrator/root access ?
On the agent side, no! Everything can be performed without administrative access.
However, on your relay/proxy server, you need to be able to create a tun interface.
Supported protocols/packets
- TCP
- UDP
- ICMP (echo requests)
Performance
You can easily hit more than 100 Mbits/sec. Here is a test using iperf from a 200Mbits/s server to a 200Mbits/s connection.
$ iperf3 -c 10.10.0.1 -p 24483
Connecting to host 10.10.0.1, port 24483
[ 5] local 10.10.0.224 port 50654 connected to 10.10.0.1 port 24483
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 12.5 MBytes 105 Mbits/sec 0 164 KBytes
[ 5] 1.00-2.00 sec 12.7 MBytes 107 Mbits/sec 0 263 KBytes
[ 5] 2.00-3.00 sec 12.4 MBytes 104 Mbits/sec 0 263 KBytes
[ 5] 3.00-4.00 sec 12.7 MBytes 106 Mbits/sec 0 263 KBytes
[ 5] 4.00-5.00 sec 13.1 MBytes 110 Mbits/sec 2 134 KBytes
[ 5] 5.00-6.00 sec 13.4 MBytes 113 Mbits/sec 0 147 KBytes
[ 5] 6.00-7.00 sec 12.6 MBytes 105 Mbits/sec 0 158 KBytes
[ 5] 7.00-8.00 sec 12.1 MBytes 101 Mbits/sec 0 173 KBytes
[ 5] 8.00-9.00 sec 12.7 MBytes 106 Mbits/sec 0 182 KBytes
[ 5] 9.00-10.00 sec 12.6 MBytes 106 Mbits/sec 0 188 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 127 MBytes 106 Mbits/sec 2 sender
[ 5] 0.00-10.08 sec 125 MBytes 104 Mbits/sec receiver
Caveats
Because the agent is running without privileges, it's not possible to forward raw packets. When you perform a NMAP SYN-SCAN, a TCP connect() is performed on the agent.
When using nmap, you should use --unprivileged or -PE to avoid false positives.
Todo
- Do not RST when receiving an ACK from an invalid TCP connection (nmap will report the host as up) ;
- Add mTLS support.
Credits
- Nicolas Chatelain <nicolas -at- chatelain.me>
- Jeremie Bedjai (Ligolo-ng-Web)
