使用frp搭建内网穿透(2023.12)

一、概述

FRP是一款基于golang、开源的跨平台内网穿透工具,支持http、https、tcp、udp等协议,同时也支持tls、白名单等安全配置,具有较高的安全性。FRP的原理是利用反向代理技术将公网请求转发至内网服务器上,并将内网服务器的响应再次转发至公网请求者。在实现内网穿透时,FRP能够将公网与内网之间的隔离突破,使得公网用户可以直接访问内网服务器上的资源,从而实现远程访问和管理。

Github地址:github.com/fatedier/fr...

官方中文文档:gofrp.org/zh-cn/docs/...

二、前期准备

1. 域名(可选)

需要已备案的域名,绑定域名后可以通过对应的域名进行访问。若不使用域名,也可以使用公网ip进行访问。

2. 具有公网ip的服务器(必需)

需要将FRP的服务端部署在具有公网ip的服务器做中转。

可以购买云厂商入门级云服务器,新用户几十块一年。

三、搭建服务端(云服务器)

1. 服务端FRP应用程序下载

可以通过wget下载,也可以登录GitHub进入FRP仓库的release进行对应版本下载。

此处下载版本为0.52.3

ruby 复制代码
wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz

下载好之后,直接解压,并进入对应目录:

shell 复制代码
$ tar -axvf frp_0.52.3_linux_amd64.tar.gz
$ cd frp_0.52.3_linux_amd64

可以看到以下文件:

sql 复制代码
ubuntu@VM-12-8-ubuntu:~/www/frp/frp_0.52.3_linux_amd64$ ll
total 30008
drwxr-xr-x 2 ubuntu ubuntu     4096 Dec 11 15:36 ./
drwxrwxr-x 3 ubuntu ubuntu     4096 Dec 11 14:10 ../
-rwxr-xr-x 1 ubuntu ubuntu 13905920 Oct 24 10:56 frpc*
-rw-r--r-- 1 ubuntu ubuntu      167 Dec 11 14:19 frpc.toml
-rwxr-xr-x 1 ubuntu ubuntu 16789504 Oct 24 10:56 frps*
-rw-r--r-- 1 ubuntu ubuntu      206 Dec 11 15:36 frps.toml
-rw-r--r-- 1 ubuntu ubuntu    11358 Oct 24 10:57 LICENSE

其中:frpcfrpc.toml为FRP客户端的可执行文件和配置文件,frpsfrps.toml为FRP服务端的可执行文件和配置文件。

2. 服务端配置文件编写

此处仅展示基础配置,更多配置请查看文档。

文档: gofrp.org/zh-cn/docs/...

复制代码
vim frps.toml
ini 复制代码
#frps服务监听的本机端口
bindPort = 57000    

#frps服务web界面配置
webServer.addr = "0.0.0.0"
webServer.port = 57001
webServer.user = "admin"
webServer.password = "admin123"

# frpc客户端连接鉴权token,默认为token模式,可选oidc
auth.token="b652ecc32bb9"

#日志打印配置
log.to = "./log"
log.level = "info"
log.maxDays = 7

3. 服务端启动

启动前,可以利用frps的校验命名检查配置文件是否有错。

bash 复制代码
$ ./frps verify -c  ./frps.toml 
frps: the configuration file ./frps.toml syntax is ok

启动服务:

./frps -c ./frps.toml

ini 复制代码
$ ./frps -c ./frps.toml 
2023/12/11 15:36:05 [I] [root.go:102] frps uses config file: ./frps.toml
2023/12/11 15:36:05 [I] [service.go:200] frps tcp listen on 0.0.0.0:57000
2023/12/11 15:36:05 [I] [service.go:312] Dashboard listen on 0.0.0.0:57001
2023/12/11 15:36:05 [I] [root.go:111] frps started successfully

frps started successfully即服务端启动成功。

4. 访问web ui 进行验证

浏览器访问:[公网ip]:57001

四、搭建客户端(内网机器)

此处选择的内网机器为linux。

如若需要配置为window系统的,可以下载对应的window客户端,配置文件方法一致。

1. 客户端FRP应用程序下载

此处下载同服务端。客户端使用的可执行文件为frpc

2. 客户端配置文件编写

vim frpc.toml

ini 复制代码
#token需要与服务端的token一致
auth.token = "b652ecc32bb9"
# 服务端的公网ip
serverAddr = "xx.xx.xx.xx"
# 服务端的监听端口
serverPort = 57000

[[proxies]]
# 名称 需要唯一
name = "test-tcp"
# 类型tcp  
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
#访问服务端被转到本机当前配置的对应端口
#比如此处是57002,那外网访问服务端公网ip:57002则会被转发访问本配置127.0.0.1:22端口
remotePort = 57002

3. 客户端启动

ini 复制代码
$ ./frpc -c ./frpc.toml 
2023/12/11 08:22:33 [I] [root.go:139] start frpc service for config file [./frpc.toml]
2023/12/11 08:22:34 [I] [service.go:299] [caa9ce2572ebf026] login to server success, get run id [caa9ce2572ebf026]
2023/12/11 08:22:34 [I] [proxy_manager.go:156] [caa9ce2572ebf026] proxy added: [test-tcp]
2023/12/11 08:22:34 [I] [control.go:173] [caa9ce2572ebf026] [test-tcp] start proxy success

[test-tcp] start proxy success 启动成功

4. 利用xshell连接访问验证

输入内网机器的用户名和密码

连接成功:

至此,FRP简单配置内网穿透已完成。

可参考配置文档进行个性化配置,满足自己的使用。

五、结语

本文只示例了使用公网ip进行配置,FRP也支持使用域名及二级域名进行配置。

相关推荐
虾..8 小时前
Linux 软硬链接和动静态库
linux·运维·服务器
Evan芙8 小时前
Linux常见的日志服务管理的常见日志服务
linux·运维·服务器
hkhkhkhkh12310 小时前
Linux设备节点基础知识
linux·服务器·驱动开发
HZero.chen11 小时前
Linux字符串处理
linux·string
张童瑶11 小时前
Linux SSH隧道代理转发及多层转发
linux·运维·ssh
汪汪队立大功12311 小时前
什么是SELinux
linux
石小千11 小时前
Linux安装OpenProject
linux·运维
柏木乃一11 小时前
进程(2)进程概念与基本操作
linux·服务器·开发语言·性能优化·shell·进程
Lime-309011 小时前
制作Ubuntu 24.04-GPU服务器测试系统盘
linux·运维·ubuntu
百年渔翁_肯肯12 小时前
Linux 与 Unix 的核心区别(清晰对比版)
linux·运维·unix