内网穿透搭建——Frp、Ngrok
什么是内网穿透?
网络现在已经成为人们生活和工作中不可或缺的一部分。然而,对于许多处于内网环境中的用户来说,如何让外网访问到内部网络的服务或设备,成为了一个亟待解决的问题。内网穿透技术应运而生,它为解决这一问题提供了有效途径。本文将深入探讨内网穿透的含义、原理、工作方式以及实现方法,帮助读者全面了解这一重要的网络技术。
内网穿透的定义
内网穿透,也被称为内网映射或 nat 穿透,指的是在一个内网环境下,能够将内部的服务、设备(如电脑、手机、物联网设备等)通过特定的中间设备及协议连接到公网上,从而使外网用户可以远程访问内部网络上的服务或设备,而不需要对内网的网络架构做任何改变。简单来说,就是让外网能访问你的内网,把自己的内网(主机)当成服务器,让外网能访问。
免费的内网穿透工具 Frp、Ngrok
Ngrok
Ngrok的配置和部署相较于Frp较为简单
在配置之前你需要有一个自己的网页端程序,我这边用的是python+flask
from flask import Flask, jsonify, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html')
@app.route('/greet/<name>')
def greet(name):
return jsonify(message=f'你好, {name}!')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
文件结构

一、下载
首先先打开ngrok的官网并登录

ngrok | API Gateway, IoT Device Gateway, Secure Tunnels for Containers, Apps & APIs
登录后会进入下载界面
你需要选择适合自己操作系统的安装包进行下载



二、解压文件并添加到安装目录
如:C:\Program Files
三、配置系统环境变量


四、配置网路代理并运行
打开cmd并运行
换成你的端口号
ngrok http 5000
显示这个界面就代表成功运行了

按住crtl点击ngrok所指向的网页链接:

这样就算成功了。
五、存在的一些问题
因为ngrok 在国外,所以使用的时候经常无法访问,因此需要使用代理访问。
不确定,有些文章表示可以更换服务器和域名可以试试不过似乎需要开会员
Ngrok内网穿透_ngrok链接成功但是无法访问-CSDN博客
内网穿透--ngrok简单配置_ngrok yml配置-CSDN博客
Frp
本着不重复造轮子的想法,因此直接引用相关博文
【超详细】使用FRP、阿里云服务器实现内网穿透连接远程桌面_阿里云 frp-CSDN博客
这篇博文已经非常详细的讲述了,如何配置的相关教程
不过记录些博主踩过的坑
博主的服务器是从阿里云领取的免费版,不过多赘述。详细可以看b站教程:
视频正在制作中
一、端口配置
安全组 —> 安全组ID

根据自己的需求进行配置,比如我们之前设置的端口是5000
那么我们的服务器端要需要配置成5000端口
![]()

二、客户端和服务器端toml配置
如果需求是远程访问可以看上方链接
博主是希望能够将程序部署到网页端并进行通信,因此需要对网页端进行配置

阿里云的frps.toml文件配置:
bindAddr = "0.0.0.0" #服务端监听的 IP 地址,0.0.0.0表示监听所有网络接口
bindPort = 7100 #指定 FRP 服务端的监听端口,客户端将通过这个端口连接到 FRP 服务端,可以设置成别的
vhostHTTPPort = 28080 #指定虚拟主机 HTTP 服务监听的端口
webServer.addr = "0.0.0.0" #指定 FRP Web UI(管理界面)的绑定地址
webServer.port = 7500 #指定 FRP Web UI 的端口号,可以通过 7500 端口访问管理界面,可以设置成别的
webServer.user = "admin" #Web UI 登录所需的用户名,自由设置
webServer.password = "12345" #Web UI 登录所需的密码,自由设置
log.to = "/frpslog/frps.log" #指定日志输出的文件路径
log.level = "info" #日志的记录级别,info 表示记录一般的信息
log.maxDays = 3 #设置日志文件保留的天数,超过 3 天的日志文件将被自动删除
auth.method = "token" #指定认证方式,token 表示客户端和服务端通过 Token 进行身份认证
auth.token = "12345" #Token 用于客户端和服务端的身份认证,自由设置
allowPorts = [
{ start = 4000, end = 7000}, #定义允许客户端使用的端口范围,客户端可以使用 6000 到 7000 之间的端口进行映射
]
Windows本地frpc.toml文件配置:
[common]
tls_enable = true
server_addr = # 改成自己的服务器公网地址
server_port = 7100
token = "12345"
[RDP]
type = tcp
local_ip = 0.0.0.0
local_port = 5000
remote_port = 5000
三、注意事项
如果是配置成和我一样的,一定要注意
必须在阿里云的服务器端配置5000、7500、7100、28080这几个端口
部分电脑运行通过运行./frpc命令
frpc -c frpc.toml
改成这个试试
启动 frpc 服务:
"C:\Program Files\frp_0.60.0_windows_amd64\frpc.exe" -c "C:\Program Files\frp_0.60.0_windows_amd64\frpc.toml"
测试服务器端口
netstat -ano | findstr :7000
附上查阅的相关博文:
常用优秀内网穿透工具(实测详细版)_飞鸽内网穿透-CSDN博客
【超详细】使用FRP、阿里云服务器实现内网穿透连接远程桌面_阿里云 frp-CSDN博客
更多推荐



所有评论(0)