V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
461229187
V2EX  ›  程序员

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

  •  
  •   461229187 · 144 天前 · 1978 次点击
    这是一个创建于 144 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    服务器

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

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

    使用 docker 安装 NPS

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

    wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    

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

    yum list docker-ce --showduplicates | sort -r
    

    安装 docker-ce

    yum install docker-ce -y
    

    配置 docker 镜像源

    vim /etc/docker/daemon.json
    

    启动 docker 服务

    systemctl start docker
    

    拉取 NPS 镜像

    docker pull ffdfgdfg/nps
    

    启动 NPS

    docker run -d --name=nps --restart=always --net=host -v /opt/nps/conf:/conf ffdfgdfg/nps
    

    配置安全组

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

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

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

    km2h3y.png

    Web 管理

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

    ioeeil.png

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

    5zbara.png

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

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

    k3jjil.png

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

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

    a2v8e7.png

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

    1bg9qv.png

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

    本机

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

    a1dob7.png

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

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

    进入 ~/npc 运行:

    ./npc -server=*.*.*.*:8024 -vkey=av3*****yiepb1 -type=tcp
    

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

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

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

    oh4uul.png

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

    参考

    NPS 中文文档

    11 条回复    2024-08-06 08:09:21 +08:00
    githmb
        1
    githmb  
       144 天前
    太复杂了,还不如这个三板斧的,直接在命令行就启动了:

    https://github.com/rust-net/remote-bind
    gxt92
        2
    gxt92  
       144 天前
    公司网管没发现?
    elboble
        3
    elboble  
       144 天前
    依稀记得 nps 某个版本前有漏洞,容易被黑
    bigshawn
        4
    bigshawn  
       144 天前
    好复杂啊,还是比较喜欢 wg
    guanzhangzhang
        5
    guanzhangzhang  
       144 天前
    liaohongxing
        6
    liaohongxing  
       143 天前
    推荐一下 gost
    falcon05
        7
    falcon05  
       143 天前 via iPhone
    阿里云还能直接拉 docker 镜像?
    onichandame
        8
    onichandame  
       143 天前
    看一下 cloudflare tunnel
    lovelylain
        9
    lovelylain  
       143 天前 via Android
    不符合很多公司的安全规范
    461229187
        10
    461229187  
    OP
       143 天前
    @githmb 这个真方便啊
    461229187
        11
    461229187  
    OP
       143 天前
    @gxt92 有网管,我还用搞这个?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5461 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 08:06 · PVG 16:06 · LAX 00:06 · JFK 03:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.