FRP安装记录

目标:穿透内网,使用远程桌面控制内网计算机

所需设备:

  1. 被控电脑
  2. 公网IP
  3. 服务器

安装FRPS

下载安装Docker版FRPS

公司网络有公网ip,我的群晖NAS放在公司里。在NAS上安装docker版的frps。具体步骤如下:

  1. 点击docker注册表
  2. 搜索frp
  3. 下载oldiy/frps

配置FRPS

  1. 点击映象
  2. 选中frps
  3. 点击启动
  1. 选中“使用最高权限执行容器”
  2. 点击“高级设置”
  1. 在高级设置中选中“启动自动重新启动”,保证容器在异常关闭后能自动重启
  1. 在卷中添加配置文件路径:配置文件实际所在文件夹为”docker/frps”,装载路径为”/frp”
  1. 在端口设置中添加从NAS到容器的映射,其中7000端口的TCP和UDP是必须的,其他端口按需添加

路由器端口转发

配置路由器端口转发,将路由器的端口映射到对应的NAS端口上。

需要将路由器端口映射到NAS上,例如将路由器的8000端口转发到NAS的7000端口上。

整个映射关系如下表所示:

路由器 NAS 容器
TCP 8000 7000 7000
UDP 8000 7000 7000

如果需要用到其他端口,也需要建立从路由器→NAS→容器的映射关系。

FRPS配置文件

在群晖NAS上安装frps服务端。配置文件如下:

[common]
bind_port = 7000
bind_udp_port = 7001
dashboard_port = 7500
dashboard_user = ******
dashboard_pwd = ******
token = *****

将文件保存到frps.ini后,将其放到docker/frps文件夹下。

FRPC配置文件

[common]
server_addr = abc.efg.hij
server_port = 8000
token = *******

[RDP]  #任意名称,必须唯一
type = tcp
local_ip = 0.0.0.0
local_port = 3389  #远程桌面使用此端口
remote_port = 4321  #确保此端口会由NAS转发给docker

将文件保存到frpc.ini后,将其放到frpc.exe相同的文件夹下。

FRPC自动启动

Windows

在本地frp文件夹中新建一个批处理文件,并添加一下内容:

@echo off
:home
frpc.exe -c frpc.ini
goto home

该脚本确保frpc意外关闭后能重新执行。

保存后将该脚本添加到任务计划中。

Raspberry Pi

在树莓派上使用对应版本的frpc客户端,配置文件如下(注意,配置名称必须唯一):

[common]
server_addr = abc.efg.hij
server_port = 8000
token = *******


[RDP2]  #任意名称,必须唯一
type = tcp
local_ip = 0.0.0.0
local_port = 3389  #远程桌面使用此端口
remote_port = 4322  #确保此端口会由NAS转发给docke

使用supervisor来守护frp进程

树莓派上可以使用supervisor来保证frpc程序开机启动并守护进程。

  1. 安装supervisor
sudo apt-get install supervisor -y
  1. 在/etc/supervisor/conf.d下新建一个配置文件frp.conf,输入一下内容command 是你frp软件的路径
[program:frps]
user=root
command=/root/frp/frps/frps -c /root/frp/frps/frps.ini
startsecs=1
startretries=100
autorstart=true
autorestart=true
stderr_logfile=/tmp/err-frps.log
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=10
stdout_logfile=/tmp/out-frps.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10

然后启动supervisor,如果事先已经安装好了supervisor那么就重新启动。之后查看一下supervisor的运行状态,看看frp是否已在运行。

#重启supervisor
sudo systemctl restart supervisor
# 查看supervisor运行状态
sudo supervisorctl status

多个FRPC客户端注意事项

  1. frp服务器端需配置不同的端口用于连接。
  2. frpc的配置文件中,配置名称必须不同。
  3. 连接时,使用不同的端口就能连接到不同的设备上。