内网穿透工具frp安装应用

过去远程管理的时候大多数使用TeamView,但是最近总是提示商用只能使用5分钟。测试了向日葵、xt800和Anydesk总是在管理Windows的时候屏幕延时特别大,使用也不流畅体验极差。后来看到介绍FRP的文章之后觉得直接使用Windows的远程桌面RDP和Linux的SSH通过FRP穿透内网进行管理。FRP还可以解决越来越多的普通宽带账号不能再使用公网IP端口映射的问题。

安装配置FRP服务器端

首先你要拥有一个具备公网IP的VPS或者任何拥有公网IP的服务器作为跳板计算机。

通过作者github下载二进制程序进行安装:https://github.com/fatedier/frp/releases

1
2
3
4
5
6
uname -a
wget https://github.com/fatedier/frp/releases/download/v0.27.0/frp_0.27.0_linux_amd64.tar.gz
tar -zxvf frp_0.27.0_linux_amd64.tar.gz
cp -r frp_0.27.0_linux_amd64 /usr/local/
cd ~/frp_0.27.0_linux_amd64
cp frps.service /usr/lib/systemd/system/

编辑FRP服务的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
vi /usr/local/frp_0.27.0_linux_amd64/frps.ini
[common]
bind_addr = 0.0.0.0
bind_port = 8171 #指明接受frp客户端请求的端口号
dashboard_port = 8170 #指明frp服务端提供的简单web管理界面端口号
dashboard_user = admin #指明服务端web管理界面登录用户名
dashboard_pwd = change_me #指明服务端web管理界面登录密码
log_file = /var/log/frps.log
log_max_days = 3
log_level = info
privilege_mode = true #开启客户端过来注册的时候需要密码认证
privilege_token = change_me1 #指明客户端注册时候的认证密码
max_pool_count = 100

编辑自启动配置文件成如下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
vi /usr/lib/systemd/system/frps.service
#更改ExecStart内容
[Unit]
Description=Frp Server Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/frp_0.27.0_linux_amd64/frps -c /usr/local/frp_0.27.0_linux_amd64/frps.ini #指明执行文件和配置文件位置

[Install]
WantedBy=multi-user.target

设置开机自动运行frps服务

1
2
systemctl start frps
systemctl enable frps

通过浏览服务器的8170端口输入密码后可以看到简单的web界面。

安装配置FRP客户端

Windows客户端安装配置

根据自己操作系统下载对应的32位或者64位程序。

修改frpc.ini为如下内容,注意是frpc.ini。

1
2
3
4
5
6
7
8
9
10
11
[common]
server_addr = 1.1.1.1 #frp服务器IP地址
server_port = 8171 #根据之前frps.ini配置中接受注册端口号填写
privilege_token = change_me1 #根据frps.ini配置中要求客户端的密码填写

[servername] #注册到frp服务器时显示的名称,每个客户端名称不能相同
type = tcp
privilege_mode = true
local_ip = 127.0.0.1
local_port = 3389 #将本地远程桌面3389映射到服务器的8181端口
remote_port = 8182 #每个客户端每个服务不能相同

创建两个文件用来实现客户端的自启动

frpc.vbs 该脚本用来运行frpc并且加载配置文件。

1
2
3
dim WSHshellA
set WSHshellA = wscript.createobject("wscript.shell")
WSHshellA.run "C:\soft\frp_0.21.0_windows_386\frpc.exe -c C:\soft\frp_0.21.0_windows_386\frpc.ini ",0 ,true

frpc.bat 批处理主要是判断客户端是否可以上网,直到可以上网再执行客户端开启程序frpc.vbs。

1
2
3
4
5
6
7
8
9
10
@echo off
:Begin
ping 114.114.114.114
if errorlevel 1 goto Waiting
if errorlevel 0 goto Runcmd
:Waiting
choice /t 30 /d y /n >nul
goto Begin
:Runcmd
cscript /e:vbs C:\soft\frp_0.21.0_windows_386\frpc.vbs

把新建任务计划,将frpc.bat设置为在系统启动时执行。

Linux客户端安装配置

根据自己操作系统下载对应的32位或者64位程序。

编辑frpc.ini如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[common]
server_addr = 1.1.1.1 #frp服务器IP地址
server_port = 8171 #根据之前frps.ini配置中接受注册端口号填写
privilege_token = change_me1 #根据frps.ini配置中要求客户端的密码填写

[pissh] #注册到frp服务器时显示的名称,每个客户端名称不能相同
type = tcp
privilege_mode = true
local_ip = 127.0.0.1
local_port = 22 #将客户端22端口映射到服务器8189端口
remote_port = 8189 #每个客户端每个服务不能相同
[pihttp] #注册到frp服务器时显示的名称,每个客户端名称不能相同
type = tcp
privilege_mode = true
local_ip = 127.0.0.1
local_port = 80 #将客户端80端口映射到服务器8190端口
remote_port = 8190 #每个客户端每个服务不能相同

编辑local.rc设置开机自动运行frpc客户端程序

1
2
vi /etc/rc.local
/usr/local/frp_0.27.1_linux_arm/frpc -c /usr/local/frp_0.27.1_linux_arm/frpc.ini & #在exit 0上一行添加该内容