小铁的博客

NPS篇内网穿透、远程访问详细配置教程

前言

随着科技发展日新月异,我们越来越需要软件,越来越依赖互联网。但是全球IPv4地址池即将耗尽,各地运营商开始逐步收回IPv4地址。那么家庭宽带没有公网IP,同时又想发布本地服务到公网应该怎么办呢?本文就是为了解决这个问题,通过 内网穿透 技术,我们能够实现安全、稳定地发布本地服务到公网。不用担心,一切都很简单,请耐心一点继续往下看。

内网穿透简介

内网穿透(又称 NAT 穿透端口转发)是一种网络技术,用于解决处于内网(局域网)中的设备无法被公网直接访问的问题。
在传统网络架构中,内网设备通过路由器或防火墙连接到公网,这类设备通常只拥有私有 IP 地址(如 192.168.x.x、10.x.x.x),无法被公网直接识别和访问。
内网穿透的核心原理是通过一个具有公网 IP 的服务器(称为 穿透服务器中转服务器)作为中介,建立内网设备与公网之间的通信通道,使公网用户能够访问内网中的服务或设备。

适用场景:

常用的内网穿透工具:

以上工具各有优缺点,本人目前已经写了 ZerotierFrp 的配置教程,后续会把其他的内网穿透工具教程一个个全部补充上去。

内网穿透 通过 “中转” 机制打破了内网与公网的隔离,在开发、运维、物联网等场景中具有广泛应用。选择工具时需根据需求(如带宽、协议、安全性)权衡开源与商业方案,同时重视网络安全,避免因穿透导致内网暴露风险。

本人写这篇文章的目的就是力求零运维基础的小白看了也能直接配好,每行要执行的代码前面会标注执行原因。

首先我们得有一台拥有公网IP的云服务器,推荐雨云

雨云优惠注册地址:https://www.rainyun.com/

优惠码:xiaotie

使用优惠码注册后绑定微信可获得5折券。

其他云服务器推荐:
[post cid="29" /]

配置前提:

云服务器的推荐配置:

本文以 Ubuntu 22.04 LTS 为例。


1:NPS 介绍

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

为什么选择NPS?


2:服务器端配置

2.1:准备阶段

2.1.1:切换国内软件源

Ubantu/Debian的默认软件源很多是国外的,下载可能会中断或者速度很慢,所以切换软件源为国内阿里源(如果你的VPS是海外线路,那么这块不执行也可以):

cat > /etc/apt/sources.list << EOF
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
EOF

修改软件源配置文件以后,我们更新一下软件包索引,否则白改了:

apt update

2.1.2:安装 Docker

我们使用 DockerNPS 服务隔离出来,更安全也更简洁。
这是docker的安装命令,registry源选择 1Panel,其他默认选择即可。

curl -sSL https://linuxmirrors.cn/docker.sh -o docker.sh && bash docker.sh

配置docker加速镜像,跟修改软件源一样,用来加速下载docker镜像。

tee /etc/docker/daemon.json <<EOF
{
    "registry-mirrors": [
        "https://docker.mirrors.aster.edu.pl",
        "https://docker.mirrors.imoyuapp.win"
    ]
}
EOF

应用docker配置。

systemctl daemon-reload

重启docker,使配置生效。

systemctl restart docker

2.2:创建 NPS 容器

2.2.1:创建挂载目录

首先在当前目录创建nps文件夹并切换到nps目录。

mkdir nps && cd nps

创建conf文件夹并切换到conf目录。

mkdir conf && cd conf

下载conf文件。

wget https://www.xiaotiewinner.com/usr/uploads/2025/08/2530722170.gz -O nps-conf.tar.gz

解压conf文件。

tar -zxvf nps-conf.tar.gz

此时您可以修改 nps.conf 中的某些配置以保证安全性,但是本教程中我们使用默认的用户名密码以及端口。
点击这里查看每个配置项的作用。

然后我们返回到 nps 目录。

cd ..

2.2.2:编辑 docker-compose.yml 文件(我习惯用 vim ,你也可以用 nano
vim docker-compose.yml

将以下内容修改后粘贴到文本中(可使用快捷键:SHIFT + INSERT),需要修改的部分加了注释( # 之后的内容),注释放进去不影响 docker 容器的编译和运行。

services:
    nps:
        restart: always
        container_name: nps
        network_mode: host
        volumes:
            - ./conf:/conf
            - /etc/localtime:/etc/localtime:ro
        image: yisier1/nps

保存文件:手动打出:wq,然后按回车键。


2.2.3:编译并运行 Docker 容器
docker compose up -d

2.3:配置阶段

2.3.1:访问 NPS 管理后台
  1. 打开浏览器,地址栏输入 云服务器的公网IP:8081(如果您修改过 nps.conf 中的 web_port,这里的端口号也需要对应修改)。

    如果访问不到,你需要检查云服务器的外部和内部防火墙是否打开了 8081 端口
  2. 用户名输入 admin ,密码输入 123 ,点击 登录 按钮(如果您修改过 nps.conf 中的 web_usernameweb_password,这里的用户名密码也需要对应修改)。

2.3.2:配置服务端
  1. 点击左侧菜单中 服务端 ,然后点击第一条信息中最右侧的 隧道 按钮。
  2. 点击 新增 按钮,进入隧道新增页面。
  3. 服务端端口 输入 33000目标 输入 127.0.0.1:3000,点击 新增 按钮。

    注:

    • 我的本地客户端电脑在3000端口发布了一个服务,所以这样写。你的本地有什么端口需要发布到公网就写什么端口,例如如果希望发布windows远程桌面服务,就写 127.0.0.1:3389,如果想发布linux的ssh服务,就写 127.0.0.1:22
    • 127.0.0.1 表示客户端本机,如果你想发布局域网下的其他设备的服务,那么就把 127.0.0.1 改为对应设备的局域网IP。
    • 服务端端口 ,顾名思义,就是公网IP后面跟着的端口,这样就形成了IP+端口的映射,以教程中的设定为例,对公网IP + 33000端口访问最终会被转发到本地的3000端口。
  4. 最后返回客户端页面,点 +,将快捷启动命令复制下来。

3:客户端端配置

3.1:配置客户端(本地)

3.1.1:配置客户端(Windows)
  1. 下载 npc 文件,点这里下载。
  2. 解压出来,右键——管理员模式运行。
  3. 刚刚 最后复制的内容粘贴上去,然后回车(如果希望以后开机自启,先输入1,然后粘贴快捷启动命令)。
  4. 看到命令行中有 Successful 字样并且管理页面客户端页面刷新以后 连接 一栏显示 在线 说明网络通了,试着访问公网IP+服务端端口试试看吧。

3.1.2:配置客户端(Linux)
  1. 下载 npc 文件,如果不知道自己的系统要下载哪种,就下载 amd 版本。

    • amd:

      wget https://cdn.jsdelivr.net/gh/xiaotiewinner/static-resources@main/files/2025/06/npc-linux-amd.tar.gz
    • amd:

      wget https://cdn.jsdelivr.net/gh/xiaotiewinner/static-resources@main/files/2025/06/npc-linux-arm.tar.gz
  2. 解压 npc

    tar -zxvf npc-linux-amd.tar.gz
  3. 赋予执行权限。

    sudo chmod +x npc
  4. 执行 npc

    sudo ./npc
  5. 刚刚 最后复制的内容粘贴上去,然后回车(如果希望以后开机自启,先输入1,然后粘贴快捷启动命令)。
  6. 看到命令行中有 Successful 字样并且管理页面客户端页面刷新以后 连接 一栏显示 在线 说明网络通了,试着访问公网IP+服务端端口试试看吧。

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »