疫情当下,无法到公司上班,但公司的 ERP、共享文件等又只能在内网访问,在家办公着实不方便。有什么办法在家里也能像在公司一样方便的使用公司的内网服务呢?
一般情况下公司网管会让你在公司电脑上装 TeamViewer、向日葵之类的远程桌面软件,或者用 QQ 的远程协助功能来解决。但这些方法需要在控制端与被控端都安装相同的软件才能正常连接,而且被控端失联后你还要请同事帮忙在被控端打开软件再进行连接。隐私也是个大问题,你所有的操作在被控电脑上都是可以实时看到的。
frp 内网穿透 + Windows 自带的远程桌面完全可以规避以上软件的不足,让你愉快的在家享受远程办公的乐趣。如果公司网络有公网 IP,网管又乐意帮你做端口转发的话,其实也就用不到内网穿透了。本文介绍的就是以上条件都不具备的条件下如何自给自足,而且很流畅的实现远程办公。
话不多说,开干吧!
你所需的条件:
- 一台有公网 IP 的 Linux 服务器
安装 frp 服务端软件
下载 frp 软件包到服务器
wget https://github.com/fatedier/frp/releases/download/v0.42.0/frp_0.42.0_linux_amd64.tar.gz
解压软件包
tar -zxvf frp_0.42.0_linux_amd64.tar.gz
从服务器删除刚刚下载的软件包
rm -f frp_0.42.0_linux_amd64.tar.gz
移动已解压的软件包文件夹到服务器 etc 文件夹下,并将文件夹重命名为 frp
mv tar -zxvf frp_0.42.0_linux_amd64 /etc/frp
frps 服务的配置
编辑 frps 配置配置文件
vi /etc/frp/frps.ini
内容修改如下:
[common]
bind_port = 7000 #frps 服务监听端口
vhost_http_port = 8080 #如果客户端有 http 服务,用 serverip:8080 访问客户端的 http 服务
subdomain_host = sixdian.com #如果希望用域名访问客户端上的 http 服务则设置你自己的顶级域名地址,子域名在客户端设置
dashboard_port = 7500 #设置访问 frps 仪表板的端口
dashboard_user = username #设置访问仪表板的用户名
dashboard_pwd = ******** #设置访问仪表板的密码
token = ****** #设置连接服务端与客户端所使用的令牌
max_pool_count = 5
设置frps服务开机启动
新建 systemctl 配置文件
vi /etc/systemd/system/frps.service
配置文件写入以下内容,并保存
[Unit]
Description=frps service
After=network.target network-online.target syslog.target
Wants=network.target network-online.target
[Service]
Type=simple
ExecStart=/etc/frp/frps -c /etc/frp/frps.ini
[Install]
WantedBy=multi-user.target
启动 frps 服务
systemctl start frps
让 frps 开机启动
systemctl enable frps
Windows 客户端远程桌面的配置
Windows 设置-系统-远程桌面-启用远程桌面 在你习惯安装软件的分区内新建一个名为 “frp” 的文件夹(我是建在D盘)
下载 frp 的 Windows 版到本地
最新版地址:
https://github.com/fatedier/frp/releases/download/v0.42.0/frp_0.42.0_windows_amd64.zip
将下载的软件包解压,并将解压后文件夹内的文件复制到刚刚新建新的位于 D 盘的 frp 文件夹内
编辑配置文件 frpc.ini 为以下内容,并保存
[common]
server_addr = test.sixdian.com #设置你的服务器 ip 地址或已解析到服务器的域名
server_port = 7000 #设置你远端服务器 frps 服务的监听端口
token = ******** #设置你远端服务器 frps 服务的令牌
tls_enable = true #需要加密的话设置此项
pool_count = 1
[HP ProBook 430 G1 rdp] #方括号内随便写,会在 frps 服务的仪表板内显示,方便识别
type = tcp #用 tcp 协议与 frps 服务通信
local_ip = 127.0.0.1 #本机 IP 地址
local_port = 3389 #本地 Windows 远程桌面默认的服务端口
remote_port = 12345 #你 frps 服务端已开放的端口,登录远程桌面使用此端口
use_compression = true
[HP ProBook 430 G1 rdp-udp] #方括号内随便写,会在 frps 服务的仪表板内显示,方便识别
type = udp #用 udp 协议与 frps 服务通信,需 frps 服务器防火墙开启通信端口的 udp 协议
local_ip = 127.0.0.1 #本机 IP 地址
local_port = 3389 #本地 Windows 远程桌面默认的服务端口
remote_port = 12345 #你 frps 服务端已开放的端口,登录远程桌面使用此端口
use_compression = true
用 WinSW 将 frpc 注册为 Windows 服务,实现开机后台启动
下载 WinSW,并把下载下来的 WinSW-x64.exe 放到 frp 文件夹下,并将文件名称修改为 “winsw-frpc”
最新版地址:
https://github.com/winsw/winsw/releases/download/v2.11.0/WinSW-x64.exe
在 frp 文件夹内新建 WinSW 的配置文件,名为 “winsw-frpc.xml”
编辑 winsw-frpc.xlm 文件内容为:
<service>
<id>frpc</id>
<name>frpc</name>
<description>frpc remote control</description>
<executable>frpc</executable>
<arguments>-c frpc.ini</arguments>
<logmode>reset</logmode>
</service>
开打 cmd 终端:
winsw-frpc install
winsw-frpc start
这样就会把 frpc 程序注册为你 Windows 的系统服务,在你启动 Windows 的时候自动开启服务
按下面的设置,将 frpc 服务设置为失败后重启,这样只要你的服务器不宕机就不用怕被控端失联了。 试一下效果吧 Win+R,运行:
mstsc
输入你 Linux 服务器的 IP 地址: 12345,填写你被控端电脑的用户名和密码
注:我家里网络有公网 IP,我把 frps 服务搭建在我的软路由上面,所以我只需要连接我路由器的 IP 地址就可以了。
End!