当前位置:首页 > 技术文章 > 正文内容

也谈谈内网穿透,带你一步步体验FRP!

arlanguage3个月前 (02-11)技术文章28

我们家庭宽带基本都是基于NAT,并没有提供公网IP,那么想从公网(Internet)访问家里电脑起的某个端口或服务该怎么办?那就来试试FRP这款内网穿透工具吧!


为啥要内网穿透?

比如你在家里电脑搭配了NAS,提供图片服务,你在外面想用手机同步照片到家里的NAS上?再比如你在办公电脑上启动了一个测试项目(API接口),想让合作小伙伴从公网访问到测试接口等等吧。当然,如果没有类似需求可以略过。

FRP搭建的前提准备条件:

  • 具有公共 IP 地址的服务器(例如:阿里/腾讯等各种云主机)
  • 处于NAT或防火墙后面的内网的机器,可以提供tcp/http等服务(家庭电脑,公司内部电脑都可以)

先看看我呕心沥血画的FRP的原理及数据流程图:

原理详细说明:

FRP Server(Server,IP假设为:202.106.0.26)

  • 部署在公网: Server部署在拥有公网IP的服务器上,比如阿里云服务器。
  • 监听请求: Server会监听来自外网的请求(开放57003端口),并将这些请求转发到对应的内网服务。
  • 配置管理: 通过配置文件,Server会管理所有的客户端连接,新建监听端口,并维护连接状态。
  • 注意:要在防火墙开放需要暴露的端口(57003)

frp Client(Client,IP假设:10.133.0.20)

  • 部署在内网: Client部署在需要被访问的内网机器上。
  • 连接Server: Client会主动连接到Server,建立一条隧道。
  • 转发请求: 当有外部请求到达Server时,Server会通过建立的隧道将请求转发给Client服务。
  • 返回响应: Client处理完请求后,将响应结果通过隧道返回给Server,最终传给外网用户。

FRP何许人也?

FRP在内网穿透这块可谓是鼎鼎大名,是一款用 Golang 编写的快速反向代理,它通过转发端口来帮助您将 NAT 或防火墙后面的本地服务器暴露给 Internet。截至目前它支持 TCP 和 UDP,以及 HTTP 和 HTTPS 协议。

话不多说,我们来实战体验:

测试环境:

  • 阿里云主机,有固定公网IP
  • 内网测试服务器,系统Ubuntu2024

下载二进制可执行文件,服务端,客户端可执行程序和配置都在里面

wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz

tar zxvf frp_0.61.1_linux_amd64.tar.gz

cd frp_0.61.1_linux_amd64

服务端配置:

# cat frps.toml

bindPort = 57003 #端口随意

auth.method = "token"

auth.token = "mytokent"

启动服务端,这样会监听端口:202.106.0.26:57003

frps -c frps.toml

客户端配置:

前提:为了测试,已经有Nginx服务启动在内网机器的8005端口了,其他服务也可以,如ssh

FRP客户端配置

# cat frpc.toml

serverAddr = "public IP"

serverPort = 57003

auth.method = "token"

auth.token = "mytokent"

[[proxies]]

name = "nginx-simple-web"

type = "tcp"

localIP = "10.133.36.109"

localPort = 8005

remotePort = 59008

启动客户端FRP

./frpc -c frpc.toml


观察客户端及服务端日志,可以看到已经链接上FRP服务端了

服务端这时会启动新的端口59008(配置在客户端,但是需要在服务端的云服务上开通防火墙端口)

访问映射到公网的IP+端口,有域名的的也可以解析域名到公网地址上,使用域名访问

如:http://Public-IP:59008

以上是针对Linux有些了解的同学,如果内网是windows环境也没问题的,再介绍一个开源项目,地址在这:
https://github.com/luckjiawei/frpc-desktop。

这个开源项目提供了FRP跨平台桌面客户端,可视化配置,轻松实现内网穿透!

FRP应该有很多人介绍过,不过我还是按照我自己的方式,通过一步步的实际操作来验证和体验各种工具的可用性,找到工具的有点和不足之处,希望能帮到您。

[全文完]

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/2449.html

标签: nginx bind
分享给朋友:

“也谈谈内网穿透,带你一步步体验FRP!” 的相关文章

使用nginx对视频、音频、图片等静态资源网址,加token签权

目前很多静态资源,都可以无权限验证,进行访问或转发,对有价值的资源进行签权,限制转发无法在代码中实现拦截,我们可以使用nginx对视频、音频、图片等静态资源网址,加token签权如:http://192.168.1.22/123.mp3http://192.168.1.22/123.m3u8http...

Linux中内网或者没网时安装软件的两种方式

写在前面对于可以连接外网的服务器装软件,只要配置yum源就可以随便使用了但是对于内网来说,不能连接外网,一般情况下,管控平台只有上传的权限。尤其是一些涉密的岗位,比如电力,电信,军工之类的。今天和小伙伴聊聊内网服务器如何安装软件的问题。可事实是,唯恐暴露才华不足的卑怯的畏惧,和厌恶钻研刻苦的惰怠,就...

面试常问知识点:Nginx设置代理的一个注意点

前几天,重启了下Nginx代理服务,发现报错了,以下是本次的思考。1:先解决问题查看Nginx错误日志:40 SSL_do_handshake() failed (SSL: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handsha...

Nginx如何配置正向代理:一步步教你轻松上手

Nginx作为一个高性能的HTTP和反向代理服务器,广泛应用于各类网站和服务中。然而,很多人可能不知道,Nginx同样可以配置为正向代理。今天我们就来详细讲解一下如何配置Nginx作为正向代理,让你的网络访问更加灵活便捷。什么是正向代理?正向代理是指客户端通过代理服务器访问目标服务器的过程。简单来说...

基于一次ContentDownload变慢而进行的网站性能优化

平时运行无常的网站,突然出现了某个接口TTFB缓慢问题,于是乎开始定位和解决,先说明一下网站的技术栈: 编程语言:PHP、Javascript、Vue、Java 开发框架:Laravel、SpringBoot 中间件:Redis、Kafka、Nginx 数据库:Mysql、MongoDB 云服务:腾...

Linux—shell中$(( ))、$( )、` `与$「 」的详解

命令替换在bash中,$( )与` `(反引号)都是用来作命令替换的。命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行。[root@localhost ~]# echo Tom > tom.txt [root@localhost ~...