说明:配置完之后根据记忆写的,方便后续参考。
具体有多少应用场景我不太清楚,这里只介绍我自己用到的。(1)在办公室远程SSH控制自己在家里的另一台电脑; (2)自己电脑上运行了一个web服务,可以通过frp让别人(非局域网)访问到。
专业解释
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
一个云服务器(包含公网IP),同时本地电脑需要联网。
主要分成两块,一个是自己的电脑(客户端),一个是云服务器(服务端)。
第一步:下载,链接:https://github.com/fatedier/frp/releases
我下载的版本是frp_0.45.0_linux_amd64.tar.gz
第二步:解压,tar -zxvf frp_0.45.0_linux_amd64.tar.gz
, cd frp_0.45.0_linux_amd64
第三步:修改配置文件 frps.ini
,我的配置文件内容如下:
[common]
bind_port = 7000
dashboard_port = 10011
vhost_http_port = 10012
token = 12345
dashboard_user = ab
dashboard_pwd = ab1234
下面对各个配置进行解释:
(1)bind_port
:frp监听的默认端口号,用来与客户端通信,这个端口号是可以自己改的。
(2)dashboard_port
:frp管理后台端口。
(3)vhost_http_port
:这个端口对应本地的web服务。
(4)token
:授权码,后面客户端也需要填这个。
(5)dashboard_user
:frp管理后台用户名。
(6)dashboard_pwd
:frp管理后台密码。
第四步:在云服务器控制台开启对应的端口。我这里是华为云,需要修改安全组,我这里不太清楚需要配置出方向还是入方向,就全部配置了。
第五步:配置frp服务开机自启。
创建对应的目录和文件:
sudo mkdir /etc/systemd/system
sudo vim /etc/systemd/system/frps.service
frpc.service文件配置如下:(其中ExecStart修改成自己对应的文件路径)
[Unit]
Description = frps_service
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
User = root
ExecStart = /root/frp/frp_0.45.0_linux_amd64/frps -c /root/frp/frp_0.45.0_linux_amd64/frps.ini
[Install]
WantedBy=multi-user.target
设置frp服务开机自启:sudo systemctl enable frps
其他frps常见指令:
sudo systemctl start frps # 启动frp服务
sudo systemctl stop frps # 停止frp服务
sudo systemctl restart frps # 重启frp服务
sudo systemctl status frps # 查看frp服务状态
第六步:启动frp服务。 sudo systemctl start frps
第七步:验证服务是否启动。在浏览器输入你的公网ip加上frps.ini文件里设置的dashboard_port端口号,访问管理端,需要输入你设置的账号密码(也是在frps.ini文件里设置的)。出现下面的页面就说明服务端设置成功了。
注意:如果是新装的ubuntu系统最好先开启一下ssh,不然后面远程ssh会出现问题。可参考这个教程。
第一步:使用和服务端一样版本的frp安装包,解压然后进入对应文件夹内。(指令参考服务端配置过程)
第二步: 修改frpc.ini
文件。我的配置文件内容如下,‘#’后面的内容为注释,复制进文件后要删掉:
[common]
server_addr = 123.3.456.789 # 云服务器的公网IP
server_port = 7000 # frp监听的端口,与服务端配置保持一致
token = 123456 # 授权码,与服务端配置保持一致
[ssh] # 此处配置用于远程ssh控制内网电脑
type = tcp
local_ip = 127.0.0.1 # 对应本地ip
local_port = 22 # 本地ssh默认端口
remote_port = 56801 # 远程ssh访问时对应的端口,这里根据自己需要更改,上面的都是默认的
[web] # 此处配置用于远程访问内网电脑上的web服务
type = http
local_ip = 127.0.0.1
local_port = 7860 # 内网web服务对应的端口
remote_port = 10012 # 远程访问内网电脑服务时对应的端口
custom_domains = 123.3.456.789 # 云服务器的公网IP
第三步:设置客户端frp自启
先创建目录和文件
sudo mkdir /etc/systemd/system
sudo vim /etc/systemd/system/frpc.service
frpc.service
中的内容可参考如下,其中ExecStart需要修改为自己的文件路径:
[Unit]
Description=frpc
After=network.target
Wants=network.target
[Service]
Restart=on-failure
RestartSec=5
ExecStart=/home/user/software/frp/frpc -c /home/user/software/frp/frpc.ini
[Install]
WantedBy=multi-user.target
开机自启frp服务:
sudo systemctl enable frpc
常用指令:
sudo systemctl start frpc # 启动frp服务
sudo systemctl stop frpc # 停止frp服务
sudo systemctl restart frpc # 重启frp服务
sudo systemctl status frpc # 查看frp服务状态
第四步:启动frpc. sudo systemctl start frpc
第五步:登陆服务端dashboard,点击Proxies
里面的TCP
和HTTP
进行验证,示例图如下。
ssh -p 56801 user@123.3.456.789
,其中-p
对应客户端frpc.ini
中ssh配置中的 remote_port
,user
对应内网电脑的用户名,@
后面为公网服务器ip.http://123.3.456.789:10012
,即可访问到内网电脑上的web服务。对应ip为公网服务器ip,端口为客户端frpc.ini
中web配置中的 remote_port
.