frp_v0.37.1内网穿透,内网服务公网用不求人
前言:
公司内网无法访问,出差又需要用到公司内网进行办公,苦恼了好一阵。这时候想到了内网穿透,这就不得不提到几年前被安利的frp,一看GitHub竟然已经5年了,网上估计大把教程了。
那么什么是frp呢。
frp 是一个专注于内网穿透的高性能的反向代{过}{滤}理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
中文文档请看:https://github.com/fatedier/frp/blob/dev/README_zh.md
GitHub地址:https://github.com/fatedier/frp
搭建
首先我们要准备 公网IP服务器一台(必要),其他机器若干台(我管你多少台),虚拟机也可以。
接着下载与机器cpu架构对应的frp

接着我们在服务器的随便一个地方解压,这里我使用的华为云的机器所以下载的是frp_0.37.1_linux_arm64.tar.gz
服务端配置及启动
解压之后进目录修改服务端配置文件 frps.ini
# 必要配置,初始化服务端连接端口
[common]
bind_port = 6000
bind_udp_port = 6001 # 认证模式和秘钥
authentication_method = token
authenticate_heartbeats = true
authenticate_new_work_conns = false
token = CPu2PS5teIdM #是否启用tcp复用,可以省略
tcp_mux = true # 允许开启的端口,可以限制在某个范围利于云平台开端口或其他管理
allow_ports = 20000-40000 # 日志,可以省略,省略之后直接打印在终端中。
log_file = ./frps.log
log_level = info
log_max_days = 3
disable_log_color = true
配置完成之后启动
./frps -c frps.ini
#frps服务端程序
# -c 加载配置文件
客户端连接和启动
frp releases包是包含服务端和客户端的,接着我手上是两台windows机器,所以按照x64 下载frp_0.37.1_windows_amd64.zip
解压之后,我们开始编辑客户端配置
编辑frpc.ini 文件
# 连接服务器,核心部分。每个客户端都需要配置
[common]
server_addr = www.wspby.top
server_port = 6000
token = CPu2PS5teIdM #这里一定要和服务端一致,否则报错。 # 日志,可以省略,省略之后直接打印在终端中。
log_file = ./frpc.log
log_level = info
log_max_days = 3 #是否启用tcp复用,可以省略
tcp_mux = true
启动命令
frpc.exe -c frpc.ini
开始创建连接,这里科普下可以使用的连接类型type(来自https://www.zhuguodong.com/?id=560)
tcp和udp:就是将普通的tcp端口或者udp端口映射到公网上,相当于你的设备直接向公网暴露了一个tcp端口,任何设备都可以尝试连接这个端口。这里就会有很大的安全风险。
[pc_mstsc]
type = tcp
local_ip = 127.0.0.1 #这里疑似修改为其他地址并进行访问,这里不做测试
local_port = 3389
remote_port = 33999

之后在防火墙开下端口就可以提供给任何人访问了。
sftp:出于安全和防止攻击的考虑,frp提供了使用密钥验证的tcp,这就是frp的Secret TCP(stcp)模式。
xtcp:stcp是使用了服务器进行中转,如果出现大流量的话会出现卡顿,所以就有了xtcp模式。在xtcp模式下,两个客户端是直接相连略过了服务端进行通信,这样就不会受服务器带宽限制。
被连接端配置如下:
[pc_stcp_mstsc] # stcp
type = stcp
sk = 12345678
local_ip = 127.0.0.1
local_port = 3389 #基本一致
[pc_xtcp_mstsc] # xtcp
type = xtcp
sk = 12345678
local_ip = 127.0.0.1
local_port = 3389
连接端配置如下:
[mstsc_vister_stcp]
type = stcp
role = visitor #角色是访问者
sk = 12345678
bind_addr = 127.0.0.1 #可以随便写
bind_port = 33333
server_name = pc_stcp_mstsc #这里需要对应中括号内的服务名! [mstsc_vister_xtcp]
type = xtcp
role = visitor #角色是访问者
sk = 12345678 #需要与被连接端一致
bind_addr = 127.0.0.1 #可以随便写
bind_port = 44444
server_name = pc_xtcp_mstsc #这里需要对应中括号内的服务名!
bind_addr可以随便写,在连接时地址为: %bind_addr%:%bind_port%
在正确配置和启动之后开始测试

测试成功。
参考链接:
https://www.zhuguodong.com/?id=560
https://zhuanlan.zhihu.com/p/341551501
https://sspai.com/post/52523
还有其他忘了。。。
其他问题以后补充
frp_v0.37.1内网穿透,内网服务公网用不求人的更多相关文章
- 【微信Java开发 --1】内网穿透外网,使用外网域名可以访问到本地项目
1.首先上https://natapp.cn/ 2.接下来在网站申请账号 3.购买免费隧道 4.为你的免费隧道设置名称以及端口号,由于本人本地的使用Tomcat做服务器,所以用惯了8080端口,因此设 ...
- docker frps 内网穿透容器化服务
准备 域名解析 将frp.xx.com解析到服务器ip,将泛域名 *.frp.xx.com解析到frp.xx.com即可 https证书申请 泛域名证书现在可以用acme.sh申请Let's Encr ...
- frp穿透内网使用vsftpd服务
本篇文章将会介绍如何使用frp穿透内网以及如何在centos8环境下安装和使用vsftpd,最后在公网通过frp穿透内网使用ftp. 一.内网穿透神器frp frp 是一个专注于内网穿透的高性能的反向 ...
- 旧手机改造成web服务器并实现内网穿透
前几天由于gitee的审核引擎一通乱杀,使得gitee pages停止提供服务,心生更换服务器或者其他pages托管的想法,看了看价格感人的云服务器以及空空的钱包,这时,脑子有个奇怪的想法飘过,自己搞 ...
- kali对安卓的渗透(内网穿透)
前言:随着移动端的增加,安卓占比巨大,人们对手机的安全防范意识薄弱,手机为了人们更加的方便,缺乏防护软件,甚至好多木马不需要做免杀. 现在我来做安卓的渗透,不需要在内网也能进行,实现了内网穿透.(有公 ...
- 【微信Java开发 --1---番外1】在windows下,使用JAVA执行多条DOS命令+文件夹/路径中有空格怎么解决【目的是实现内容穿透外网】
内网穿透外网的那一篇,参正集1 但是每次都要Ctrl+R 启动DOS窗口,也就是CMD,一句一句的去粘,略显繁琐. 所以将这些任务写在JAVA程序中,启动一次程序就可以实现[内网穿透]的功能,多好啊! ...
- 基于C#的内网穿透学习笔记(附源码)
如何让两台处在不同内网的主机直接互连?你需要内网穿透! 上图是一个非完整版内外网通讯图由内网端先发起,内网设备192.168.1.2:6677发送数据到外网时候必须经过nat会转换成 ...
- 内网穿透神器(ngrok)服务端部署【分享一台自己的ngrok服务器】【多平台】
Ngrok为何物 “ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道.ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放.”这是百度百科上给Ng ...
- SSH 端口转发+内网穿透
用最直白的语言对本文所有内容进行定义: 端口转发(-L):用A机器(内网)登录B机器(公网), 在A机器打开端口,将收到的所有请求转发到B机器的某个端口 (在代理机上执行) 内网穿透(-R):用A机器 ...
- QQ通信原理及QQ是怎么穿透内网进行通信的? (转)
原:http://f543711700.iteye.com/blog/978044#bc2344608 QQ是一个基于TCP/UDP协议的通讯软件 发送消息的时候是UDP打洞,登陆的时候使用HTTP~ ...
随机推荐
- 使用forEach循环异步方法,导致使用深拷贝时,得不到最新数据,控制台会打印出最新的数据
在使用forEach循环遍历一个数组,如果循环时有异步方法,会导致最终深拷贝得不到最新数据,但是控制台会打印最新的数据 `const arr = [ { name: "Jone", ...
- django 信号判断是新增、修改还是删除
在Django的信号处理器中,你可以使用一些方法来确定信号是关于新增(create).修改(update)还是删除(delete)的.这通常涉及到检查 created 和 instance 参数的值. ...
- oeasy教您玩转vim - 50 - # 命令行效率
命令行效率 回忆上节课内容 总结 我们上次研究的是范围命令执行方法 批量控制缩进 :20,40> 批量执行普通模式下的命令 :4,10normal A; 直接切换到全屏命令模式 ex-mod ...
- OpenGL 三角形颜色插值
1.最懒的方法--Nearest Neighbor对于三角形内的点,离三个顶点谁最近,就赋值为那个顶点对应的颜色. 2.最天真的方法--Distance三角形内一点的值应该来自于三个顶点. 计算距离: ...
- 微服务集成springsecurity实现认证
module:auth 1.添加依赖:spring-cloud-starter-security与spring-cloud-starter-oauth2 2.配置WebSecurityConfig:注 ...
- 新版宝塔面板快速搭建WordPress新手教程
一.宝塔面板介绍 1. 介绍 宝塔面板是一款服务器管理软件,支持Windows和Linux系统,可以通过Web端轻松管理服务器,提升运维效率,该软件内置了创建管理网站.FTP.数据库.可视化文件管理器 ...
- 用了组合式 (Composition) API 后代码变得更乱了,怎么办?
前言 组合式 (Composition) API 的一大特点是"非常灵活",但也因为非常灵活,每个开发都有自己的想法.加上项目的持续迭代导致我们的代码变得愈发混乱,最终到达无法维护 ...
- VirtualBox扩容CentOS-7虚拟机磁盘
1.背景描述 如上图所示,根路径"/"所在的文件系统已没有可用的磁盘空间,需要扩容磁盘. df -h 2.VirtualBox操作 2.1.查看当前虚拟磁盘的大小 如上图所示,点击 ...
- 【ElasticSearch】04 Spring-Data-ElasticSearch
官方网站: https://spring.io/projects/spring-data-elasticsearch 对应 Elasticsearch7.6.2,Spring boot2.3.x 一般 ...
- 【IDEA】创建Maven工程
当前工程,点new - project 选Maven,不需要点选什么骨架创建,骨架创建要下载大量依赖,生成时间太长, 空Maven的目的是让我们自己了解这个项目结构,需要什么依赖再加什么依赖 框线内的 ...