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
哈哈哈,写的太好了https://www.lawjida.com/
mxbxgzexul 16 天前
1
1 2024-12-06
1
1 2024-12-06
555
1 2024-12-06
555
1 2024-12-06
555
1 2024-12-06
真好呢
jrxswsprfp 2024-11-20