掌握内网穿透,家里废弃的手机也可以变成服务器

本文详细介绍如何使用frp实现内网穿透,让外部网络能够访问位于校园内网的图书查询系统。通过在服务器和客户端配置frp,实现广域网任意PC对局域网内服务的访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

某天,小睿同学突然发现校内图书馆的查阅系统居然只有连接上校园网才能访问(简称:内网访问)。小睿平常好动,于是乎决定利用自己所学的技术,做一款基于微信小程序的“校园图书查阅”系统。

 

但是我校的“校园图书查询”系统的服务器肯定在内网中,我该如何才能让外界也能访问呢?这对于才疏学浅的小睿同学可真是一个困难的问题。幸运的是,小睿得到了王学长的指点——内网穿透

 

什么是内网穿透呢?

两台计算机都处于不同的局域网之中,外网与内网的计算机节点需要连接通信,那么就需要借助内网穿透技术来解决这个问题,也叫NAT穿透。简单来说,就是让外网可以访问你本地的应用。

 

为了能够在校园外以及未连接校园网,也可以使用“图书查询系统”,我决定使用“frp”来实现这一目的。

 

frp是一个可用于内部网穿透的高级反向代理应用程序,支持tcp,udp协议,为http和https应用协议提供了额外的能力,并且尝试性支持了点对点穿透。

 

下图是我绘制的一个采用frp实现内网穿透的原理图,以方便大家区分frp的客户端和服务端以及工作流程。

 

 

我们先在ESC服务器上配置frp的服务端,然后找一台可访问局域网的设备,搭建web服务器,并且配置frp客服端。以达到实现广域网任意pc访问8080端口,frp服务端就可以把通过8081端口,将请求转发给局域网内的给8082端口,8082端口再将响应通过8081、8080端口返回给PC机。其实就是一个请求转发的过程。

 

配置frp服务端

1、我们先用SSH连接ECS服务器,根据自己操作系统及架构,从 Release 页面(点击阅读原文)下载最新版本的程序。可以通过wget下载,也可以在自己的电脑上下载好后,通过FTP工具上传。

wget --no-check-certificate https://github.com/fatedier/frp/releases/download/v0.31.2/frp_0.31.2_linux_amd64.tar.gz

 

 

2、使用tar命令进行解压

 

 tar -zxvf 解压下载的压缩包

 

3、修改服务端的配置文件

 

 vim frps.ini   [common] #frp服务端与客户端连接端口,frps和frpc必须一致 bind_port = 8081 #服务端外部提供的端口 vhost_http_port = 8080 # 仪表盘端口,只有设置了才能使用仪表盘(即后台) dashboard_port = 7500 # 仪表盘访问的用户名密码,如果不设置,则默认都是 admin dashboard_user = admin dashboard_pwd = admin                       

然后键入ESC+wq+Enter,保存退出。

 

4、启动服务端

./frps -c frps.ini

这里有一个坑,我们断开SSH连接后,frp的服务端也就停止了。我们可以使用nohup,这样就可以保持frp的服务端可以保持正常运行。

nohup ./frps -c frps.ini &

 

配置frp客户端

1、首页搭建web服务器,我使用的是Nginx,这都大同小异。只要记得自己的Nginx端口就没问题。

2、执行以下命令,下载以及下载frp。

wget --no-check-certificate https://github.com/fatedier/frp/releases/download/v0.31.2/frp_0.31.2_linux_amd64.tar.gztar -zxvf 解压下载的压缩包

3、修改客户端配置文件

vim frpc.ini 

[common]#服务端公网ip地址server_addr = x.x.x.x#与服务端通信端口server_port = 8081 [web]type = http#本地Nginx服务端口local_port = 8082#公网ip绑定的域名custom_domains = xxx.xxx.com

然后键入ESC+wq+Enter,保存退出。

 

4、启动客户端

nohup ./frpc -c frpc.ini &

 

小结

这样我们即使与局域网有十万八千里,也可以通过公网ip绑定的域名,轻松的访问到局域网的应用服务。

 

疑难杂症

有的同学在配置frp中可能会遇到以下困难:    

Q:为什么我的端口都配置的正确,但是在外网访问不到了?

A:同学,你可以检查下你的防火墙是否放行以及端口是否被占用,还有局域网下是否可联网。此外,如果你使用的是阿里云默认关闭的端口,那么你需要登录阿里云,在安全组规则中添加你使用的端口。

 

 

因为阿里云备案快,我一般使用的都是阿里云的ESC服务器 + 域名。近期阿里云的“学生在家实践计划”活动,凡是大学生即可领取6个月的ESC服务器。

 

一些善于折腾的、物联网的同学,也可以把家中废弃的电脑、手机变成一台小型的服务器、云盘,使用frp工具实现内网穿透。这样一台废弃电脑、手机也可以变废为宝啦~

 


 

我是 郭小睿同学

欢迎加我微信

备注 姓名+技术or方向+学习or公司

拉你进学习交流群



 


 

对你有帮助,点个赞!

让更多人受益~

C:\Users\Administrator>npm -v npm warn Unknown user config "couchbase-binary-host-mirror". This will stop working in the next major version of npm. npm warn Unknown user config "debug-binary-host-mirror". This will stop working in the next major version of npm. npm warn Unknown user config "electron-mirror". This will stop working in the next major version of npm. npm warn Unknown user config "flow-bin-binary-host-mirror". This will stop working in the next major version of npm. npm warn Unknown user config "fse-binary-host-mirror". This will stop working in the next major version of npm. npm warn Unknown user config "fuse-bindings-binary-host-mirror". This will stop working in the next major version of npm. npm warn Unknown user config "git4win-mirror". This will stop working in the next major version of npm. npm warn Unknown user config "gl-binary-host-mirror". This will stop working in the next major version of npm. npm warn Unknown user config "grpc-node-binary-host-mirror". This will stop working in the next major version of npm. npm warn Unknown user config "hackrf-binary-host-mirror". This will stop working in the next major version of npm. npm warn Unknown user config "leveldown-binary-host-mirror". This will stop working in the next major version of npm. npm warn Unknown user config "leveldown-hyper-binary-host-mirror". This will stop working in the next major version of npm. npm warn Unknown user config "mknod-binary-host-mirror". This will stop working in the next major version of npm. npm warn Unknown user config "node-sqlite3-binary-host-mirror". This will stop working in the next major version of npm. npm warn Unknown user config "node-tk5-binary-host-mirror". This will stop working in the next major version of npm. npm warn Unknown user config "nodegit-binary-host-mirror". This will stop working in the next major version of npm. npm warn Unknown user config "operadriver-cdnurl". This will stop working in the next major version of npm. npm warn Unknown
03-15
<think>好的,我现在需要帮用户解决npm出现的未知用户配置警告的问题,并且确保未来版本的兼容性。首先,我得回顾用户提供的引用内容,看看有没有相关的线索。 用户提到的引用[1]中,提到vite和TypeScript的配置问题,主旨是确保路径完整。这可能和npm配置有关吗?可能用户有一些自定义的配置,导致npm无法识别。引用[5]提到Yarn可以忽略引擎版本限制,但用户这里用的是npm,可能需要类似的配置处理。此外,引用[4]中的devServer.proxy设置可能涉及到项目配置,但不确定是否直接相关。 首先,我需要确定npm警告的具体内容。通常,当npm检测到配置文件中有未知或废弃的配置项时,会发出警告。比如,用户可能在.npmrc或package.json中使用了不再支持的选项。例如,旧版的npm可能允许某些配置,但新版本不再支持,所以会提示用户更新或移除这些配置。 根据用户的需求,解决方法应该包括识别无效配置、更新或移除它们,并确保配置符合当前npm版本的要求。步骤可能如下: 1. **检查警告信息**:用户需要运行命令时注意警告中提到的具体配置项名称,比如是否有提示unknown config 'xxxx'。 2. **查看当前配置**:使用`npm config list`命令列出所有配置,找到被标记为未知的项。 3. **移除无效配置**:可以通过`npm config delete <key>`来删除不需要的配置项,或者在.npmrc文件中手动删除。 4. **验证配置兼容性**:查阅npm官方文档,确认当前使用的配置项是否被支持,是否有替代方案。 5. **更新npm和相关依赖**:确保npm版本是最新的,避免因版本过旧导致的兼容性问题。 6. **测试项目运行**:修改配置后,重新运行项目,确认警告是否消失,同时确保功能正常。 另外,用户提到的引用[3]中的修补策略,可以参考漏洞修复的流程,比如确认问题、评估影响、制定方案、实施和验证。这可能适用于配置问题的处理过程。 可能还需要考虑项目中的配置文件是否存在冲突,比如同时存在.npmrc和package.json中的配置项,或者不同工具(如Yarn和npm)之间的配置差异。例如,引用[5]中提到的Yarn的ignore-engines设置,如果用户同时使用Yarn和npm,可能会有配置干扰。 最后,生成相关问题的时候,需要考虑用户可能遇到的类似问题,比如如何处理其他类型的npm警告,如何保持配置的长期兼容性,或者如何管理多环境下的配置差异。</think>### 如何修复npm未知用户配置警告并确保兼容性? #### 1. 定位未知配置项 首先通过终端运行以下命令,查看当前生效的npm配置: ```bash npm config list ``` 若出现类似`unknown config 'xxx'`的警告,记录具体配置项名称,例如`example-key`[^1]。 --- #### 2. 删除无效配置项 通过以下命令移除未知配置项: ```bash npm config delete example-key ``` 或直接在以下配置文件中删除对应行: - **全局配置**:`~/.npmrc` - **项目级配置**:`项目根目录/.npmrc` --- #### 3. 验证配置兼容性 查阅npm官方文档确认配置项有效性: - 访问[npm配置文档](https://docs.npmjs.com/cli/v10/using-npm/config),核对当前使用的配置项是否被支持 - 若配置已废弃,改用替代参数(例如用`--omit=dev`替代旧版`--production`) --- #### 4. 升级npm版本 过时的npm版本可能无法识别新配置格式: ```bash npm install -g npm@latest ``` --- #### 5. 规范配置管理 - **统一配置文件**:避免在`package.json`和`.npmrc`中重复定义相同配置 - **环境隔离**:开发环境与生产环境使用不同的`.npmrc`文件 - **注释说明**:在配置文件中添加注释说明关键配置的作用,例如: ```ini # 内网穿透开发时绕过主机检查[^4] strict-ssl=false ``` --- #### 6. 测试验证 运行项目构建命令,观察警告是否消失: ```bash npm install npm run build ``` 若仍存在警告,检查是否有其他工具(如Yarn)的残留配置干扰[^5]。 --- ### 相关问题 1. 如何防止npm配置冲突导致依赖安装失败? 2. 不同Node.js版本下npm配置有哪些兼容性差异? 3. 如何通过环境变量动态覆盖npm配置? 4. npm与Yarn混用时如何避免配置污染? : 引用配置路径完整性的解决方案 : 涉及开发服务器配置的特殊处理 : 多包管理工具配置冲突场景
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值