frp介绍

frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。frp 项目官网是

https://github.com/fatedier/frp​github.com/fatedier/frp

frp工作原理

- 服务端运行,监听一个主端口,等待客户端的连接;- 客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型;- 服务端fork新的进程监听客户端指定的端口;- 外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端;- 客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。

前提条件

  • 具有公网ip的服务器

服务端配置

1. 下载frp

下载链接见评论区

2. 解压frp

tar -zxvf frp_0.33.0_linux_amd64.tar.gz

3. 进入该解压目录,并进行配置

cd frp_0.33.0_linux_amd64/

打开配置文件

vim frps.ini

将文件内容修改为如下:

[common] 
# frp监听的端口,默认是7000,可以改成其他的 
bind_port = 7000 
# 授权码,请改成更复杂的 
token = test
# 这个token之后在客户端会用到 
# 服务端映射的端口
vhost_http_port = 9000

# frp管理后台端口,请按自己需求更改 
dashboard_port = 7500 
# frp管理后台用户名和密码,请改成自己的 
dashboard_user = admin 
dashboard_pwd = admin 
enable_prometheus = true 
# frp日志配置 
log_file = /var/log/frps.log 
log_level = info 
log_max_days = 3

 

4. 设置和启动frp服务

sudo mkdir -p /etc/frp 
sudo cp frps.ini /etc/frp 
sudo cp frps /usr/bin 
# 将名为frps.service的systemd 服务单元文件复制
sudo cp systemd/frps.service /usr/lib/systemd/system/ 
# 使其系统启动时自动启动
sudo systemctl enable frps
# 启动frps服务
sudo systemctl start frps

5.防火墙开放端口

云服务器需要在安全组中开放端口,否则无法访问(需要在云服务器后台配置)

下列代码表示关闭对应端口的防火墙

# 添加监听端口
sudo firewall-cmd --permanent --add-port=7000/tcp 
# 添加管理后台端口 
sudo firewall-cmd --permanent --add-port=7500/tcp 
sudo firewall-cmd --reload

7000和7500两个端口分别对应frps.ini配置中的bind_port和dashboard_port

 

Linux客户端配置

1. 下载frp

见评论区

2. 解压frp

tar -zxvf frp_0.33.0_linux_amd64.tar.gz

3. 进入该解压目录,并进行配置

cd frp_0.33.0_linux_amd64/

打开配置文件

# 注意不是frps.ini
vim frpc.ini 

修改内容如下

# 客户端配置 
[common] server_addr = 服务器ip 
# 与frps.ini的bind_port一致
server_port = 7000 
# 与frps.ini的token一致 
token = test
# 配置ssh服务 
[ssh] 
type = tcp 
local_ip = 127.0.0.1 
local_port = 22 
remote_port = 6000 

# 这个自定义,之后再ssh连接的时候要用 
# 配置http服务,可用于小程序开发、远程调试等,如果没有可以不写下面的 

[web] 
type = http 
local_ip = 127.0.0.1
# 自定义客户端要映射到服务端的端口
local_port = 8080 
# web域名 
subdomain = 自己的域名
# 与frps.ini的vhost_http_port一致
remote_port = 9000

注意:server_addr填写为远程服务器的IP;subdomain为自己的域名;local_port为本地要映射的端口

4. 防火墙开放端口

sudo firewall-cmd --permanent --add-port=8080/tcp 
sudo firewall-cmd --reload

8080端口对应frcs.ini配置中的local_port

5. 在客户端启动

./frpc -c frpc.ini

出现下图表示成功:

参考文章:

frp配置内网穿透教程(超详细)-腾讯云开发者社区-腾讯云​cloud.tencent.com/developer/article/1837482

frp中文文档

https://github.com/fatedier/frp/blob/dev/README_zh.md​github.com/fatedier/frp/blob/dev/README_zh.md