目录
一 使用场景
有时我们在公司想访问家里的电脑,但一般情况下运营商不会给我们提供公网IP,访问内网的电脑会很麻烦,需要使用各类三方远程工具。如果我们拥有一台有公网IP的云主机,则可以通过frp轻松远程访问家里内网环境下的电脑。
常规配置方案使用TCP协议进行远程,连接质量不是很理想,使用UDP远程质量更好。
frp穿透原理如图:
二 到Github下载frp
链接内是最新版本,笔者演示的是0.44版本。
笔者是CentOS的云主机,就下载了 amd64的版本,英特尔CPU的Win主机,下载的Win_386版本。
根据服务器内核版本选择对应版本frp服务端&客户端,下载错误版本会在启动时报 端错误 。
wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz
GitHub 网络不稳定,有可能需要手动下载并上传到云服务器。
三 解压到/usr/local/frp目录
tar zxf frp_0.44.0_linux_amd64.tar.gz
mv frp_0.44.0_linux_amd64 /usr/local/frp
四 配置云服务器端frps.ini
vim frps.ini
[common]
bind_port = 7000
#默认frp服务端口,需要在云主机设置里放行,下同。
bind_udp_port = 7001
#自定义的upd端口
token = password
#密码自定义
[common]
dashboard_port = 7500
#看板端口,也需要在云主机中放行。
dashboard_user = admin
dashboard_pwd = admin
#看板账号密码都是可选项
五 启动frp服务并保持frp服务开机启动和保持启动
./frps -c ./frps.ini
vim /etc/systemd/system/frps.service
[Unit]
Description=frps daemon
After=syslog.target network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/usr/local/frp/frp_0.44.0_linux_amd64/frps -c /usr//local/frp/frp_0.44.0_linux_amd64/frps.ini
#路径错误会导致报错
Restart= always RestartSec=1min
[Install] WantedBy=multi-user.target
六 配置内网环境下Win主机frp客户端
1.下载并解压到C:Program Filesfrp目录。
2. 配置frpc.ini
[common]
server_port = 7000
#云主机端口,需要将此端口放行。
server_addr = xxxx
#自己的云主机IP
token = password
#自定义密码,需要和服务器端一致。
[RDP]
type = tcp
#必备字段,不开启TCP无法建立UDP连接。
local_ip = 192.168.0.103
#内网主机IP,如有变动需要在此处更新否则无法启动frp客户端。
local_port = 3389
#远程访问的实际端口,下同。
remote_port = 6666
#远程访问端口,需要在云服务器中将其开放,下同。
use_compression = true
[RDP-02]
type = udp
local_ip = 192.168.0.103
local_port = 3389
remote_port = 6666
use_compression = true
3. 客户端目录下cmd启动客户端
frpc.exe -c frpc.ini
4. 用下面的指令创建脚本并放进开机启动文件夹内实现开机自启frp客户端。
@echo off
:home
frpc -c frpc.ini
goto home
七 使用公司电脑的远程桌面服务访问家里电脑
连上后点击状态按钮(类似手机信号的那个)可以看到如下提示则成功启用UDP:
八 连接多个本地局域网主机以及本地主机权限设置
最近帮朋友实现了利用笔者的服务器远程访问在家的笔记本:
在他的电脑上安装Frp客户端之后,配置文件中使用相同的Frp服务端口,但远程登录端口remote_port 不同:
[common]
server_port = 不变
server_addr = 不变
token = 不变
[SSH]
#名称保持唯一性
type = tcp
local_ip = 192.168.0.103
local_port = 3389
remote_port = xxxx
#修改成新的端口,需要在云服务器中开启
use_compression = true
在服务器管理界面将上面提到的端口开放之后,即可实现远程访问多台内网设备。
九 内网机器安全选项设置
笔者使用微软账号远程访问内网机器,朋友使用本地账号密码。在手机测试联通状态时发现有报错:
查询相关帖子发现在本地安全策略中将网络访问安全设置为经典模式则可以使用本地账号访问内网机器:
希望此篇文章能够帮助到大家。
更多frp使用方法可以参考官方文档。
欢迎大家一起交流~