ChireNat 是一个基于 C++17 开发的轻量级安全 NAT 穿透解决方案
## 项目简介ChireNat 是一个基于 C17 开发的轻量级安全 NAT 穿透解决方案支持 TCP 端口映射通过 SSL/TLS 加密通信保证数据安全。### 主要特性- ✅ **跨平台支持**Windows 和 Ubuntu Linux- ✅ **SSL/TLS 加密**基于 OpenSSL 实现安全通信- ✅ **端口映射**支持多端口同时映射- ✅ **自动重连**网络断开后自动重连- ✅ **心跳检测**保持连接活跃状态- ✅ **系统托盘**Windows 客户端支持最小化到系统托盘- ✅ **多线程处理**高效的并发连接处理### 技术栈- **语言**: C17- **加密库**: OpenSSL 1.1.1 / 3.x- **构建工具**: CMake / MSVC / GCC- **平台**: Windows 10/Ubuntu 20.04---## 快速开始### 环境要求| 平台 | 要求 ||------|------|| Windows | Visual Studio 2022 或更高版本 || Ubuntu | build-essential, libssl-dev |### OpenSSL 安装#### Windows1. 下载地址https://slproweb.com/products/Win32OpenSSL.html2. 选择 **Win64 OpenSSL v1.1.1w** 或 **Win64 OpenSSL v3.x**Development Version3. 安装到默认路径 C:\OpenSSL-Win64#### Ubuntubashsudo apt updatesudo apt install -y libssl-dev### 编译#### Windowsbash# 使用脚本编译客户端scripts/build_client_vs2022.bat# 使用脚本编译服务端scripts/build_server_vs2022.bat#### Ubuntubash# 编译客户端bash scripts/build_client_ubuntu.sh# 编译服务端bash scripts/build_server_ubuntu.sh#### CMakebashmkdir build cd buildcmake ..make -j$(nproc)### 运行#### 服务端bash# Windowsbin/nat_server.exe config.ini# Ubuntu./bin/nat_server config.ini#### 客户端bash# Windowsbin/nat_client.exe config.ini# Ubuntu./bin/nat_client config.ini---## 配置文件### 服务端配置 (config.ini)ini[server]; 控制端口客户端通过此端口连接ctrl_port 9000; 连接密码客户端必须匹配此密码password chirenat_pass; 工作线程数worker_threads 4; 缓冲区大小字节buf_size 65536; 最大并发连接数max_connections 1024; 是否启用日志1启用0禁用log_enable 1; 日志级别0DEBUG, 1INFO, 2WARN, 3ERRORlog_level 2; 日志输出目录log_path ./log/### 客户端配置 (config.ini)ini[client]; 服务端公网 IP 地址server_ip your_server_ip; 服务端控制端口server_ctrl_port 9000; 连接密码必须与服务端一致password chirenat_pass; 工作线程数worker_threads 4; 缓冲区大小字节buf_size 65536; 重连间隔秒reconnect_interval 3; 心跳间隔秒heartbeat_interval 3; 是否启用日志1启用0禁用log_enable 1; 日志级别0DEBUG, 1INFO, 2WARN, 3ERRORlog_level 2; 日志输出目录log_path ./log/[mappings]; 端口映射规则服务端端口,本地IP,本地端口; 示例将服务端的 8080 端口映射到本地 127.0.0.1:80mapping_1 8080,127.0.0.1,80; 示例将服务端的 3389 端口映射到本地 127.0.0.1:3389远程桌面mapping_2 3389,127.0.0.1,3389; 示例将服务端的 8081 端口映射到局域网内其他设备mapping_3 8081,192.168.1.100,8080---## 项目结构ChireNat/├── bin/ # 编译输出目录│ ├── nat_client.exe # 客户端可执行文件│ └── nat_server.exe # 服务端可执行文件├── src/ # 源代码目录│ ├── client/ # 客户端代码│ │ └── nat_client.cpp│ ├── server/ # 服务端代码│ │ └── nat_server.cpp│ └── common/ # 公共代码预留├── include/ # 头文件目录│ └── chirenat/ # 项目头文件│ ├── logger.h # 日志模块│ ├── tray_icon.h # 系统托盘模块│ └── thread_pool.h # 线程池模块├── scripts/ # 编译脚本│ ├── build_client_vs2022.bat # Windows客户端编译│ ├── build_server_vs2022.bat # Windows服务端编译│ ├── build_client_ubuntu.sh # Ubuntu客户端编译│ ├── build_server_ubuntu.sh # Ubuntu服务端编译│ ├── generate_cert.bat # 证书生成脚本│ ├── package.bat # 打包脚本│ └── chirenat.service # Linux服务配置├── tests/ # 测试目录预留├── assets/ # 资源文件│ └── logo.png # 系统托盘图标├── certs/ # SSL 证书│ ├── server.crt # 服务端证书│ └── server.key # 服务端私钥├── lib/ # 第三方依赖库预留├── CMakeLists.txt # CMake 配置├── LICENSE # 开源许可证└── README.md # 项目说明---## 使用说明### 部署流程1. **准备公网服务器**需要一台具有公网 IP 的服务器如阿里云、腾讯云等2. **安装依赖**在服务器上安装 OpenSSL 开发库3. **编译服务端**在服务器上编译 nat_server4. **生成证书**使用 scripts/generate_cert.bat 生成 SSL 证书5. **配置服务端**修改 config.ini设置密码和端口6. **启动服务端**运行 nat_server.exe 或 ./nat_server7. **配置客户端**修改客户端的 config.ini设置服务器 IP 和端口映射8. **启动客户端**运行 nat_client.exe 或 ./nat_client9. **访问服务**通过服务器的公网 IP 和映射端口访问内网服务### 端口映射示例假设服务端公网 IP 为 123.45.67.89配置如下ini[mappings]mapping_1 8080,127.0.0.1,80mapping_2 3389,127.0.0.1,3389则可以通过以下方式访问内网服务| 访问地址 | 实际访问 | 说明 ||----------|----------|------|| http://123.45.67.89:8080 | 内网 127.0.0.1:80 | 访问内网 Web 服务 || 123.45.67.89:3389 | 内网 127.0.0.1:3389 | 远程桌面连接 |### 系统托盘功能WindowsWindows 客户端支持系统托盘功能- **双击托盘图标**显示或隐藏客户端窗口- **右键菜单**- **Open Nat**显示/隐藏客户端窗口- **Exit**退出客户端### 证书生成使用脚本生成自签名证书bash# Windowsscripts/generate_cert.bat# Ubuntubash scripts/generate_cert.sh生成的证书会存放在 certs/ 目录下。### Linux 服务部署将 ChireNat 部署为 Linux 系统服务1. 修改 scripts/chirenat.service 中的路径配置2. 复制到系统服务目录bashsudo cp scripts/chirenat.service /etc/systemd/system/3. 启用并启动服务bashsudo systemctl daemon-reloadsudo systemctl enable chirenatsudo systemctl start chirenat---## 常见问题### Q: 编译时提示找不到 OpenSSL**A:** 确保已安装 OpenSSL 开发版本并配置正确的路径。### Q: 客户端无法连接服务端**A:** 检查以下几点1. 服务端是否正常运行2. 服务器防火墙是否开放控制端口默认为 90003. 客户端配置中的服务器 IP 和端口是否正确4. 密码是否与服务端一致### Q: 端口映射不生效**A:** 检查以下几点1. 服务器防火墙是否开放映射的端口2. 本地服务是否正常运行3. 映射规则格式是否正确服务端端口,本地IP,本地端口### Q: Windows 客户端最小化后找不到窗口**A:** 客户端已最小化到系统托盘双击托盘图标即可显示窗口。---## 许可证### ChireNat 项目许可证MIT License - 详见 [LICENSE](LICENSE)### 第三方依赖许可证| 依赖 | 许可证 | 说明 ||------|--------|------|| OpenSSL | OpenSSL License | 加密库用于 SSL/TLS 通信 |### 源码github

相关新闻

鸿蒙 ArkTS 实战:Customer Reply Draft 从轻量生成到草稿管理完整解析

鸿蒙 ArkTS 实战:Customer Reply Draft 从轻量生成到草稿管理完整解析

鸿蒙 ArkTS 实战:Customer Reply Draft 从轻量生成到草稿管理完整解析 前言 Customer Reply Draft 是一个面向 客户回复草稿 的鸿蒙 ArkTS 单页工具。它把主题输入、数量统计、提示备注和状态保存放在同一屏,适合快速生成、筛选和沉淀内容草稿。 项目…

2026/7/19 5:24:13 阅读更多 →
C++模板从入门到实战:函数模板、类模板与智能指针实现

C++模板从入门到实战:函数模板、类模板与智能指针实现

1. 项目概述:为什么C模版是绕不开的坎?如果你写过C,尤其是写过一些需要处理多种数据类型的通用代码,比如一个能比较int、double、string大小的函数,或者一个能存储任意类型元素的容器,那你一定对重复劳动深…

2026/7/19 5:24:13 阅读更多 →
Python贪吃蛇游戏开发实战:从零编码到打包EXE的完整指南

Python贪吃蛇游戏开发实战:从零编码到打包EXE的完整指南

1. 项目概述与核心价值 最近在社区里看到不少朋友,尤其是刚接触编程的新手,都在问同一个问题:学Python到底能做什么?看了一堆语法,写了几行“Hello World”,感觉离做出一个能实际运行、甚至能分享给朋友用的…

2026/7/19 5:24:13 阅读更多 →

最新新闻

如何3步找到最适合品牌设计的免费字体?Outfit字体完整解析

如何3步找到最适合品牌设计的免费字体?Outfit字体完整解析

如何3步找到最适合品牌设计的免费字体?Outfit字体完整解析 【免费下载链接】Outfit-Fonts The most on-brand typeface 项目地址: https://gitcode.com/gh_mirrors/ou/Outfit-Fonts 你是不是经常为品牌设计找不到合适的字体而烦恼?想要一款既专业…

2026/7/19 12:29:22 阅读更多 →
ROS2 Jazzy参数化类开发与C++实践指南

ROS2 Jazzy参数化类开发与C++实践指南

1. ROS2 Jazzy参数化类开发全景解析在机器人操作系统(ROS)的演进历程中,ROS2 Jazzy作为最新LTS版本,其参数系统实现了革命性改进。不同于简单的全局变量,ROS参数系统提供了动态配置、实时监控和生命周期管理等企业级特性。本教程将深入讲解如…

2026/7/19 12:29:22 阅读更多 →
WSL2环境下Android开发环境配置与优化指南

WSL2环境下Android开发环境配置与优化指南

1. 为什么选择WSL2进行Android开发? 在Windows 11环境下使用WSL2进行Android系统开发,本质上是在微软的虚拟化技术基础上构建完整的Linux开发环境。与传统的双系统或纯虚拟机方案相比,这种方案有几个显著优势: 文件系统性能 &am…

2026/7/19 12:29:22 阅读更多 →
Cursor直连MySQL/PostgreSQL/SQLite:手把手配置+性能调优(附12个真实报错解决方案)

Cursor直连MySQL/PostgreSQL/SQLite:手把手配置+性能调优(附12个真实报错解决方案)

更多请点击: https://intelliparadigm.com 第一章:Cursor数据库直连的核心原理与适用场景 Cursor 作为基于 LLM 的智能编程助手,其数据库直连能力并非传统意义上的驱动级连接,而是通过内置的 SQL 运行时环境与安全沙箱机制&#…

2026/7/19 12:29:22 阅读更多 →
Ohook技术指南:深入理解Office订阅版本完整功能激活方案

Ohook技术指南:深入理解Office订阅版本完整功能激活方案

Ohook技术指南:深入理解Office订阅版本完整功能激活方案 【免费下载链接】ohook An universal Office "activation" hook with main focus of enabling full functionality of subscription editions 项目地址: https://gitcode.com/gh_mirrors/oh/ohoo…

2026/7/19 12:29:22 阅读更多 →
dbKoda可视化查询编辑器:如何提升MongoDB开发效率的7个技巧

dbKoda可视化查询编辑器:如何提升MongoDB开发效率的7个技巧

dbKoda可视化查询编辑器:如何提升MongoDB开发效率的7个技巧 【免费下载链接】dbkoda State of the art MongoDB IDE 项目地址: https://gitcode.com/gh_mirrors/db/dbkoda dbKoda是一款现代化的开源MongoDB集成开发环境,它通过可视化查询编辑器帮…

2026/7/19 12:28:22 阅读更多 →

日新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:00:40 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:00:40 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:00:40 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:00:40 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:00:40 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:00:40 阅读更多 →

月新闻