使用FRP做内网穿透
Github地址:https://github.com/fatedier/frp
什么是FRP?
frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。
怎么用FRP
下载FRP
https://github.com/fatedier/frp/releases
配置
此文章使用的是FRP版本为 v0.24.1
FRP的配置很简单,最常见的有两种情况:
- 需要通过公网访问内网的SSH/RemoteDesktop
- 需要通过公网访问内网的Webserver
对于第一种情况,需要FRP转发TCP即可。
对于第二种情况,需要转发HTTP/HTTPS,FRP支持多虚拟主机,先指定端口,然后根据域名,转发到各个虚拟主机。当然,既然是HTTP/HTTPS,那也可以像第一种情况那样走TCP协议,来达到转发效果。
本文只对反向代理TCP做简要介绍 , 详细配置请参考:https://github.com/fatedier/frp/blob/master/README_zh.md
服务端配置:
[common]
bind_port = 7000
dashboard_user= admin
dashboard_pwd= admin
dashboard_port= 7001
token = 666
启动服务端:
./frps -c ./frps.ini
客户端配置:
[common]
server_addr = 66.66.66.66
server_port = 7000
token = 666
[RDP_Home]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 7002
use_encryption = true
use_compression = true
[Web_01]
type = tcp
local_ip = 127.0.0.1
local_port = 443
remote_port = 7003
use_encryption = true
use_compression = true
启动客户端:
./frpc -c ./frpc.ini
请读者自行配制防火墙。
参数配置
| 参数 | 备注 | |
|---|---|---|
| 服务端: | ||
| 1 | bind_port | 用于反向代理的端口 |
| 2 | dashboard_user | 通过浏览器查看 frp 的状态以及代理统计信息展示。用户名 |
| 3 | dashboard_pwd | 密码 |
| 4 | dashboard_port | 端口 |
| 5 | token | 只有于客户端一致,才能使用FRP |
| 客户端: | ||
| 1 | server_addr | 服务器IP地址 |
| 2 | server_port | 服务器的bind_port |
| 3 | token | 只有于服务端一致,才能使用FRP |
| 4 | type | 本文使用的是tcp |
| 5 | local_ip | 127.0.0.1 |
| 6 | local_port | 端口 |
| 7 | remote_port | 服务器对外端口 |
| 8 | use_encryption | true 启用加密 |
| 9 | use_compression | true 启用压缩 |
参考
声明
本文采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可,发表在CSDN和博客园,欢迎读者转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接!请读者/爬虫们尊重版权
使用FRP做内网穿透的更多相关文章
- 分享下超实用的用skura frp做内网穿透的经验
操作目的: 使无公网ip的主机能被外网访问,实现ssh对服务器的远程管理 硬件准备: 1.服务端:skura frp主机(skura frp 免费提供,有待创建) 2.客户端:接在无线路由器(内网)上 ...
- frp 用于内网穿透的基本配置和使用
frp 用于内网穿透的基本配置和使用 今天是端午节,先祝端午安康! frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP.UDP.HTTP.HTTPS 等多种协议.可以将内网服务以安全.便 ...
- 疫情之下,使用FRP实现内网穿透,远程连接公司电脑进行办公
当前情况下,经常会有需要到公司电脑进行一些操作,比如连接内网OA,数据库或者提交文档.为了减少外出,将使用frp进行内网穿透的方法进行一个说明. 前提条件 1. 一台拥有公网 IP 的设备(如果没有, ...
- 基于frp的内网穿透实例4-为本地的web服务实现HTTPS访问
原文地址:https://wuter.cn/1932.html/ 一.想要实现的功能 目前已经实现将本地的web服务暴露到公网,现想要实现https访问.(前提:已经有相应的证书文件,如果没有就去申请 ...
- frp实现内网穿透
frp实现内网穿透 目标 通过外网访问内网设备,本文中实现通过手机的移动流量,可以访问到树莓派设备 设备准备 需要被访问的设备(本文中使用Raspberry Pi`).公网IP设备(本文中使用阿里云 ...
- frp+nginx内网穿透
frp+nginx内网穿透 背景:自己有台内网Linux主机,希望被外网访问(ssh.http.https): 准备工作 内网Linux主机-c,可以访问c主机和外网的主机-s(windows/lin ...
- 使用frp进行内网穿透,实现ssh远程访问Linux服务器
搭建一个完整的frp服务链需要: VPS一台(也可以是具有公网IP的实体机) 访问目标设备(就是你最终要访问的设备) 简单的Linux基础(如果基于Linux配置的话) 我这里使用了腾讯云服务器作为服 ...
- 如何使用 frp 实现内网穿透
这有一个专注Gopher技术成长的开源项目「go home」 背景 作为一名程序员,家里多多少少会有一些落了灰的电脑,如果把闲置的电脑变成服务器,不仅有良好的配置,还能用来做各种测试,那就再好不过了. ...
- 基于frp的内网穿透实例1-通过SSH访问内网机器
原文地址:https://wuter.cn/1804.html/ 老母鸡终于到了,作为一个能运行linux系统的四核1G硬件,它还是比较小巧的. FRP 全名:Fast Reverse Proxy.F ...
随机推荐
- Linux/UNIX编程:实现简单 tee 命令
思路很简单,从标准输入文件描述符读入数据,然后同时向标准输出和参数指定的文件写出数据:如果加了 -a 选项,则以追加的方式向文件写出数据.还没了解 getopt() 函数就没判断参数是否合法. #in ...
- python学习--quote()函数
屏蔽特殊的字符.比如如果url里面的空格!url里面是不允许出现空格的. 在 Python2.x 中的用法是:urllib.quote(text)Python3.x 中是urllib.parse.qu ...
- SpringBoot之ApplicationRunner接口和@Order注解
我们在开发中可能会有这样的情景.需要在容器启动的时候执行一些内容.比如读取配置文件,数据库连接之类的.SpringBoot给我们提供了ApplicationRunner接口来帮助我们实现这种需求.该接 ...
- 【大白话系统】MySQL 学习总结 之 缓冲池(Buffer Pool) 的设计原理和管理机制
一.缓冲池(Buffer Pool)的地位 在<MySQL 学习总结 之 InnoDB 存储引擎的架构设计>中,我们就讲到,缓冲池是 InnoDB 存储引擎中最重要的组件.因为为了提高 M ...
- Source Code Structure - Python 源码目录结构
Source Code Structure - Python 源码目录结构 Include 目录包含了 Python 提供的所有头文件, 如果用户需要用 C 或 C++ 编写自定义模块扩展 Pytho ...
- 《Head first设计模式》之抽象工厂
抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类. 确保原料的一致 披萨店成功的关键在于新鲜.高质量的原料.要如何确保每家加盟店使用高质量的原料?你打算建造一家生成原料的 ...
- css常用元素通用样式表
@charset "utf-8";html,body,a,h1,h2,h3,h4,h5,h6,p,a,b,i,em,s,u,dl,dt,dd,ul,ol,li,strong,spa ...
- pt-query-digest 慢日志监控
一.安装percona-toolkit,以centos为例 yum -y install https://repo.percona.com/yum/percona-release-latest.noa ...
- Navicat 导入数据时报Incorrect datetime value: '0000-00-00 00:00:00.000000' 错误
今天重装了个系统,装好MySQL和Navicat之后导入SQL时报了Incorrect datetime value: '0000-00-00 00:00:00.000000' 错误, 查了资料说是m ...
- JS获取最近三个月日期范围
function getLast3Month() { var now = new Date(); var year = now.getFullYear(); var month = now.getMo ...