目标:实现在公司用mstsc访问控制家里的电脑
附:基本配置参考:FRP服务端和客户端的基本配置_JohnGene的博客
准备资料
1、带有公网ip的Linux主机,下面假设1.2.3.4是固定外网ip
2、家用电脑联网,以下FRP客户端就是在家用电脑中操作的
FRP下载地址:Releases · fatedier/frp · GitHub
中文文档:frp/README_zh.md at master · fatedier/frp · GitHub
注意:frps是服务端程序,frpc是客户端程序
服务端配置
服务端程序 frp_0.30.0_linux_amd64.ter.gz 解压出来是这个样子:
编辑frps.ini为以下内容:
[common] bind_port = 7000 #与客户端绑定的进行通信的端口 vhost_http_port = 80 #访问客户端web服务自定义的端口号
注意防火墙和安全组策略要开放自己设置的7000和80端口
进行到解压后的frp目录,然后通过./frps -c frps.ini命令即可启动服务端。
看到start frps success则说明成功
只用这种方式开启frps的话frps会占据了整个命令窗口,退出即停,所以接下来要考虑如何让它在后台运行并且开机自启。
新建 frps.service 文件:
vi /etc/systemd/system/frps.service
[Unit] Description=frps daemon After=syslog.target network.target Wants=network.target [Service] Type=simple ExecStart=/frp/frps -c /frp/frps.ini Restart= always RestartSec=1min [Install] WantedBy=multi-user.target
注意ExecStart中要配置成自己的路径.
授权:
chmod 777 /frp/frps
chmod 777 /frp/frps.ini
然后使用systemctl start frps即可启动frps, 用systemctl enable frps即可将frps设置为开机启动。
客户端的配置
frp_0.30.0_windows_amd64.zip解压出来后:
配置frpc.ini:
[common] server_addr = 1.2.3.4 server_port = 7000 [mstsc] type = tcp local_ip = blogs.johngene.cn local_port = 3389 remote_port = 6999 [web] type = http #访问协议 local_port = 8080 #内网web服务的端口号 custom_domains = 1.2.3.4 #所绑定的公网服务器域名,一级、二级域名、ip地址都可以
注意防火墙和安全组策略要开启自己设置的6999、7000、80端口,remote_port 就是我们接下来要使用的端口
启动客户端:
start proxy success成功
这时就可以是用mstsc访问了
注意开启允许远程访问,防火墙要配置允许对应的数据或者直接关闭:
windows客户端需要将frpc设置为开机自启[可选]
1.编写frpc的执行脚本
新建文本文档输入:
E:\FRPC\frpc.exe -c E:\FRPC\frpc.ini
这里的 frpc.exe 和 frpc.ini 的地址不要搞错了
保存后修改后缀名为.bat文件
2.右击我的电脑>管理>系统工具>任务计划程序>任务计划程序库>创建任务
3.常规选项:名称、不管用户是否登录都要运行、使用最高权限运行
4.触发器:新建、开始任务选启动时其他默认,点确定
5.操作:新建操作、选启动程序、浏览选择bat脚本、确定
6.条件:全不选或者选择一个只有在以下网络时才启动,选任何网络
7.设置:选允许按需运行任务、如果过了计划开始时间,立即启动任务、如果任务失败,按以下频率重新启动(1分钟300次或者酌情填写)、如果此任务
已经运行选择请勿启动新实例
至此可以重启电脑测试了,注意重启后不要进入登录,直接用另一台机器用mstsc连接试试!
注意事项
如上安装FRP是不安全的,网络任何一台电脑都可以连接,下面分享个安全的配置方法:
客户端的协议采用stcp方式:
#服务端:[common] bind_port = 7000 bind_udp_port = 7001 token = abcdefg # bind_port:需要服务器开放端口 # bind_udp_port:提供udp协议的客户端使用,也需要服务器开放端口 # token:客户端连接服务端时需要的像密码一样的东西 #客户端A[被连接的机器]: [client_A] type=stcp sk=12345678 local_ip=blogs.johngene.cn local_port=3389 # type选择stcp # sk:连接A需要的秘钥 # local_ip:A机器的本地地址 # local_port:A机器的连接端口 #客户端B[连接A的机器]: [client_A_visitor] type=stcp role=visitor server_name=client_A sk=12345678 bind_ip=blogs.johngene.cn bind_port=789 # type选择stcp # role:角色visitor # server_name:A机器配置的名称client_A # sk:和A机器配置的sk保持一致 # bind_ip:B机器的本地地址 # bind_port:B机器随意一个不被占用的端口
最后B机器连接A机器需要在mstsc里面输入:localhost:789,或者127.0.0.1:789
如果要A和B相互连接,就得举一反三了,A里面配置client_B_visitor,B里面提供被A连接的接口client_B。
同样的,如果希望B机器对外公开,可以同时使用stcp协议和tcp协议,即:谁提供stcp接口谁就可以被stcp的visitor访问(注意秘钥相同),谁提供tcp接口谁就会被公开,任何电脑的远程输入ip地址和端口号就都可以访问。
Linux配置FRPC客户端
不安全的配置:
1、将下载的frp_0.31.1_linux_amd64.tar.gz解压出来,把里面的frpc和frpc.ini复制出来上传到Centos。
2、修改配置文件
[common] server_addr = 1.2.3.4 server_port = 1234 #tcp客户端可以和stcp客户端同时使用 [ssh] type = tcp local_ip = blogs.johngene.cn local_port = 22 remote_port = 8080
然后注意开放对应的1234和8080端口
3、利用ssh工具直接连接1.2.3.4:8080即可
安全的配置:
参考上面stcp握手方式!
自定义开启脚本与开机自启
1.编写脚本:
vi start-frpc.sh
#!/bin/bash nohup /opt/frpc/frpc -c /opt/frpc/frpc.ini &
2.编写service文件
cd /lib/systemd/system
vi frpc.service
[Unit] Description=xmr-staK After=network.target [Service] Type=forking ExecStart=/opt/frpc/start-frpc.sh PrivateTmp=true [Install] WantedBy=multi-user.target
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3
3.手工启动&开机自动启动服务
systemctl start frpc 启动 systemctl restart frpc 重启 systemctl stop frpc 停止 systemctl enable frpc 开机自启
原文链接:https://blog.csdn.net/JohnGene/article/details/122410584