1 frp介绍

注意事项:
1)服务器端和内网机器端下载的版本要相同,否则可能会影响内网穿透
2)根据服务器系统选择合适的脚本

脚本主要分为服务端与客户端文件
1.外网服务器端用到的是Frps和Frps.ini
2.win10电脑用到的是Frpc和Frpc.ini

注:
服务端部署,可以只保留服务端文件 frps**
​客户端部署,可以只保留客户端文件 frpc**

下载地址:

https://github.com/fatedier/frp/releases/tag/v0.37.1

注意下载版本

tar -zxvf frp_0.37.1_linux_arm64.tar.gz
mv frp_0.37.1_linux_arm64 frp
cd frp

2 服务端配置

2.1 修改配置

vim frps.ini
[common]
# 内网穿透服务器端监听的IP地址,可以省略,默认为127.0.0.1
bind_addr = 0.0.0.0
# 服务器端监听的端口,默认是7000,可自定义
bind_port = 7000
# 用于身份验证,请自行修改,要保证服务端与客户端一致
token = ch

2.2 启动

./frps -c frps.ini

3 客户端配置

3.1 win10

360会报毒

3.1.1 修改配置

frpc.ini

[common]
# 外网-服务器端ip
server_addr = 121.**.**.124
# 外网-服务器端监听的端口(必须与Frps.ini中的配置一致)
server_port = 7000
# 用于身份验证,请自行修改,要保证服务端与客户端一致
token = ch[ssh]
# 配置类型为http协议
type = tcp
# 内网机器的IP
local_ip = 127.0.0.1
#内网需要监听的端口(win10所启服务端口)
local_port = 8888
remote_port = 6000

3.1.2 启动

./frpc -c frpc.ini

3.1.3 访问

vps运行

curl 127.0.0.1

虽然成功,但是描述还是不详细,下面给出具体案例

4 通过ssh访问内网机器

  • 内网linux
  • 公网vps
  • 内网kali

场景:将内网linux 22端口映射到vps,kali访问vps,实现访问内网linux的效果

4.1 服务端

frps.ini

[common]
# 内网穿透服务器端监听的IP地址,可以省略,默认为127.0.0.1
bind_addr = 0.0.0.0
# 服务器端监听的端口,默认是7000,可自定义
bind_port = 7000
# 用于身份验证,请自行修改,要保证服务端与客户端一致
token = charles
./frps -c frps.ini

4.2 客户端

frpc.ini

[common]
# 外网-服务器端ip
server_addr = 121.**.**.124
# 外网-服务器端监听的端口(必须与Frps.ini中的配置一致)
server_port = 7000
# 用于身份验证,请自行修改,要保证服务端与客户端一致
token = charles[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
./frpc -c frpc.ini

4.3 访问

ssh -oPort=6000 root@121.**.**.124

不得不说,很nice

5 通过域名访问内网Web服务

5.1 服务端

frps.ini,设置http访问端口为8080,

https一样:type 设置为 https 即可

[common]
# 服务器端监听的端口,默认是7000,可自定义
bind_port = 7000
# 设置 http 访问端口为 8080
vhost_http_port = 8080
# 用于身份验证,请自行修改,要保证服务端与客户端一致
token = charles
./frps -c ./frps.ini

5.2 客户端

frpc.ini

[common]
# 外网-服务器端ip
server_addr = 121.**.**.124
# 外网-服务器端监听的端口(必须与Frps.ini中的配置一致)
server_port = 7000
# 用于身份验证,请自行修改,要保证服务端与客户端一致
token = charles[web]
type = http
# 本地机器上 Web 服务对应的端口
local_port = 80
# 绑定自定义域名
custom_domains = www.***.net
./frpc -c ./frpc.ini

5.3 访问

http://frp.***.net:8080

6 对外提供简单的文件访问服务(测试失败)

通过 static_file 插件可以对外提供一个简单的基于 HTTP 的文件访问服务。

6.1 服务端

[common]
# 服务器端监听的端口,默认是7000,可自定义
bind_port = 7000
# 设置 http 访问端口为 8080
vhost_http_port = 8080
# 用于身份验证,请自行修改,要保证服务端与客户端一致
token = charles
./frps -c ./frps.ini

6.2 客户端

[common]
# 外网-服务器端ip
server_addr = 121.**.**.124
# 外网-服务器端监听的端口(必须与Frps.ini中的配置一致)
server_port = 7000
# 用于身份验证,请自行修改,要保证服务端与客户端一致
token = charles[test_static_file]
type = tcp
remote_port = 6000
plugin = static_file
# 要对外暴露的文件目录
plugin_local_path = /tmp
# 访问 url 中会被去除的前缀,保留的内容即为要访问的文件路径
plugin_strip_prefix = static
# 用户名
plugin_http_user = admin
# 密码
plugin_http_passwd = root
./frpc -c ./frpc.ini

6.3 访问

http://121.**.**.124:6000/static/

7 统计面板

通过浏览器查看 frp 的状态以及代理统计信息展示。

注:Dashboard 尚未针对大量的 proxy 数据展示做优化,如果出现 Dashboard 访问较慢的情况,请不要启用此功能。

需要在 frps.ini 中指定 dashboard 服务使用的端口,即可开启此功能:

7.1 服务端

frps.ini

[common]
dashboard_port = 7500
# dashboard 用户名密码,默认都为 admin
dashboard_user = admin
dashboard_pwd = root

7.2 访问

http://121.**.**.124:7500

8 加密与压缩

这两个功能默认是不开启的,需要在 frpc.ini 中通过配置来为指定的代理启用加密与压缩的功能,压缩算法使用 snappy:

8.1 客户端

frpc.ini

[ssh]
type = tcp
local_port = 22
remote_port = 6000
use_encryption = true
use_compression = true

如果公司内网防火墙对外网访问进行了流量识别与屏蔽,例如禁止了 SSH 协议等,通过设置 use_encryption = true,将 frpc 与 frps 之间的通信内容加密传输,将会有效防止流量被拦截。

如果传输的报文长度较长,通过设置 use_compression = true 对传输内容进行压缩,可以有效减小 frpc 与 frps 之间的网络流量,加快流量转发速度,但是会额外消耗一些 CPU 资源。

9 TLS

从 v0.25.0 版本开始 frpc 和 frps 之间支持通过 TLS 协议加密传输。通过在 frpc.inicommon 中配置 tls_enable = true 来启用此功能,安全性更高。

为了端口复用,frp 建立 TLS 连接的第一个字节为 0x17。

注意: 启用此功能后除 xtcp 外,不需要再设置 use_encryption。

10 代理限速

目前支持在客户端的代理配置中设置代理级别的限速,限制单个 proxy 可以占用的带宽。

10.1 客户端

frpc.ini

[ssh]
type = tcp
local_port = 22
remote_port = 6000
bandwidth_limit = 1MB

在代理配置中增加 bandwidth_limit 字段启用此功能,目前仅支持 MBKB 单位。

11 范围端口映射

在 frpc 的配置文件中可以指定映射多个端口,目前只支持 tcp 和 udp 的类型。

这一功能通过 range: 段落标记来实现,客户端会解析这个标记中的配置,将其拆分成多个 proxy,每一个 proxy 以数字为后缀命名。

例如要映射本地 6000-6005, 6007 这 6 个端口,主要配置如下:

11.1 客户端

[range:test_tcp]
type = tcp
local_ip = 127.0.0.1
local_port = 6000-6006,6007
remote_port = 6000-6006,6007

实际连接成功后会创建 8 个 proxy,命名为 test_tcp_0, test_tcp_1 ... test_tcp_7

12 其他参考

12.1 服务端

frps.ini

# 下面这句开头必须要有,表示配置的开始
[common]
# frps绑定端口 (必选)
bind_port = 7000
# frps 日志 (可选)
log_file = ./frps.log
# frps 日志等级 (可选)
log_level = warn
# frps 日志存放天数 (可选)
log_max_days = 30
# 默认为900秒,即15分钟,如果设置成0就不会对报文时间戳进行超时验证
authentication_timeout = 900
# 仪表盘端口,只有设置了才能使用仪表盘(即后台)
dashboard_port = 7500
# 仪表盘访问的用户名密码,如果不设置,则默认都是 admin
dashboard_user = admin
dashboard_pwd = admin
# frp 穿透访问内网中的网站监听端口 配合后面使用nginx做域名绑定访问
vhost_http_port = 7001
# 将 frp.so.codeceo.org 解析到服务端后,可以使用此域名来访问客户端对应的 http
subdomain_host = frp.so.codeceo.org

12.2 客户端

frpc.ini

[common]
# 服务端公网IP
server_addr = xxx.xxx.xxx.xxx
# 服务端frps绑定端口
server_port = 7000[web1]
type = http
local_port = 80
custom_domains = web1.***.org[web2]
type = http
local_ip = localhost
local_port = 9528
use_gzip = true
custom_domains = web2.***.org[web6]
type = http
local_port = 80
custom_domains = web6.***.org

13 常见报错

./frps: cannot execute binary file: Exec format error
说明软件版本与服务器架构选择不匹配,更换版本即可解决。

参考地址:

https://www.jianshu.com/p/6be158cc3685

https://segmentfault.com/a/1190000021876836

https://www.cnblogs.com/liscookie/p/11237615.html

内网穿透 frp : 隐藏通信隧道技术相关推荐

  1. ipv6 访问内网_【内网渗透】—— 隐藏通信隧道技术之网络层隧道技术

    hidden:是否完全隐藏控制面板,还有很多设置参数,比如也可以设置显示面板,然后设置宽高WIDTH="整数" 和 HIGH="整数". 1. 隐藏通信隧道基础 ...

  2. 内网渗透之隐藏通信隧道

    前言 在实际的网络中,通常会通过各种边界设备.软/硬件防火墙甚至入侵检测系统来检查对外连接情况,如果发现异样,就会对通信进行阻断. 那么什么是隧道呢?隧道就是一种绕过端口屏蔽的通信方式.防火墙两端的数 ...

  3. 内网安全 隐藏通信隧道技术——应用层.(遨游于 内网任何主机)

    隐藏通信隧道技术. 隐藏通信隧道就是一种 绕过端口屏蔽的通信方式.防火墙两端的数据包通过防火墙所允许的数据包类型或者端口进行封装,然后穿过防火墙,与对方进行通信.当被封装的数据包到达目的地时,将数据包 ...

  4. 内网安全 隐藏通信隧道技术——传输层.(遨游于 内网任何主机)

    隐藏通信隧道技术. 隐藏通信隧道就是一种 绕过端口屏蔽的通信方式.防火墙两端的数据包通过防火墙所允许的数据包类型或者端口进行封装,然后穿过防火墙,与对方进行通信.当被封装的数据包到达目的地时,将数据包 ...

  5. 第三章 隐藏通信隧道技术

    第三章 隐藏通信隧道技术 3.1 隐藏通信隧道基础知识 3.1.1 隐藏通信隧道概述 什么是隧道? 在实际的网络中,通常会通过各种边界设备.软/硬件防火墙甚至入侵检测系统来检查对外连接情况,如果发现异 ...

  6. DAY43(DAY44拓展):隐藏通信隧道技术的概述与使用

    DAY43(DAY44拓展):隐藏通信隧道技术的概述与使用 OSI 七层模型 物链网传会表应 常用的隧道技术: (1)网络层:IPv6隧道.ICMP隧道.GRE隧道 (2)传输层:TCP隧道.UDP隧 ...

  7. 内网穿透-Frp(1)使用樱花Frp(Sakura Frp)进行免费的内网穿透操作步骤

    背景介绍:因需要在4G路由器(openwrt,mips架构)上提高页面和视频流展示,需要在公网能访问的,问题:4G卡不能固定IP,所以没办法使用公网+端口映射方式进行:故采取内网穿透frp方式进行公网 ...

  8. 记录linux的内网穿透frp操作

    记录linux的内网穿透frp操作 由于本人在宿舍偶尔需要查看实验室内电脑程序结果及传输一些文件,不得不利用frp内网穿透,需要准备以下三台电脑,如果有多个客户端,也可以进行配置: 一.一台具有公网i ...

  9. frp内网穿透远程访问、运维技术

    1.背景 为了解决因电力负荷供应紧张时的用电问题,电网针对商业楼宇.企业园区.学校等场所建设了很多了边缘设备.能效控制器以及负控终端,系统基本采用云-管-边-端或者总站-子站-单元的架构设计,边端通过 ...

最新文章

  1. R语言ggplot2可视化:可视化水平堆叠条形图(horizontal stacked bar plot)并在条形图中的每个分组条形区域显示区域占整体的百分比数值标签
  2. 出现module ‘xgboost‘ has no attribute ‘DMatrix‘的临时解决方法
  3. 4.12 《硬啃设计模式》 第29章 行为型设计模式小结
  4. windows10mysql安装包_windows10上安装mysql8(zip包)
  5. Mybatis多对多,复杂增删改查(特殊需求循环插入,分组查询)
  6. win和mac系统Sublime Text 3配置编译c和c++
  7. 时空图卷积神经网络(st-gcn)论文解读
  8. mvc js ajax实例,MVC ajax异步上传文件例子(ajaxFileUpload)
  9. 《趣谈网络协议》数据中心相关知识总结
  10. python的交并补_Python 集合的交差并补操作及方法
  11. 笔记本插拔电源屏闪问题
  12. libx264 编码参数调整--流媒体
  13. ls算法java实现_Java API之算法 | 学步园
  14. html语义化标签和无语义化标签
  15. 什么是SEO优化-SEO优化工具-SEO优化软件
  16. 新年金市上行动力堪忧 美债收益率大幅上涨
  17. 天成之作,踏云而来——“天成云”升级发布,领航企业云计算发展第三阶段
  18. iOS判断运营商类型
  19. 辛选主播首秀即登榜,直播复盘背后的“吸金术”
  20. lqc_SSH配置与使用

热门文章

  1. 随机数生成方法 Java Random
  2. 微信加入“微社区” Discuz!发力移动社交
  3. 启动停止nginx服务
  4. css小三角气泡效果,纯CSS实现聊天框小尖角、气泡效果
  5. linux suse创建用户及密码,suse linux下创建用户方式
  6. pythonopencv读取图像属性_2、OpenCV Python 图像属性获取
  7. 无法连接到打印机,操作失败,错误为0x0000007c
  8. 2018年上半年信息安全工程师下午案例题及解析
  9. python传递参数给sql_Python MySQLdb 执行sql语句时的参数传递方式
  10. 想换个手机,目前最值得入手的手机有哪些推荐?