基于LXD搭建实验室GPU服务器(三)——配置frp网穿并注册服务

发布时间 2023-08-27 15:16:22作者: treasurew_wang

在之前博客中,我们对宿主机进行了基本配置和基本深度学习环境的配置,在本文中,我们将介绍如何对服务器进行frp网穿,本文的内容可用于后续的lxd容器中,实现每个容器皆可使用公网ip访问。
若不需要配置网穿,则可以跳过此文。
配置网穿可以在局域网外访问服务器,我们需要一台具有公网ip的服务器。

下载frp文件

我们首先下载frp文件,需要注意的是,frp文件很可能被Windows defender等杀毒软件当成病毒杀掉,可能需要临时关闭杀毒软件,或加白名单。下载链接为:

https://github.com/fatedier/frp/releases

对其进行解压可以发现里面有7个文件,其中frpc相关的文件放在我们的GPU服务器上,以下称frp客户端frps相关的文件放在我们的公网ip的服务器上,以下称frp服务端,当然了,你也可以都留着。

# 解压
tar -zxvf frp_0.51.0_linux_amd64.tar.gz

# 解压后的文件
frpc  frpc_full.ini  frpc.ini  frps  frps_full.ini  frps.ini  LICENSE

配置frp服务端

配置文件

我们把frps相关的文件传至frp服务端,编辑frps.ini文件

# 修改为如下内容
[common]
bind_port = 7000 # frp客户端和frp服务端通信的端口
dashboard_port = 7001 # (非必需)管理面板的端口,可以通过ip:7001访问可视化界面
dashboard_user = admin # (非必需)管理面板的用户名
dashboard_pwd = 123456 # (非必需)管理面板的密码

token = <your_token> # (非必需,建议配置)frp客户端需要设置准确的token才可进行网穿

将frps注册为服务,且开机自启

以管理员权限编辑创建并编辑/lib/systemd/system/frps.service文件,写入以下内容:

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

[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/<path_to_frps>/frps -c /<path_to_frps>/frps.ini
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target

开启服务,查看服务状态,设置开机自启等指令:

# 开启服务/停止服务/重启服务/查看状态/开机自启
sudo systemctl start/stop/restart/status/enable frps

配置frp客户端

配置文件

我们把frpc相关的文件传至frp客户端,编辑frpc.ini文件

[common]
server_addr = <your_server_ip> # frp服务端的公网ip
server_port = 7000 # frp服务端配置的bind_port
token = <your_token> # frp服务端配置的token

[ssh_6004] # 注意不可重复
type = tcp
local_ip = 127.0.0.1
local_port = <local_port> # 本地端口,这里填设置的ssh端口
remote_port = <remote_port> # 服务器端口
# 即可以通过<server_ip>:<remote_port>访问本地的<local_port>

将frpc注册为服务,且开机自启

以管理员权限编辑创建并编辑/lib/systemd/system/frpc.service文件,写入以下内容:

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

[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/<path_to_frp>/frpc -c /<path_to_frp>/frpc.ini
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

开启服务,查看服务状态,设置开机自启等指令:

# 开启服务/停止服务/重启服务/查看状态/开机自启
sudo systemctl start/stop/restart/status/enable frps

开放端口

需要注意的是,我们需要开放frp服务端和客户端对应的端口才可完成网穿,对于本地的服务器(frp客户端)来说,一般开启端口或者关闭防火墙即可,对于公网ip服务器(frp服务端)来说,可能服务商有自己的防火墙,需要在控制台放行。
防火墙相关指令如下,需要注意的是,请在防火墙开启之前开放ssh端口,否则可能无法链接服务器:

# 查看防火墙状态
sudo ufw status verbose

# 开启/关闭防火墙
sudo ufw enable/disable

# 放行端口
sudo ufw allow <port_number>/<protocal>

# 禁用端口
sudo ufw delete allow <port_number>

# 重置防火墙
sudo ufw reset

# 重启防火墙
sudo ufw reload

# 查看端口是否开放
lsof -i:<port_number>