IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 内网穿透神器NPS的使用 -> 正文阅读

[系统运维]内网穿透神器NPS的使用

内网穿透是指将内网中的软件服务通过网络代理方式暴露给广域网用户。可以实现内网穿透的方式很多,比如通过防火墙硬件、网络穿透软件来进行实现。本文主要介绍通过NPS软件实现典型的内网穿透。

NPS介绍

nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。

其官方网站为:https://ehang-io.github.io/nps
其官网文档对软件的安装、使用描述的非常完整,基本根据官方文档就可以进行顺利安装与使用。

基本概念

了解该软件的使用,首先需要了解一个基本的内网穿透使用场景。

  • 服务器端,一般安装在公网服务器上,是所有内网资源对外的统一入口。
  • 客户端,一般安装在内网服务器上,是内网服务器与公网服务器的桥梁。
  • 客户端连接端口,客户端使用该秘钥连接服务端连接端口建立长连接,用于将外网服务器请求信息转发至对应客户端,对应客户端也通过该端口返回相关信息。
  • 客户端秘钥,在服务端部署完成后,需要建立客户端秘钥,并在客户端连接时需要使用该秘钥进行连接。

一个服务器端,可以对应多个客户端。在服务器端的不同端口,可以映射在不同客户端的对应本地端口之上。

典型场景

本文我们设计一个最常见的场景,来说明整个软件的使用过程。我们设定基本需求如下。

  1. 我们有一台具备公网IP的服务器,服务器名称为public-server,操作系统为linux
  2. 我们有两台内网服务器inner-server1(linux)、inner-server2(windows)
  3. 我们将公网服务器的8081端口,映射至inner-server1:80;8082端口映射至inner-server2:80端口。
  4. 两个代理协议均为TCP协议

操作步骤

外网服务器public-server(linux)服务端nps安装

  • 首先,需要登录其github项目发布版本页面 (https://github.com/ehang-io/nps/releases ) 下载对应版本服务端nps软件。根据public-server的情况这里我们下载,linux_amd64_server.tar.gz版本。

  • 通过ssh登录public-server,并将文件上传至对应安装目录,需要首先进行解压缩。(假定文件上传至目录/usr/nps)

tar -xzvf linux_amd64_server.tar.gz

  • 解压缩完成后进入解压目录,需要执行对应安装命令,以保障我们可以将nps相关命令与加载至bin资源下
sudo ./nps install

  • 之后我们需要启动相关服务端软件,并在控制台查看是否启动成功。
sudo nps start

配置网络代理并开启publiic-server WEB服务端端口

  • 在启动成功后,我们需要打开防火墙8080端口,使得可以通过浏览器登录其管理台。同时需要打开8024端口,使得客户端可以连接到服务端通讯端口。
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --permanent --add-port=8024/tcp
sudo firewall-cmd --reload 

  • 使用浏览器登录相关端口,提示用户名称与密码。使用如下默认用户名密码进行登录。
admin/123

登录成功后一定要修改相关密码,修改配置文件 nps.conf

sudo vim /etc/nps/conf/nps.conf
web_username
web_password

  • 重新启动相关服务并尝试重新登录
sudo nps stop
sudo nps start

通过web管理台配置客户端接入信息

  • 使用浏览器登录相关端口,提示用户名称与密码。使用如下修改后用户名密码进行登录。

  • 点击 客户端 -> 新增 ,依次填写 备注(inner-server1)允许客户端通过配置文件连接(是)压缩(是)加密(是),不填写Basic 认证用户名Basic 认证密码唯一验证密钥

  • 点击 客户端 -> 新增 ,依次填写 备注(inner-server2)允许客户端通过配置文件连接(是)压缩(是)加密(是),不填写Basic 认证用户名Basic 认证密码唯一验证密钥

  • 新建完成后查看客户端清单,保存好两台服务器自动生成的唯一验证密钥客户端ID备用,在这里我们假定其分别为“client-key”、“client-id”

内网服务器inner-server1安装npc(linux)客户端并连接

  • 需要登录其github项目发布版本页面 ( https://github.com/ehang-io/nps/releases ) 下载对应版本客户端nps软件。根据public-server的情况这里我们下载,linux_amd64_client.tar.gz 版本。

  • 通过ssh登录inner-server1,并将文件上传至对应安装目录,需要首先进行解压缩。(假定文件上传至目录/usr/npc)

tar -xzvf linux_amd64_client.tar.gz

  • 解压缩完成后进入解压目录,需要执行对应安装命令,以保障我们可以将npc相关命令与加载至bin资源下,同时设置服务器ip地址端口以及连接秘钥(上一步新建客户端时自动生成并备用的信息)
sudo ./npc install -server=public-server:8024 -vkey=client-key

  • 之后我们需要启动相关服务端软件,并在控制台查看是否启动成功。
sudo npc stop
sudo npc start

内网服务器inner-server2安装npc(windows)客户端并连接

  • 需要登录其github项目发布版本页面 ( https://github.com/ehang-io/nps/releases ) 下载对应版本客户端nps软件。根据public-server的情况这里我们下载,windows_amd64_client.tar.gz 版本。

  • 通过ssh登录inner-server1,并将文件上传至对应安装目录,需要首先进行解压缩。(假定文件上传至目录D:\npc)

tar -xzvf windows_amd64_client.tar.gz 

  • 解压缩完成后进入解压目录,需要执行对应安装命令,同时设置服务器ip地址端口以及连接秘钥(上一步新建客户端时自动生成并备用的信息)。
npc.exe install -server=public-server:8024 -vkey=inner-server2唯一验证密钥

  • 之后我们需要启动相关服务端软件,并在控制台查看是否启动成功。
npc.exe stop
npc.exe start

外网服务器public-server(linux)服务端端口映射配置

  • 使用浏览器登录相关端口,提示用户名称与密码。使用如下修改后用户名密码进行登录。
  • 在此需要使用到上文谈到创建客户端后自动生成的客户端ID
  • 选择TCP 隧道->新增 ,依次填写 模式(TCP)、客户端ID(client-id)、备注(inner-server1-80)、**服务端端口(8081)、目标(127.0.0.1:80)
  • 选择TCP 隧道->新增 ,依次填写 模式(TCP)、客户端ID(client-id)、备注(inner-server2-80)、**服务端端口(8082)、目标(127.0.0.1:80)
  • 打开public-server相关防火墙
sudo firewall-cmd --permanent --add-port=8081/tcp
sudo firewall-cmd --permanent --add-port=8082/tcp
sudo firewall-cmd --reload 

  • 测试访问public-server:8081/8082端口并观察服务端、客户端日志进行验证转发是否成功。

总结

至此,我们基于nps完成了最常见的内网穿透配置,其实nps所支持的协议、操作系统非常多,大家可以根据官方文档进行逐步学习、验证即可。整体系统的可用性非常好,我部署了一年没有出现过任何问题。

版权声明,本文首发于 数字魔盒 https://www.dm2box.com/ 欢迎转载。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 14:38:04  更:2021-07-22 14:40:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 19:07:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码