用闲置的阿里云服务器使用 NPS 实现内网穿透

最近有个项目需要给外地的同事预览一下,但是公司没有可以公网访问的测试服务器,所以想到用内网穿透的方式让外地同事可以访问到我的本机。刚好我有一台阿里云的服务器,双十一打折买了3年,1000左右,2核8G,买完就一直闲置,这次刚好可以用上。

服务器

首先介绍一下我的服务器:

CPU&内存:2核(vCPU) 8 GiB 操作系统:Alibaba Cloud Linux 3.2104 LTS 64位

使用 docker 安装 NPS

下载yum源采用阿里云的镜像源

sh 复制代码
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

查看仓库中的所有版本,默认安装最新版本

sh 复制代码
yum list docker-ce --showduplicates | sort -r

安装docker-ce

sh 复制代码
yum install docker-ce -y

配置docker镜像源

sh 复制代码
vim /etc/docker/daemon.json

启动docker服务

sh 复制代码
systemctl start docker

拉取 NPS 镜像

sh 复制代码
docker pull ffdfgdfg/nps

启动 NPS

sh 复制代码
docker run -d --name=nps --restart=always --net=host -v /opt/nps/conf:/conf ffdfgdfg/nps

配置安全组

默认的服务器不会开启这几个端口,所以你需要手动去添加:

  • 8080: NPS web 管理端口。
  • 8024: 服务端客户端通信端口。
  • 5173: 这个是我本地服务的端口,所以服务器也用了同样的,这个自定义即可。

如果端口和你现任的端口有冲突,可以查看配置文档去修改。

Web 管理

NPS 提供了 web 界面,方便配置,做好上面的步骤后,可通过,公网ip:web界面端口(默认8080),用户名 admin,密码 123 登录访问。

首先在菜单栏中进入客户端,点击新增

  • 备注:随便填
  • Basic 认证用户名:不用管
  • Basic 认证密码:不用管
  • 唯一验证密钥:不用管
  • 压缩和加密:是

创建后,可以看到新增的客户端,链接状态是离线,没有问题。点击左侧的加号,可以看到客户端命令,这个很重要,在客户端需要执行,用来与服务器链接。

还有就是看一下客户端 ID,上图中的第一列。

随后菜单选择 TCP 隧道,点击新增。

  • 模式:TCP 隧道
  • 客户端ID:填客户端页面中你创建的那个客户端 ID
  • 服务端端口:这里我选择了和我本机项目一样的端口,5173,主要是供外网访问时的端口,你可以填任何。
  • 目标 (IP:端口):这里指的是你的本机,IP 就是本机 127.0.0.1 即可,端口是你的项目端口,我这里是 5173。

状态是离线是正常的,因为我们还没有在客户端进行配置。

本机

我本机是 mac,访问 GitHub 去下载对应的客户端,github.com/ehang-io/np...

这里记得选 client 后缀的文件。

我在 ~/ 路径下创建了 npc 文件夹,并解压到这里。

进入 ~/npc 运行:

sh 复制代码
./npc -server=*.*.*.*:8024 -vkey=av3*****yiepb1 -type=tcp

这段代码就是上文提到的创建的客户端后展示的那段代码。

如果你看到 Successful connection with server 证明链接成功了。

这时看到 web 界面中,状态也变成了在线。

之后通过公网 IP+端口 访问一下,发现项目已经可以在公网正常访问了。

参考

NPS 中文文档

相关推荐
weixin79893765432...11 分钟前
深入浅出 WebSocket 协议
websocket·http·socket·sse
callJJ31 分钟前
WebSocket 两种实现方式对比与入门
java·python·websocket·网络协议·stomp
唯情于酒10 小时前
Docker学习
学习·docker·容器
喵叔哟11 小时前
20.部署与运维
运维·docker·容器·.net
汤愈韬13 小时前
NAT策略
网络协议·网络安全·security·huawei
汤愈韬13 小时前
Full Cone Nat
网络·网络协议·网络安全·security·huawei
今晚务必早点睡13 小时前
系统通信方式实战详解:HTTP、RPC、MQ、WebSocket 各用在什么场景?(附 SDK 示例)
websocket·http·rpc
松涛和鸣14 小时前
49、智能电源箱项目技术栈解析
服务器·c语言·开发语言·http·html·php
德育处主任14 小时前
『NAS』在群晖部署一个文件加密工具-hat.sh
前端·算法·docker
汤愈韬15 小时前
NAT ALG (应用层网关)
网络·网络协议·网络安全·security·huawei