frp内网穿透,以Windows远程连接为例
1 准备
1)公网ip的服务器(本文以Centos7系统为例)
2)内网电脑(本文以Windows7为例)
2 实现步骤
2.1 服务端
linux服务器下载对应frp:Releases · fatedier/frp (github.com)
wget https://github.com/fatedier/frp/releases/download/v0.39.0/frp_0.39.0_linux_amd64.tar.gz
解压
tar -zxvf frp_0.39.0_linux_amd64.tar.gz
进入解压后的文件夹
cd frp_0.39.0_linux_amd64
修改配置
vi frps.ini
[common] bind_port = 7000 #必须 vhost_http_port = 8080 #可选,不需要可不配
[common]部分是必须有的配置,其中bind_port是自己设定的frp服务端端口,vhost_http_port是自己设定的http访问端口。
保存上面的配置后,使用以下指令启动frp服务端
./frps -c ./frps.ini
服务方式自启动:
可将文件夹移动到 /opt下
创建启动脚本
vi frps.sh
/opt/frp/frps -c /opt/frp/frps.ini
给脚本权限
chmod a+x frps.sh
创建服务
vi /etc/systemd/system/frps.service
[Unit] Description=frps [Service] ExecStart=/bin/bash /opt/frp/frps.sh [Install] WantedBy=multi-user.target
启用并启动服务
systemctl enable frps.service
systemctl start frps.service
2.2 客户端
下载对应系统的frp如 frp_0.39.0_windows_amd64.zip
解压后放到 D:\Program Files (当前也可以放到你喜欢的目录)
修改frpc.ini,下面配置将服务器23389端口映射到客户端3389端口
cmd到目录下,运行命令
.\frpc.exe -c .\frpc.ini
客户端开机自启动(隐藏cmd窗口方式):
创建frpc.bat
bat后台执行方式:
@echo off start /b cmd /k "cd /d D:\Program Files\frp\ && .\frpc.exe -c .\frpc.ini"
bat异常重启方式:(如需后台运行,需配合vbs脚本,或者定时任务非用户登录启动,否则会在当前用户桌面弹出运行的CMD窗口)
@echo off :home frpc -c frpc.ini TIMEOUT /T 600 goto home
同目录创建frpc.vbs(后台执行模式)
set ws=WScript.CreateObject("WScript.Shell") ws.Run "frpc.bat",0
创建windows定时任务
1)不管用户是否登录都要运行(或以SYSTEM用户身份运行,即系统最高权限,此方式也不会将cmd窗口对用户显示)
2)系统启动时运行(可以延迟一会)
3)启动程序位vbs脚本或bat脚本,注意设置起始目录
定时启动vbs脚本或者后台方式的bat脚本是异步调用的,定时任务启动执行任务后会很快结束,服务后台运行不方便手动结束
定时任务启动异常重启方式的bat脚本是同步的,定时任务在服务运行时一直运行,停止定时任务即可停止服务
4)其他按需选择
3 使用
访问服务端ip和端口,将代理到客户端对应端口
如windows远程连接服务端ip,可访问内网电脑
使用frp实现内网穿透 - 简书 (jianshu.com)
frp 实现内网穿透(Windows 版) - 遗失的美好灬 - 博客园 (cnblogs.com)
windows 下frp服务启动_Windows 下 Frp 设置开机自动启动_weixin_39719018的博客-CSDN博客
WScript.Shell对象的 run()和exec()函数使用详解 - chulia - 博客园 (cnblogs.com)