使用frp搭建内网穿透

一、概述

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也支持使用域名及二级域名进行配置。

 

使用 systemd

此示例演示如何在 Linux 系统下使用 systemd 来管理 frps 服务,包括启动、停止、配置后台运行和设置开机自启动。

在 Linux 系统下,使用 systemd 可以方便地控制 frps 服务端的启动、停止、配置后台运行以及开机自启动。

以下是具体的操作步骤:

  1. 安装 systemd

    如果您的 Linux 服务器上尚未安装 systemd,可以使用包管理器如 yum(适用于 CentOS/RHEL)或 apt(适用于 Debian/Ubuntu)来安装它:

     
    # 使用 yum 安装 systemd(CentOS/RHEL)
    yum install systemd
    
    # 使用 apt 安装 systemd(Debian/Ubuntu)
    apt install systemd
    
  2. 创建 frps.service 文件

    使用文本编辑器 (如 vim) 在 /etc/systemd/system 目录下创建一个 frps.service 文件,用于配置 frps 服务。

     
    $ sudo vim /etc/systemd/system/frps.service
    

    写入内容

     
    [Unit]
    # 服务名称,可自定义
    Description = frp server
    After = network.target syslog.target
    Wants = network.target
    
    [Service]
    Type = simple
    # 启动frps的命令,需修改为您的frps的安装路径
    ExecStart = /path/to/frps -c /path/to/frps.toml
    
    [Install]
    WantedBy = multi-user.target
    
  3. 使用 systemd 命令管理 frps 服务

     
    # 启动frp
    sudo systemctl start frps
    # 停止frp
    sudo systemctl stop frps
    # 重启frp
    sudo systemctl restart frps
    # 查看frp状态
    sudo systemctl status frps
    
  4. 设置 frps 开机自启动

     
    sudo systemctl enable frps
    

通过遵循上述步骤,您可以轻松地使用 systemd 来管理 frps 服务,实现启动、停止、自动运行和开机自启动。确保替换路径和配置文件名称以匹配您的实际安装。

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容