aniwoh的blog

使用frp进行反向代理及绑定域名

Frp介绍

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

frp工作原理

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

frp配置教程

使用frp你需要有一台有公网IP的服务器,配置教程分为两部分,我们先进行服务端的配置

服务端配置

先去GitHub上下载符合你设备版本的包,也可以直接通过git来下载,下载后上传到服务器端,可以使用xftp等软件,解压缩后进入frp的文件夹


在服务端我们需要配置的是frps.ini

将该文件修改为

[common]
# frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000
token = 52010  
# 这个token可以看成连接时的密码,改为你需要的,在后面配置客户端时需要

# 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

这样服务器端就基本配置好了,但是为了更好的使用frp,推荐配置一下systemctl来控制frp的启动,可以跳转到文章最后的优化中先进行配置

配置好systemctl后启动frp并打开自启动,然后访问“服务器IP:后台管理端口”,并输入用户名密码


出现上述页面,则代表服务器端配置好了

客户端配置

与服务器端一样,下载好文件后,打开frpc.ini
将文件内容修改为

# 客户端配置
[common]
server_addr = 服务器ip
server_port = 7000 # 与frps.ini的bind_port一致
token = 52010  # 与frps.ini的token一致

#下面的每一段都代表一个服务,想要多少个,自己配置就行
[tcp]
type = tcp #这里填你的服务类型,一般用tcp就行,可以换成udp、http等
local_ip = 127.0.0.1
local_port = 1234  #这里填写客户端上需要代理到服务器的端口
remote_port = 4321 #这里填写映射到服务器端的端口

上述配置代表将客户端上的1234端口映射到服务器端的4321端口

注意:上述[tcp]中的名称必须全局唯一,同时要注意开放相关端口

配置好systemctl后,启动客户端,这样就配置好了

常见问题

如果配置好后还是无法访问,可以按照以下步骤检查:

1.先检查你的防火墙是否开放相关端口,检查好后记得重启一下服务器

2.查看你的frp状态,可以通过sudo systemctl status frps来查看

3.查看相关文件权限,授予frp文件可执行权力

优化

使用域名来访问

通过IP加端口的方式来访问内网的服务有点不方便,绑定域名会方便一点

由于我使用的宝塔面板,会方便一点,添加一个新的站点

在新的站点中添加一个反向代理,目标url中填写你的IP+端口

这样添加好后就可以通过test.aniwoh.top来访问1.1.1.1:1234

这里需要注意的是,如果你的服务器在国内,需要备案后才可以访问,同时如果你不想特地为了反向代理下载一个宝塔,可以直接通过改nginx配置文件来实现

转载)">使用systemctl来控制frp的启动(转载

服务器端:

sudo vi /lib/systemd/system/frps.service

[Unit]
Description=fraps service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/opt/soft/frp/frp_0.33.0_linux_amd64/frps -c /opt/soft/frp/frp_0.33.0_linux_amd64/frps.ini 

[Install]
WantedBy=multi-user.target

客户端:

sudo vi /lib/systemd/system/frpc.service

[Unit]
Description=frpc service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
#启动服务的命令(此处写你的frpc的实际安装目录)
ExecStart=/opt/soft/frp/frp_0.33.0_linux_amd64/frpc -c /opt/soft/frp/frp_0.33.0_linux_amd64/frpc.ini

[Install]
WantedBy=multi-user.target

服务端frps的启动与停止

# 启动frps 
sudo systemctl start frps 

# 打开自启动
sudo systemctl enable frps

# 重启应用
sudo systemctl restart frps

# 停止应用
sudo systemctl stop frps

# 查看应用的日志
sudo systemctl status frps

# 停止开机自启动
systemctl disable frps

客户端frpc的启动与停止

# 启动frps 
sudo systemctl start frpc 

# 打开自启动
sudo systemctl enable frpc

# 重启应用
sudo systemctl restart frpc

# 停止应用
sudo systemctl stop frpc

# 查看应用的日志
sudo systemctl status frpc

# 停止开机自启动
systemctl disable frpc

添加新评论