- 由于设备远程连接需求,租了一台有公网IP的服务器。现在想通过FRP通过这台公网IP的服务器访问我的设备。本次使用的服务器和设备均使用
Ubuntu18 系统。详细的说明可以见FRP的Github。 - 内网穿透原理如图所示,图片来自:
1 在服务器和设备上分别安装FRP服务器端和客户端软件
服务端和客户端均按照以下步骤安装:
(1) 从github上下载软件并解压
所有的release版本可以通过这个链接查询到。这里以0.37.1 版本为例:
wget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_amd64.tar.gz
tar -zxvf frp_0.37.1_linux_amd64.tar.gz
一共有4个文件(夹):
服务器端需要用到:frps.ini, frps/ 客户端需要用到:frpc.ini, frpc/ 如果某台设备上只配置服务器端(客户端),另一种的文件(夹)就可以直接删掉了
(2) 修改配置文件
服务器端和客户端的配置文件分别是frps.ini 和frpc.ini
vim frps.ini
vim frpc.ini
[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
max_pool_count = 5
log_file = ./frps.log
[common]
server_addr = x.x.x.x
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
(3) 运行
./frps -c ./frps.ini
./frpc -c ./frpc.ini
如果希望开机自启动,请往后看。 如果没有特殊需求,到这里已经可以实现ssh的穿透了
2 设置开机自启动
在服务器端和客户端设置都是按照如下步骤。这个部分参考了这篇博客。
(1) 添加一个服务
sudo vim /lib/systemd/system/frps.service
sudo vim /lib/systemd/system/frpc.service
(2) 在服务中写如以下内容
[Unit]
Description=fraps service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
ExecStart=$path2frp/frps -c $path2frp/frps.ini
ExecStart=$path2frp/frpc -c $path2frp/frpc.ini
[Install]
WantedBy=multi-user.target
(3) 打开服务并开启开机自启动
sudo systemctl start frps
sudo systemctl enable frps
Reference
|