前言:

公司内网无法访问,出差又需要用到公司内网进行办公,苦恼了好一阵。这时候想到了内网穿透,这就不得不提到几年前被安利的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内网穿透,内网服务公网用不求人的更多相关文章

  1. 【微信Java开发 --1】内网穿透外网,使用外网域名可以访问到本地项目

    1.首先上https://natapp.cn/ 2.接下来在网站申请账号 3.购买免费隧道 4.为你的免费隧道设置名称以及端口号,由于本人本地的使用Tomcat做服务器,所以用惯了8080端口,因此设 ...

  2. docker frps 内网穿透容器化服务

    准备 域名解析 将frp.xx.com解析到服务器ip,将泛域名 *.frp.xx.com解析到frp.xx.com即可 https证书申请 泛域名证书现在可以用acme.sh申请Let's Encr ...

  3. frp穿透内网使用vsftpd服务

    本篇文章将会介绍如何使用frp穿透内网以及如何在centos8环境下安装和使用vsftpd,最后在公网通过frp穿透内网使用ftp. 一.内网穿透神器frp frp 是一个专注于内网穿透的高性能的反向 ...

  4. 旧手机改造成web服务器并实现内网穿透

    前几天由于gitee的审核引擎一通乱杀,使得gitee pages停止提供服务,心生更换服务器或者其他pages托管的想法,看了看价格感人的云服务器以及空空的钱包,这时,脑子有个奇怪的想法飘过,自己搞 ...

  5. kali对安卓的渗透(内网穿透)

    前言:随着移动端的增加,安卓占比巨大,人们对手机的安全防范意识薄弱,手机为了人们更加的方便,缺乏防护软件,甚至好多木马不需要做免杀. 现在我来做安卓的渗透,不需要在内网也能进行,实现了内网穿透.(有公 ...

  6. 【微信Java开发 --1---番外1】在windows下,使用JAVA执行多条DOS命令+文件夹/路径中有空格怎么解决【目的是实现内容穿透外网】

    内网穿透外网的那一篇,参正集1 但是每次都要Ctrl+R 启动DOS窗口,也就是CMD,一句一句的去粘,略显繁琐. 所以将这些任务写在JAVA程序中,启动一次程序就可以实现[内网穿透]的功能,多好啊! ...

  7. 基于C#的内网穿透学习笔记(附源码)

    如何让两台处在不同内网的主机直接互连?你需要内网穿透!          上图是一个非完整版内外网通讯图由内网端先发起,内网设备192.168.1.2:6677发送数据到外网时候必须经过nat会转换成 ...

  8. 内网穿透神器(ngrok)服务端部署【分享一台自己的ngrok服务器】【多平台】

    Ngrok为何物 “ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道.ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放.”这是百度百科上给Ng ...

  9. SSH 端口转发+内网穿透

    用最直白的语言对本文所有内容进行定义: 端口转发(-L):用A机器(内网)登录B机器(公网), 在A机器打开端口,将收到的所有请求转发到B机器的某个端口 (在代理机上执行) 内网穿透(-R):用A机器 ...

  10. QQ通信原理及QQ是怎么穿透内网进行通信的? (转)

    原:http://f543711700.iteye.com/blog/978044#bc2344608 QQ是一个基于TCP/UDP协议的通讯软件 发送消息的时候是UDP打洞,登陆的时候使用HTTP~ ...

随机推荐

  1. Java-继承Thread的方式和实现Runnable接口多线程

    继承Thread的方式实现多线程 public class TestThread extends Thread{ @Override public void run() { System.out.pr ...

  2. [oeasy]python0112_扩展ascii_Extended_ascii_法文字符

    法文字符 回忆上次内容 上次回顾了 字型编码的进化过程 从 7-seg 到 点阵字库 终于让字母.数字.标点 明确了字型 小写字符 占据了位置 法文字符 没有地方放了     ​   添加图片注释,不 ...

  3. oeasy教您玩转vim - 59 - # 编辑总结

    ​ [Github地址] (https://github.com/overmind1980/oeasyvim) [Gitee地址] (overmind1980/oeasyvim) [蓝桥实验楼 邀请码 ...

  4. Day 11 - 模拟考

    WTP 的大洗牌 题目描述 \(\text{input1}\) 3 1 1 1 1 2 3 \(\text{output1}\) 10 0 数据范围 shuffle.zip 第一题 题目描述 输入格式 ...

  5. 集群及分布式定时任务中间件MEE_TIMED

    集群及分布式定时任务中间件MEE_TIMED 转载请著名出处:https://www.cnblogs.com/funnyzpc/p/18312521 MEE_TIMED一套开源的定时任务中间件,MEE ...

  6. GUN/Linux 基础教程

    GUN/Linux 基础教程 控制台 shell 超级用户 root 辅助管理 CLI 软件 文件基础 目录 链接 设备文件 控制台 shell 在启动 Linux 系统后,如果没有安装 GUI 的话 ...

  7. CF1988C Increasing Sequence with Fixed OR Solution

    题意简述如下: 给定一个正整数 \(n\),请构造一个正整数序列使其满足以下条件并尽可能长:这个序列中每个数都大于等于 \(1\) 且小于等于\(n\):这个序列是单调递增的:这个序列中任意两个相邻的 ...

  8. java spring boot 权限认证总结瞎记一通,各种 方案。附近如何运行jar包。和如何读配文件

    在正式笔之 前先来思考如何将java 的包打包成jar 包同,运行时指定配置,这样运行, 以上问题有空在来研究,有空在来补这个文档 首先呢,先来说说Session 怎么使用,这个在sping boot ...

  9. 用jacoco统计JAVA项目测试代码覆盖率

    一.概述 Jacoco 统计的是全量代码覆盖率.它不仅支持生成单元测试的覆盖率,也支持监控生成接口测试,功能测试的覆盖率. 在新一代精准测试技术流的影响中,各大型单位对覆盖率的追求越来越迫切.作为一款 ...

  10. 映射lun

    环境 VMware1 网卡与 主机ping通 创建文件夹将文件解压进去 删除压缩包 创建虚拟机 下一步下一步,完成虚拟机 编辑虚拟机设置 否 账号密码 admin Admin@storage 等待 导 ...