论坛首页 安全编程开发区 阅读主题

[原创] C语言编写,轻量级端到端内网穿透工具

452 浏览 0 回复
#1 楼主 2026-06-01 21:08:57
【内网穿透】Nhop 实战指南:两大核心部署场景与配置详解github地址:github.com/yu47/Nhop写在前面大多数人使用内网穿透,都是为了“把内网服务暴露给公网”,方便进行 Web 测试或提供外部访问。但是,如果我们要访问的内网服务包含了敏感数据(如公司内部的 Gitlab、私有数据库),直接将其暴露在公网 IP 上无异于“裸奔”,极易遭到爆破和扫描。这时,我们就需要一种更安全的“内网中继”方案。详细请看场景2今天,我们就来深度剖析并实战演练 Nhop 的两大核心部署模型:对外暴露服务模型 与 内网访客中继模型(Client-Server-Client) 。Nhop 的核心优势极致轻量:由纯 C 语言编写,编译后的可执行文件体积极小(几百KB级别),运行时的内存占用甚至可以忽略不计。高性能,低延迟:底层直接采用高效的 I/O 多路复用模型,数据转发效率极高,没有多余的 GC(垃圾回收)开销。跨平台支持:支持在 Linux、Windows以及各种基于 ARM 的嵌入式系统上运行。极简配置:抛弃了复杂的配置文件,通过几条简单的命令行参数即可拉起服务,非常适合极客和喜欢“开箱即用”的开发者。️ 场景 1:对外暴露服务 (Server-Agent 模型)这是最经典的内网穿透场景。通过部署在公网的 Server 节点,直接将内网的服务端口映射到公网上,供外部用户直接访问。流量路径External Client (外部访客)  ->  Nhop Server (公网)  ->  Nhop Agent (内网)  ->  Target Service (目标服务)
实战配置指南Server 示例文件:conf/node_scene1_c_hub.confAgent 示例文件:conf/node_scene1_b_agent.conf第一步:启动 Nhop Server (公网端)在公网 VPS 上配置并启动 Server:./Nhop -n server.conf
server.conf 配置如下:mode=server 
bind_addr=0.0.0.0:9000 
token=nhop-demo 
crypto_mode=off
第二步:启动 Nhop Agent (内网端)在运行目标服务(如 8080 端口的 Web 服务)的内网机器上启动 Agent:./Nhop -n agent.conf
agent.conf 配置如下:mode=agent 
server_addr=127.0.0.1:9000   # 实际使用中,请将此处替换为 Server 的公网 IP 
token=nhop-demo 
crypto_mode=off  

[service.web] 
target_addr=127.0.0.1:8080   # 本地实际运行的服务端口 
listen_addr=0.0.0.0:20880    # 期望 Server 在公网上暴露的访问端口
配置生效后,外部用户即可通过访问 Server公网IP:20880 直接访问到你内网的 8080 服务。️ 场景 2:通过 Server 访问内网服务 (内网访客中继模型)在“场景2”中,公网的 VPS 不再直接对外开放业务端口,而是纯粹作为一个 数据中转站(Relay Hub) 。访问者所在的设备也需要运行一个 Nhop 客户端,通过公网服务器的身份校验后,与目标内网设备建立起一条安全的端到端隧道。架构图解[内网环境 A - 目标机器]          [公网环境 - VPS]            [内网环境 B - 访客机器] 
运行业务 (如 MySQL 3306)                              需要连接 MySQL 的电脑        
        |                      |                     | 
+---------------+              +---------------+             +---------------+ 
 Nhop Agent    |====== 安全隧道 =======|  Nhop Server  |====== 安全隧道 ==|  Nhop Client | 
 +---------------+  (主动连接 Server)  +---------------+  (主动连接 Server)  +---------------+
流量路径: Client (访客) -> Server (中转) -> Agent (被访端) -> Target Service (目标服务)场景2的核心优势极致安全:公网 VPS 不开放任何业务端口(如 3306、22),黑客即使扫描你的公网 IP,也根本找不到任何服务的入口。按需打通:只有运行了正确配置的 Nhop 访客客户端,才能接入这条隧道,相当于在公网上拉了一根隐形的私有网线。穿透隔离网络:完美解决两个处于不同 NAT 环境下的局域网设备互访问题。????️ 实战配置指南假设我们有如下环境:VPS 服务器:IP 198.51.100.1,用于运行 Nhop Server。内网目标机(A) :运行着 MySQL 数据库,端口 3306。内网访客机(B) :你的笔记本,想要通过本地的 33060 端口安全连接到机器A的数据库。第一步:在 VPS 启动 Nhop Server (中转节点)服务器端主要负责接收两边客户端的连接并进行流量桥接。Bash启动 Nhop 服务端 
./Nhop -n server.conf
server.conf 配置:(注:加入了 token 验证机制,防止非法客户端蹭用你的中转服务器。)mode=server 
bind_addr=0.0.0.0:9000 
token=nhop-demo 
crypto_mode=off
第二步:在目标机器(A)启动 Nhop Agent (被访端)在运行 MySQL 的内网机器上,启动客户端。启动客户端A 
./Nhop -n agent.conf
agent.conf 配置:mode=agent 
server_addr=198.51.100.1:9000 
token=nhop-demo 
crypto_mode=off  

[service.db] 
target_addr=127.0.0.1:3306
第三步:在访客机器(B)启动 Nhop Client (访问端)在你的笔记本上,同样启动 Nhop 客户端,通过把远程的 service.db 映射到本地。启动客户端B (访客模式) 
./Nhop -n client.conf
client.conf 配置:mode=client 
server_addr=198.51.100.1:9000  # 实际使用中,请替换为 Server 的公网 IP 
token=nhop-demo 
crypto_mode=off  

[service.db] 
li

...(已截断)

---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-291289.htm

暂无回复,快来抢沙发吧!

请登录后参与讨论

立即登录 注册账号