我为什么要使用frp进行内网穿透

家里的设备位于简单的局域网内,比较好操作,但是公司的电脑则位于一个很复杂的局域网内,想要实现远程桌面和文件访问,试过向日葵、TeamViewer、蒲公英。但是免费版的限制太多,达不到理想的使用需求。

frp

是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。

准备操作

我们需要一台具有公网的服务器或者一台主机,我使用的是腾讯云年中大促期间推出的轻量级服务器,机房在国内,访问速度还不错。

服务端

SSH连接至服务器,使用arch查看处理器架构,如果是x86_64则选择amd64的版本。

[root@VM-0-9-centos ~] arch
x86_64

下载

wget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_arm64.tar.gz

解压

tar -zxvf frp_*_linux_amd64.tar.gz

修改名字,方便使用

mv frp_*_linux_amd64 frp

进入该目录

cd frp

查看文件

[root@VM-0-9-centos frp] ls -a
frpc  frpc_full.ini  frpc.ini  frps  frps_full.ini  frps.ini  LICENSE  systemd

frpc开头的文件代表客户端的程序和配置文件,frps开头的文件则代表服务端的程序和配置文件。我们在服务器上进行配置删除客户端的文件就行了。

rm -f frpc*

接下来修改服务端的配置文件

[root@VM-0-9-centos frp] vim frps.ini
[common]
bind_port = 7000
# 默认只有一行下面的需要手动添加
dashboard_port = 7500
dashboard_user = admin # 仪表盘账号
dashboard_pwd = admin # 仪表盘密码
token = 12345678
  • "bind_port" 用于客户端和服务端连接的端口,配置客户端的时候要用到。
  • "dashboard_port" 是服务端仪表板的端口, 可以通过ip:端口访问, 查看frp服务运行信息。
  • "dashboard_user"和"dashboard_pwd" 是登录仪表盘的账号密码,自行设置。
  • "token" 是用于客户端和服务端连接的口令,请自行设置并记录,配置客户端的时候要用到。

修改后保存,服务器防火墙记得放行相关端口。

服务端后台运行

使用nohup命令在后台运行。

nohup ./frps -c frps.ini &

运行后输出

nohup: 忽略输入并把输出追加到"nohup.out"

服务端即设置完成 ,Ctrl+C退出前台运行。

客户端

Github下载windows版本,解压后打开frpc.ini并编辑。

[common]
server_addr = xx.xxx.xx.xxx # 你的服务器ip
server_port = 7000 # 服务端设置的端口
token = 12345678 #服务端设置的token

[rdp]
type = tcp
local_ip = 127.0.0.1 # 本地ip
local_port = 3389 # 本地连接端口
remote_port = 1234 # 服务端开放的端口

配置完成frpc.ini后,就可以运行frpc了,使用Cmder进入解压目录。

cd D:\frp

执行./frpc -c frpc.inistart frpc.exe 运行frpc程序,窗口中输出如下内容表示运行正常 。

2021/08/03 20:53:25 [I] [proxy_manager.go:144] proxy added: [rdp]
2021/08/03 20:53:25 [I] [control.go:180] [rdp] start proxy success

打开远程桌面设置,打开远程桌面选项,设置允许远程访问桌面的用户。

不要关闭窗口,在其他设备使用远程连接工具访问ip:remote_port(例:192.168.0.1:1234)

开机自启以及后台运行

新建文本文档,将下面的脚本粘贴进去,记得修改相关路径,另存为frp.bat

@echo off
if "%1" == "h" goto begin 
start mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit 
:begin
# 上面四行比较重要,不要修改或删除
echo "frp已启动"
cd D:\frp\ # 文件的绝对路径
start /b frpc.exe # 程序名

右键frp.bat发送到桌面快捷方式,把桌面的快捷方式放到自己电脑的开机自启目录下

C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

大功告成,重启电脑,即可远程访问。

我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=1osa3wotuwgrc