假如你有一台云服务器,除了建站,还能够做什么有意思的事情?当然是使用frp将个人的所有计算机资源进行互联啦!

使用星型拓扑结构,将所有家用电脑连到frp服务器上,然后就可以通过任何一个联网终端对整个网络系统进行SSH或者VNC连接。

重点在于:
- 安装并配置服务端、客户端
- 注意端口畅通
- 开机自启,保护进程

本文配置基于:服务端ubuntu,客户端macOS Monterey

安装并配置服务端、客户端

首先在服务端和客户端上下载对应版本frp。
frp下载

服务端配置

首先需要一台有公网ip的服务器就不用多说了。

以下命令仅供参考

Ubuntu下载frp并保存到当前文件夹的命令行

wget  https://github.com/fatedier/frp/releases/download/v0.31.1/frp_0.31.1_linux_amd64.tar.gz

解压tar.gz

tar -zxvf frp_0.31.1_linux_arm64.tar.gz

进入到文件夹下

cd frp_0.31.1_linux_arm64

然后服务端的配置都在frps.ini中,使用vim进行编辑

vim frps.ini

一般的配置如下

[common]
#bind_addr = 0.0.0.0
bind_port = 7000  //7000端口是和客户端连接时使用的端口。

//服务器查看端口账号
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin

在浏览器输入服务器ip:7500可以看到一个仪表台。

配置完成后,运行服务端即可启动服务端frp服务。

 ./frps -c ./frps.ini 

客户端

客户端配置与服务器相差不大,只不过修改的都是frpc文件。(frps的s表示server,frpc的c表示client)

[common]
server_addr = xx.xx.xx.xx   //服务端的IP地址
server_port = 7000          和服务端端口一致

[RDP]                   //远程桌面配置
type = tcp
local_ip = 0.0.0.0     //没太弄懂  填0.0.0.0和127.0.0.1都可以
local_port = 5900      //随便填,但是不能和其他端口重合,两边服务器都把这些端口打开
remote_port = 6001      //这个端口是远程连接的用户所使用的端口


[ssh]                   //连接的名字,不能重复
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000     远程连接的用户使用这个端口来访问内网机器

设置好后启动

 ./frpc -c ./frpc.ini 

在多个客户端上,只需要修改连接的名字和远程端口即可。注意服务端和客户端的端口入和出方向都要放通。

后台运行

不可能就这样挂着个黑终端使用,要确保终端窗口关闭后依然运行。

服务端: nohup ./frps -c frps.ini >/dev/null 2>&1 &

客户端: nohup ./frpc -c frpc.ini >/dev/null 2>&1 &

说明:>/dev/null 2>&1 &,表示丢弃。

开机自启,保护进程

由于我们要使用frp打破地域限制,往往需要一个长期稳定的连接,因此我们要设置开机自启,保护进程,做到只要计算机开机就可以访问。

ubuntu上,可以用systemctl控制启动。

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

写入

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

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

[Install]
WantedBy=multi-user.target

启动frps

sudo systemctl start frps

打开自启动

sudo systemctl enable frps

客户端也可以采用类似的操作,但我的客户端是mac,需要使用另外的方法。

配置plist实现开机自启:

touch ~/Library/LaunchAgents/frpc.plist
vim ~/Library/LaunchAgents/frpc.plist

# 以下为 frpc.plist 配置
https://streamelody.github.io/assets/attachment/frpc.plist

# 加载生效
sudo chown root ~/Library/LaunchAgents/frpc.plist
sudo launchctl load -w ~/Library/LaunchAgents/frpc.plist

需要注意的是,macOS开机自启服务有两个文件夹,分别为LaunchAgentsLaunchDaemons,区别在于用户登录前后启动。如果需要在登录之前就启动frp服务的话,就需要把plist放到LaunchDaemons中。

常用命令

重启应用:sudo systemctl restart frps

停止应用:sudo systemctl enable frps

查看日志:sudo systemctl status frps

使用

可以正常地使用控制台ssh 服务器ip:端口就可以访问内网机器,也可以使用系统自带的远程桌面来连接。

需要注意的是,如果不能正常连接,很有可能是mac的端口没有开放,可以换常用开放端口。

如果想使用ssh进行远程开发的话,无论是vsc还是gateway等似乎都只能在Linux上运行。所以,应当将作为中心节点的Linux服务器作为核心开发环境,无论是通过内网机器进行开发,或是从其它网络ssh到中心服务器上都能够得到全部的计算机资源。

目前gateway bug还挺多的,vsc的ssh相比之下好用多了。


盛夏日落迟 灯火未夜匆匆明