综合 Docker搭建轻量高性能的内网穿透代理服务

2024-11-17 07:40:19 +0800 CST views 1228

Docker搭建轻量高性能的内网穿透代理服务

系统介绍

内网穿透NPS(Network Penetration Server)是一款由TalentYoung开发的轻量级、高性能的内网穿透代理服务器。NPS 支持TCP、UDP、HTTP等多种协议,并提供了强大的功能和灵活的配置选项,能够帮助用户轻松实现公网对内网服务的访问。

基本特点

  • 轻量级与高性能:NPS 采用 Go 语言编写,性能优异且轻量。
  • 多协议支持:支持 TCP、UDP、HTTP 协议,甚至提供 socks5 代理,适合不同内网穿透场景。
  • 跨平台使用:支持 Windows、Linux、MacOS、Android 等多个平台。
  • 易于部署:支持源码、安装包、Docker 等多种部署方式。
  • 功能强大的 Web 管理端:NPS 提供直观易用的 Web 界面进行客户端与隧道管理。

使用场景

  • 访问内网网站:外网用户通过 NPS 访问内网中的网站。
  • 本地支付接口调试:开发者调试内网支付接口。
  • SSH 访问:安全地通过 SSH 访问内网服务器。
  • 远程桌面:外网用户远程访问内网计算机桌面。
  • 内网 DNS 解析:支持内网 DNS 解析,方便内网用户访问外部资源。

项目优势

  • 简单易用:提供简洁的配置文件和命令行工具,配置简单。
  • 安全可靠:支持 SSL/TLS 加密传输,保障数据安全。
  • 开源免费:遵循 MIT 许可证,开源免费。

官方文档: NPS官方文档
GitHub地址: NPS GitHub
Docker镜像: NPS Docker镜像
下载客户端: NPS 客户端下载


安装教程

服务端部署(Docker方式)

  1. 安装Docker

    首先更新系统并安装 Docker 及 Docker Compose:

    sudo apt update
    sudo apt install -y docker.io docker-compose
    
  2. 安装 NPS 服务端

    使用 Docker 拉取并运行 NPS 服务端镜像:

    sudo docker run -d --name nps --net=host -v /root/docker/nps/config:/nps/conf oldiy/nps-server
    
  3. 停止运行容器

    修改配置前,需要先停止容器:

    sudo docker stop nps
    
  4. 修改配置文件

    打开配置文件 nps.conf 进行修改:

    sudo vim /root/docker/nps/config/nps.conf
    

    配置示例:

    bridge_port=8024    # 客户端连接端口
    web_username=admin   # 后台管理用户名
    web_password=123     # 后台管理密码
    web_port=8080        # 后台管理端口
    
  5. 启动容器

    配置修改完毕后,重启 NPS 容器:

    sudo docker start nps
    
  6. 访问管理页面

    服务启动后,浏览器访问 http://服务器IP:8080,使用配置文件中的 admin/123 进行登录。


客户端部署

  1. 下载客户端

    根据操作系统下载对应的 NPS 客户端:NPS 客户端下载

  2. 编写启动脚本

    编写启动脚本 start.bat,内容如下:

    npc.exe -server=xxx.xxx.xxx.xxx:8024 -vkey=0vkyonemij0f4r64
    

    vkey 为客户端秘钥,可以通过 NPS 管理后台获取。

  3. 启动客户端

    双击 start.bat 启动客户端连接。


总结

通过 Docker 部署 NPS 内网穿透服务,可以轻松实现内网服务的公网访问,并支持多种协议的灵活配置。NPS 的轻量级、高性能、多平台支持使其成为内网穿透服务的理想选择,同时提供了强大的安全性和简单易用的管理界面。

images

复制全文 生成海报 网络 代理 开源软件 Docker 安全

推荐文章

XSS攻击是什么?
2024-11-19 02:10:07 +0800 CST
api远程把word文件转换为pdf
2024-11-19 03:48:33 +0800 CST
免费常用API接口分享
2024-11-19 09:25:07 +0800 CST
10个几乎无人使用的罕见HTML标签
2024-11-18 21:44:46 +0800 CST
浅谈CSRF攻击
2024-11-18 09:45:14 +0800 CST
PHP 微信红包算法
2024-11-17 22:45:34 +0800 CST
Go 协程上下文切换的代价
2024-11-19 09:32:28 +0800 CST
Linux查看系统配置常用命令
2024-11-17 18:20:42 +0800 CST
支付页面html收银台
2025-03-06 14:59:20 +0800 CST
Vue3中如何实现插件?
2024-11-18 04:27:04 +0800 CST
MySQL用命令行复制表的方法
2024-11-17 05:03:46 +0800 CST
乐观锁和悲观锁,如何区分?
2024-11-19 09:36:53 +0800 CST
js生成器函数
2024-11-18 15:21:08 +0800 CST
Vue3 组件间通信的多种方式
2024-11-19 02:57:47 +0800 CST
PHP中获取某个月份的天数
2024-11-18 11:28:47 +0800 CST
Vue3中的v-slot指令有什么改变?
2024-11-18 07:32:50 +0800 CST
JS 箭头函数
2024-11-17 19:09:58 +0800 CST
回到上次阅读位置技术实践
2025-04-19 09:47:31 +0800 CST
jQuery `$.extend()` 用法总结
2024-11-19 02:12:45 +0800 CST
解决python “No module named pip”
2024-11-18 11:49:18 +0800 CST
MySQL 日志详解
2024-11-19 02:17:30 +0800 CST
# 解决 MySQL 经常断开重连的问题
2024-11-19 04:50:20 +0800 CST
四舍五入五成双
2024-11-17 05:01:29 +0800 CST
使用Ollama部署本地大模型
2024-11-19 10:00:55 +0800 CST
程序员茄子在线接单