Frp协议编译构建和基本使用

文章目录

    • Frp概述
    • 编译Frp
      • 下载Frp项目源码
      • 搭建go开发环境
      • 编译Frp项目
      • 问题处理
    • Frp协议的原理
    • Frp协议的作用
    • 配置Frp项目
      • 公网服务器部署FRP服务端frps
      • 内网设备部署FRP客户端frpc

Frp概述

Frp项目是一个基于Go语言开发的反向代理项目。它允许用户将位于NAT内网和防火墙里的本地服务暴露给互联网,目前支持的的通信协议包括:TCP、UDP、HTTP、HTTPS。使用Frp协议我们可以将请求通过域名转发到内部服务。 frp现在还支持P2P连接模式。

编译Frp

下载Frp项目源码

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

搭建go开发环境

# Go官方网站https://golang.org/dl/
tar -C /usr/local -xzf go1.17.linux-amd64.tar.gz #解压缩代码包到系统目录
vim ~/.bashrc #打开环境变量目录
export PATH=$PATH:/usr/local/go/bin  ##添加Go的环境变量
source ~/.bashrc  #使环境变量生效
go version   #查看go的版本信息

编译Frp项目

#下载frp项目
git clone https://github.com/fatedier/frp.git 
cd frp

#编译Frp项目
make 

问题处理

编译过程中出现如下错误:
509: certificate is valid for *.onedns.net, onedns.net, not proxy.golang.org报错

这个错误是由于SSL证书验证不通过导致的。错误信息表明证书是针对 *.onedns.net 和 onedns.net 进行验证的,而不是针对 proxy.golang.org。这种情况通常出现在使用代理服务器时,代理服务器可能会替换或篡改 SSL 证书,导致验证失败。在使用 Go 语言的 go get 命令下载依赖包时,可能会遇到这个问题。解决这个问题的方法是配置 Go 语言的环境变量 GOPROXY,将代理服务器地址设置为正确的值。可以使用以下命令设置环境变量:

export GOPROXY=https://goproxy.cn,direct  

另外,如果你使用的是 Go 1.13 及以上版本,还可以使用 go env -w 命令进行全局配置:

go env -w GOPROXY=https://goproxy.cn,direct

报错frpc login to server failed: i/o deadline reached
可以在客户端的配置文件frpc.ini中加入一条配置tls_enable = true,tls是一种加密协议,可以避免信息被过滤掉。

Frp协议的原理

Frp协议的基本原理是采用“反向代理”技术,将公网上的请求转发到内网计算机上,从而实现内网穿透目的。其基本流程如下:
1.在公网上配置一个Frp服务器,该服务器具有公网IP地址和一个开放的端口。
2.在内网计算机中配置一个Frp客户端,该客户端连接到Frp服务器,并注册需要进行穿透的服务信息(IP地址、端口号等)。
3.当Frp客户端需要被外部应用访问时,它会向Frp服务器发送请求,请求Frp服务器将该请求转发给目标内网服务。
4.Frp服务器通过与Frp客户端之间建立的连接,将请求转发到Frp客户端中连接的目标内网服务。
5.目标内网服务响应请求并将结果返回给Frp客户端,Frp客户端将结果转发给Frp服务器,最终返回给请求方。

需要注意的是,Frp协议并不能真正地穿透内网,它只是通过合理的端口映射和数据传输技术,将内网中的服务展现在公网上。同时,Frp客户端和Frp服务器之间的通信采用了安全协议,并通过密码进行认证,确保通信的安全性和可靠性。Frp协议是一种基于反向代理的TCP/UDP穿透技术,它利用公网服务器将内网中的服务映射到公网上,从而实现内网穿透、跨防火墙访问等功能。

Frp协议的作用

Frp是一款TCP/UDP反向代理工具,它可以将内网计算机映射到公网上,从而实现远程访问、穿透NAT和防火墙、内网穿透等功能。
具体来说,Frp主要有以下三个作用:
1.穿透内网:Frp可以将内网服务通过一个外网服务器进行转发,从而实现内网穿透。
2.穿透防火墙:Frp可以绕过防火墙限制,将内网服务发布到公网上。在一些特殊情况下,例如公共场所网络,防火墙通常会限制对特定端口的访问,这些限制可以通过Frp来绕过。
3.给内网计算机提供公网访问:企业中,一些内网服务器可能需要被外部访问,例如Web服务器、FTP服务器等。这种场景下,Frp可以作为一个反向代理服务器,将来自Internet的请求转发到内网服务器上。
由于Frp开源,支持跨平台,使用方便,并且具有较高的稳定性和安全性,成为一种比较受欢迎的内网穿透工具。在实际应用中,Frp可以方便远程工作、文件共享、视频监控等多种用途。

配置Frp项目

公网服务器部署FRP服务端frps

#frps.ini  
[common]
bind_port = 7000  #用于和FRP客户端通信
kcp_bind_port = 7000 #加速TCP访问
token = 1234 #核实身份用, 加了更安全
#启动服务端
 ./frps -c ./frps.ini

内网设备部署FRP客户端frpc

#frpc.ini  
[common]
server_addr = x.x.x.x    #公网服务器IP
server_port = 7000       #服务器端口
protocol = kcp           #开启加速
token = 12345            #与服务端一致
login_fail_exit = false  #无网络时一直等待不退出

[vnc]
type = tcp
local_ip = x.x.x.x
local_port = 5900
remote_port = 5900
use_encryption = true
use_compression = true

[ssh]
type = tcp
local_ip = x.x.x.x
local_port = 22
remote_port = 6000
use_encryption = true
use_compression = true
#启动客户端
 ./frpc -c ./frpc.ini 

你可能感兴趣的:(网络处理,网络代理,Frp,内网穿透)