背景

  • 内网计算机:Windows 10 x64
  • FRP服务器:腾讯云 Ubuntu 20.04

本文重点介绍 FRP 服务器端和客户端配置,远程桌面连接属于常规内容,不再详细说明。

准备工作

下载软件

GitHub下载 FRP release 的程序

frpc windows无法自启动_linux

因为本次需要配置 Ubuntu 和 Windows 两个环境,所以两个包都下载下来(Linux 的包可以到终端上去操作,但是云服务器没有代理,所以一并在本地电脑上解决了)

服务器配置

打开 frp_linux_amd64.tar.gz ,里面有客户端(client)和服务端(server)的可执行文件和配置文件,其中frpsfrps_full.inifrps.ini 是服务器端的可执行文件和配置文件。

frpc windows无法自启动_frpc windows无法自启动_02

修改配置文件

修改 frps.ini 文件

[common]
bind_addr=0.0.0.0
bind_port = 7000
# token=1234567890
dashboard_port = 7500
dashboard_user = username
dashboard_pwd = password

说明

  • bind_addr 服务器本地 IP
  • bind_port FRP 监听端口
  • token 验证 token 根据需要设置
  • dashboard_port FRP面板端口
  • dashboard_userdashboard_pwd 是面板的账号密码
  1. 除了bind_addr参数之外的其他参数,都可以根据需求自行修改。
  2. token和面板的配置都是非必须的。
  3. 如果使用云服务器,那么bind_portdashboard_port都需要在云服务器安全组放行。

修改权限

然后给服务器端 frps 赋予执行权限:

sudo chmod 755 ./frps

运行 frps

./frps -c ./frps.ini

出现[root.go:209] frps started successfully 即代表运行成功。

frpc windows无法自启动_frpc windows无法自启动_03

如果运行出现错误 bash: ./frps: Permission denied 表示还是权限错误,参考上一步修改权限

frpc windows无法自启动_windows_04

访问面板

frps 运行成功后可以通过 http://公网IP:面板端口 访问 frp 面板(前提是配置了访问面板)。登录面板可以看到如下界面:

frpc windows无法自启动_windows_05

进阶

使用 nohupfrps 后台运行

nohup ./frps -c ./frps.ini > nohup.out 2>&1 &

查看后台服务,通过这个指令就能看到 frps 的 PID

ps -aux | grep "./frps -c ./frps.ini"

客户端配置

打开 frp_windows_amd64.zip ,里面有客户端(client)和服务端(server)的可执行文件和配置文件,其中frpc.exefrpc_full.inifrpc.ini 是客户端的可执行文件和配置文件。

frpc windows无法自启动_windows_06

修改配置文件

本地演示用到程序是 windows 远程桌面,使用 3389 端口。需要用 FRP 将 windows 客户端的 3389 转发到服务器端上。比如将客户端的 3389 转发到服务器端的远程端口。用文本编辑器打开 frpc.ini 文件:

[common]
server_addr = FRP服务器公网地址
server_port = 7000
# token=1234567890

[RDP]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 服务器端远程端口

说明

  • server_addr FRP服务器公网地址
  • server_port 服务器FRP服务端口需要与服务器配置一致
  • token token 验证,如果服务器端配置了 token,客户端需要与服务器一致
  • type 转发端口协议类型
  • local_ip 本地地址,一般为 127.0.0.1
  • local_port 本地服务端口,不同程序端口不同
  • remote_port 转发到服务器的某个端口

如果FRP服务使用的云服务器,要想通过公网IP加远程端口访问到转发的服务,需要云服务器安全组将此处配置的 remote_port 放行。

运行 frpc

打开CMD 在 frpc 所在目录下运行

frpc.exe -c frpc.ini

出现 success 就是连接成功

frpc windows无法自启动_客户端_07

说明

  • [RDP]的服务代理启动成功
  • [ssh]启动失败: 端口已经被占用
    因为我除了添加了[RDP]的服务,我还添加了一个[ssh]的服务,服务器端口使用的是 6000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

但是因为服务器 6000 这个端口已经被其他服务占用了,所以就启动失败

服务器

客户端的操作,在服务器端也能看到记录

frpc windows无法自启动_客户端_08

面板中也会出现相应的记录

frpc windows无法自启动_linux_09

进阶

使用 winsw 注册 windows 后台服务

下载 winsw

GitHub下载 winsw.exe

frpc windows无法自启动_frpc windows无法自启动_10

重命名

将软件重命名为 winsw.exe,并将该软件放到 frpc 客户端所在目录下备用。

创建配置文件

还是在 frpc 客户端所在目录下创建 winsw.xml 文件,并写入一下内容并保存:

<service>
    <id>frpc</id>
    <name>frpc</name>
    <description>frpc</description>
    <executable>frpc</executable>
    <arguments>-c frpc.ini</arguments>
    <onfailure action="restart" delay="60 sec"/>
    <onfailure action="restart" delay="120 sec"/>
    <logmode>reset</logmode>
</service>
启动 winsw

管理员权限启动 CMD,进入到 frpc 客户端所在目录下,添加服务

winsw.exe install

启动服务

winsw start
其他
#添加服务
winsw.exe install
#开始
winsw start
#关闭
winsw stop
#卸载服务
winsw uninstall

远程访问

内网计算机配置允许远程访问,然后其他任何计算机通过 Windows 自带的远程桌面工具通过访问 公网IP:远程桌面转发端口 连接远程桌面。