服务端即在公网环境下的服务器,需配置frps服务
下载地址是https://github.com/fatedier/frp/releases,要注意下载的版本,由你的服务器机型决定,我下载的是frp_0.34.3_linux_arm64.tar.gz。
下载完成后将其放在服务器上,然后使用如下命令解压
tar -zxvf frp_0.34.3_linux_arm64.tar.gz
下面是我自己的服务端配置frps.ini,有注释供参考
[common]
bind_port = 7000 # 必用:frp的默认监听端口
# 选用:frp监测后台配置,三个选项结合使用
dashboard_port = 7001 # 监测frp状态的端口
dashboard_user = *** # 登录frp监测网页的用户名
dashboard_pwd = ******* # 登录frp监测网页的密码
# 选用: frp日志配置
log_file = /var/logs/frps.log # 日志文件保存位置,要提前创建文件夹
log_level = info # 日志级别
log_max_days = 3 # 日志保存时长
需在frp解压目录下运行,提前创建文件夹/usr/lib/systemd/system
sudo mkdir -p /etc/frp
sudo cp frps.ini /etc/frp
sudo cp frps /usr/bin
sudo cp systemd/frps.service /usr/lib/systemd/system/
sudo systemctl enable frps
sudo systemctl start frps
其他frps服务可能需要用到的命令
# 设置开机自启动
sudo systemctl enable frps
# 启动
sudo systemctl start frps
# 关闭
sudo systemctl stop frps
# 重启
sudo systemctl restart frps
# 查看状态
sudo systemctl status frps
服务端需要开放的端口有7000(监听端口)、7001(后台端口)、4822(进行内网穿透的端口1)、4880(进行内网穿透的端口2)。其中进行内网穿透的端口由客户端配置决定,可查看2.2。开放端口的命令如下,详细可参考Linux端口开放。
firewall-cmd --zone=public --add-port=7000/tcp --permanent
访问:http://服务器IP:后台管理端口,输入用户名和密码可以查看连接状态,用户名和密码分别对应frps.ini文件中的dashboard_user和dashboard_pwd
可看到上面的界面说明服务端配置成功
客户端即在内网环境中的服务器,需配置frpc服务,主要处理frpc.ini文件
参考1.1,注意版本、机器型号,所需下载文件不一定和服务端相同,下载格式尽量采用tar.gz。下载完毕后解压,删除frps、frps.ini,配置过程只需要修改frpc.ini即可。
下面为我自己的客户端配置frpc.ini,有注释可供参考
[common]
# frp路由配置
server_addr = *.*.*.* # 服务端机器的ip
server_port = 7000 # 服务端frp监听端口
# frp日志配置,排错很有用
log_file = /var/logs/frpc.log # 日志文件保存位置,要提前创建文件夹
log_level = info # 日志级别
log_max_days = 3 # 日志保存时长
# 使用tls加密,说明见3.1
tls_enable = true
[ssh48] # 穿透标签
type = tcp # 连接类型
local_ip = 127.0.0.1 # 客服端ip
local_port = 22 # 客户端端口
remote_port = 4822 # 服务端端口
[http48]
type = tcp
local_ip = 127.0.0.1
local_port = 8080
remote_port = 4880
我共配置了两个穿透服务ssh和http,当有多个穿透服务时要使用不用的标签区分,特别是不同内网机器使用同一台公网机器穿透时,要保证不同内网机器上所有标签都不一样。此外,服务端端口也不能相同。也就是说,对于一台服务端机器来说,它所负责的穿透服务不能有相同的远程端口和标签。
需在frp解压目录下运行,提前创建文件夹/usr/lib/systemd/system。注意此处与1.3并不相同,是在不同机器上,并且客户端是frpc,服务端是frps,不要搞混了。
sudo mkdir -p /etc/frp
sudo cp frpc.ini /etc/frp
sudo cp frpc /usr/bin
sudo cp systemd/frpc.service /usr/lib/systemd/system/
sudo systemctl enable frpc
sudo systemctl start frpc
客户端需要开放的端口有22(进行内网穿透的端口1)、8080(进行内网穿透的端口2),开放端口的命令参考1.4
可以在客户端的配置文件frpc.ini中加入一条配置tls_enable = true,tls是一种加密协议,可以避免信息被过滤掉
可以运行以下命令分别查看服务端和客户端frp运行状态,查看其中是否有错误日志。如果不够详细,可以在配置的日志路径中查看日志,将错误信息复制粘贴到百度进行检索。
# 查看frpc状态
sudo systemctl status frpc
# 查看frps状态
sudo systemctl status frps