frp内网穿透服务使用

frp内网穿透服务使用frp是一个专注于内网穿透的高性能的反向代理应用,支持TCP、UDP、HTTP、HTTPS等多种协议。可以将内网服务以安全、便捷的方式通过具有公网IP节点的中转暴露到公网。frp是一个开源的内网穿透应用,有客户端软件和服务端软件,大概工作过程如下服务端运行在具有公网IP的服务器上,比如Linux上,并监听某个端口,等待客户端连接。客户端运行在需要穿透的内网机器上,比如本地电脑上,连接到服务器之后,服务器开始监听客户端需要穿透的指定端口。……………………

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

1,frp简介

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

有了内网穿透你能干什么?

  • 远程访问内网的 http/https 服务
  • 远程桌面(Windows/Mac)
  • 远程文件、 SSH
  • 小程序开发
    有了内网穿透在外访问家里的电脑、NAS、树莓派、摄像头等网络设备或远程控制,那都不是事儿~

frp是一个开源的内网穿透应用,有客户端软件和服务端软件,大概工作过程如下:

服务端运行在具有公网IP的服务器上,比如Linux上,并监听某个端口,等待客户端连接。
客户端运行在需要穿透的内网机器上,比如本地电脑上,连接到服务器之后,服务器开始监听客户端需要穿透的指定端口。
外网用户连接服务器监听的指定端口,然后服务器将用户数据转发到内网客户端,实现内网穿透

frp工作原理

服务端运行,监听一个主端口,等待客户端的连接;
客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型;
服务端fork新的进程监听客户端指定的端口;
外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端;
客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。

原理简单解释
服务器端和客户端约定通过7000端口通信,客户端告诉服务端要监听6000端口(客户端配置的remote_port =6000),然后外网服务器就会监听是否有连接请求:外网服务器Ip地址:6000,如果有就把连接给客户端,这样就可以达到内网穿透的目的。

2,frp下载

准备一个阿里云服务器,准备安装frp服务端,准备一台电脑安装frp客户端。所以这里需要下载Linux版本和windows版本

下载地址:https://github.com/fatedier/frp/releases

frp文件说明:https://gitee.com/yijicai/frp

在这里插入图片描述

2,解压安装

这里frp服务端安装在Linux上,frp客户端安装在Windows上。

将下载的Linux压缩包上传到服务器上解压。

tar -xvf frp_0.38.0_linux_amd64.tar.gz 

解压之后目录结构如下,这里可以选择把客户端没有的程序和配置删掉,也可不删。文件中所有显示frps的都是服务端文件,显示frpc的都是客户端文件。

# 删除客户端配置
rm -f frpc*

在这里插入图片描述

下载Windows版本的frp解压到本地,删除所有服务端文件。

3,配置使用

3.1,查看默认配置

查看服务端默认配置文件frps.ini

[common]
bind_port = 7000	# 默认端口7000,就是客户端和服务端通信的端口,不是你转发的那个端口,如果要改端口,客户端和服务端两边的配置文件都要改

查看客户端默认配置文件frpc.ini

[common]
server_addr = 云服务器公网IP		#frps服务端所在的公网IP
server_port = 7000		# 默认端口7000,就是客户端和服务端通信的端口,不是你转发的那个端口,如果要改端口,客户端和服务端两边的配置文件都要改

[ssh]		# frp内网穿透通道的名称,一定要唯一
type = tcp	# 连接类型
local_ip = 127.0.0.1	# 本地的地址
local_port = 22		# 穿透到本地内网的端口号
remote_port = 6000	# 本次TCP服务要监听的端口,就是外网服务器要监听的端口

3.2,开放端口

阿里云服务器端口是没有开放的,所以我们需要先在阿里云安全组中开放7000,6000,7500(这是frp面板的端口,下面会提到)这三个端口。
在这里插入图片描述

3.3,配置frp管理面板

frp面板是frp服务的一个可视化界面,可以知道有哪些穿透服务。

编辑服务端的配置文件

vim frps.ini	# linux上编辑服务端的配置文件
#默认端口7000,就是客户端和服务端通信的端口,不是你转发的那个端口,如果要改端口,客户端和服务端两边的配置文件都要改
bind_port = 7000 

# 控制台配置,frp的web管理控制台的用户名和密码,7500是默认端口(所以前面把7500端口提前放开了),可以通过服务端ip+7500端口登录
dashboard_port = 7500 
dashboard_user = admin 
dashboard_pwd = admin

#token = 123456789 #用于验证,为了安全,和客户端对应,服务端配置了token客户端也要配置一样的,这个配置根据需要配置,这里就不配了。

编辑客户端配置文件
只需要配置公网的IP就可以,别的不要改动

server_addr = 云服务器公网IP

3.4,启动

要先启动frp服务端

./frps -c ./frps.ini &	#后台启动

客户端启动后
在这里插入图片描述

再启动frp客户端

Windows黑窗口使用命令

frpc.exe -c frpc.ini  # windown上启动客户端
#./frpc -c ./frpc.ini	# Linux上启动客户端

客户端启动后
在这里插入图片描述
客户端启动后,Linux服务端也显示了信息
在这里插入图片描述

查看面板

frp穿透服务已经成功了,我们再查看下frp面板,浏览器地址栏输入:服务器公网IP+7500

在这里插入图片描述
在这里插入图片描述

还有一种验证方式:
Linux上输入命令

ssh 127.0.0.1 -l root -p 6000

四,配置http穿透

上面的穿透是TCP的一个简单穿透,下面配置http内网穿透

4.1编辑frps.ini文件

在阿里云上把要监听的http端口开放

#默认端口7000,就是客户端和服务端通信的端口,不是你转发的那个端口,如果要改端口,客户端和服务端两边的配置文件都要改
bind_port = 7000 

# 控制台配置,frp的web管理控制台的用户名和密码,7500是默认端口(所以前面把7500端口提前放开了),可以通过服务端ip+7500端口登录
dashboard_port = 7500 
dashboard_user = admin 
dashboard_pwd = admin

# 配置http和https服务要监听的端口,这两个端口也要在阿里云安全组上放开,且不能是服务器已经使用的端口
vhost_http_port = 808
vhost_https_port = 4438

4.2,编辑frpc.ini文件

[common]
server_addr = 云服务器公网IP		#frps服务端所在的公网IP
server_port = 7000		# 默认端口7000,就是客户端和服务端通信的端口,不是你转发的那个端口,如果要改端口,客户端和服务端两边的配置文件都要改

[ssh]		# frp内网穿透通道的名称,一定要唯一,自定义
type = tcp	# 连接类型
local_ip = 127.0.0.1	# 本地的地址
local_port = 22		# 穿透到本地内网的端口号
remote_port = 6000	# 本次TCP服务要监听的端口,就是外网服务器要监听的端口

[httptest]	# frp内网穿透通道的名称,一定要唯一,自定义
type = http	# 连接类型
local_ip = 127.0.0.1	# 本地的地址
local_port = 8081	# 穿透到本地内网的端口号
custom_domains = test.northdoo.com	# 请求时映射的域名

[httpceshi]
type = http
local_ip = 127.0.0.1
local_port = 8082
custom_domains = ceshi.northdoo.com

注意:如果在客户端配置http请求的域名,一定要在阿里云上配置域名解析,不然请求不成功

五,说明

frp访问内网的流程,frp服务端和客户端通过配置约定走公网ip的7000端口,同时客户端告诉服务端需要监听6000的端口,如果出现公网ip+6000的请求,就把连接交给本地内网的22端口,请求本地的地址就是127.0.0.1:22,这样就达到访问内网的目的。

http穿透没有在客户端配置remote_port 监听端口信息,监听端口配置到了服务端vhost_http_port
常规情况下,frp 服务器端默认定义了 http 和 https 的服务端口为 80/443,所以配置 http 和 https 是无需配置 remote_port 远程端口信息.

custom_domain = nas.ioiox.com
custom_domain即自定义域名,需为此服务准备一个域名,并配置CNAME指向frp服务器地址.

多数情况下都是使用 custom_domain ,当 frp服务器frps.ini 中配置了 subdomain_host 参数,并为所有用户提供了子域名服务.那么此时可以使用 subdomain 参数,其参数值应 仅为主机头 .
例如:服务器提供了 frp.com 的泛域名服务,那么设置 subdomain = nas 就可以使用 nas.frp.com 来穿透本条服务,当然主机头也是唯一性的,先到先得.此种配置多数用于 自建frps服务器 ,方便自己使用一个域名的泛域名来配置穿透.

使用 HTTP 和 HTTPS 协议时,每一条穿透配置必须至少要有 custom_domain 和 subdomain 中的任意一个域名参数.否则会出现 custom_domains and subdomain should set at least one of them 错误提示.而 TCP 协议可无需配置域名,直接使用 frp 服务器的域名或者IP.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/194600.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java删除文件时总是返回false,删不掉「建议收藏」

    java删除文件时总是返回false,删不掉「建议收藏」今天写了个简单的文件删除的程序:代码如下:publicstaticbooleandeleteFiles(File[]files){ booleanflag=false; for(Filefile:files){ //路径为文件且不为空则进行删除 if(file.isFile()&&file.exists()){ flag

    2022年6月9日
    58
  • dpkg命令用法[通俗易懂]

    dpkg命令用法[通俗易懂]dpkg是一个Debian的一个命令行工具,它可以用来安装、删除、构建和管理Debian的软件包。下面是它的一些命令解释:1.安装软件命令行:dpkg-i<.debfilename>示例:dpkg-iavg71flm_r28-1_i386.deb2.安装一个目录下面所有的软件包命令行:dpkg-R示例:dpkg-R/usr/local/src3.释放软件包,但是不进行配

    2022年5月21日
    104
  • connectionStrings节的配置方法[通俗易懂]

    connectionStrings节的配置方法[通俗易懂]ASP.NETweb.config中数据库连接字符串connectionStrings节的配置方法作者:字体:[增加 减小]类型:转载ASP.NETweb.config中数据库连接字符串connectionStrings节的配置方法,需要的朋友可以参考一下在ASP.NET开发的网站根目录,有一个名为web.co

    2022年5月21日
    45
  • 一小时人生怎么选服务器(服务器一般多少瓦)

    上周末扑克之星的服务器发生了罕见的崩溃,几千名玩家掉线被洗盲注,而少数几个国家并没有影响,此事让扑克之星的用户纷纷谴责他们的服务提供商。祝贺罗马尼亚、捷克、保加利亚的玩家,你们从这次服务器崩溃事件中获利了。—DramaticDegen(@TJDarroch)2018年8月12日在你中止比赛之前,你按照被洗盲一个小时的筹码量分配奖金,你真的不能那么做。我们需要知道比赛中其他玩家获得的奖金。—…

    2022年4月18日
    49
  • 小区智能化设计方案简述_智慧设计

    小区智能化设计方案简述_智慧设计在智慧城市大前提下的智慧小区的建设势必将借助高精尖技术的帮助,产业的发展带来大数据、人工智能技术、智能安全机器人、云计算和物联网等相关技术的突破,技术的成熟应用又为智慧小区提供强有力的技术保障,产业的繁荣将为智慧小区满足规模化应用条件,最终促进产业升级、经济发展,为城市注入新活力。实现汇聚社区内出入口、公共区域监控、单元门、单位大门等区域结构化摄像机、车辆卡口、人脸智能门禁等智能前端,真正做到“人过留影、车过留牌”,不仅对社区安全进行全方位安全保障,同时为公安部门情报研判、人口管理提供前提条件,实现事前预警

    2022年10月17日
    1
  • 父组件向子组件传值步骤

    父组件向子组件传值步骤父组件向子组件传值步骤:在这里先定义一下,相对本案例来说:App.vue是父组件,Second-module.vue是子组件。一、首先,值肯定是定义在父组件中的,供所有子组件共享。所以要在父组件的data中定义值:二、其次,父组件要和子组件有契合点:就是在父组件中调用、注册、引用子组件:调用:注册:引用:三、接下来,就可以在父组件和子组件链接的地方(即引用子组件的标签上),把父组件的值绑定给子组件:这里我绑定了两个值,一个是数组,一个是字符串。2018-03-3010:15:

    2022年6月1日
    89

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号