使用frp进行内网穿透 实现公网访问工位主机
想着给实验室的主机搞个内网穿透,这样就可以公网访问我的主机了,虽然至今还没用它来工作过,还有之前闲来无事买的服务器,反正除了作业和科研都不想干,不如折腾折腾!😁
我的配置:
-
腾讯云服务器(CPU: 2核,内存: 4GB,80GB SSD云硬盘,带宽:8Mbps,系统:ubuntu18.04)
-
Windows 10 (11th Gen Intel(R) Core(TM) i7-11700 2.5GHz 内存:16GB 无显卡)
Step1: 下载frp的服务器软件和客户端软件
- 在服务器下载frp的服务器软件
wget https://github.com/fatedier/frp/releases/download/v0.39.1/frp_0.39.1_linux_386.tar.gz
PS:这里要注意linux的体系结构,可以通过uname -a
命令来查看Linux的结构(下载参考那张图中的386表示x86)。可别跟我一样,明明是x86系统,却下了arm的包🥲,结果都到了启动frp服务时报错才发现,顺便提一下报的是这样的错:-bash: ./frps: cannot execute binary file: Exec format error
- 在win10上下载frp客户端软件
Step2: 在服务器端安装frp
解压压缩包
tar -zxvf frp_0.39.1_linux_386.tar.gz
通过cd
+文件夹名 进入到该文件夹内(这里是cd frp_0.39.1_linux_386/
)
还可以通过ls -a
的命令查看目录
修改frps.ini
文件
通过vim frps.ini
命令修改该文件,一开始是如下图这样:
可修改如下:
[common]
bind_port = 7000 #frp服务的端口号, 可自行修改,默认7000
dashboard_port = 7500 # frp的web界面的端口号,可自行修改,默认7500
token = 12345678 # frp客户端连接时的密码,可自行修改,默认为12345678
dashboard_user = admin # web界面的登录账户,可自行修改,默认为admin
dashboard_pwd = admin # web界面的登录密码,可自行修改,默认为admin
PS:实际修改不要有中文和后面的注释,否则极大可能启动失败。
服务器端启动frp服务
记得先开启端口!
然后再启动!
./frps -c ./frps.ini
在浏览器测试一下是否成功ip:7500
后台启动!!
为了防止关闭连接窗口时服务停止,所以使用
nohup
可以一直启动服务器的frp服务端的任务。
nohup ./frps -c frps.ini &
Step3: 在Windows安装frp客户端
解压frp_0.39.1_windows_386.zip
修改frpc.ini
文件
打开文件如下:
可修改如下:
[common]
server_addr = **.**.**.** # 服务器ip,自行修改
server_port = 7000 # 刚刚配置的frp服务端口
token = 12345678 #刚刚配置的frp连接密码
tls_enable = true # 没有这行客户端启动可能会报错login to server failed: EOF
[ssh] # 其实这个ssh是Ubuntu或者其他版本的linux系统使用的。
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 20022 # 用SSH客户端访问 [云服务器ip]:20022,就可以经过反向代理直接访问到[本地服务器ip]:22
[rdp] # 为了远程桌面连接
type = tcp
local_ip = 127.0.0.1
local_port = 3389 # 打开win设置,找到远程桌面发现,点击高级设置可以看到端口号
remote_port = 33389 # 远程桌面控制访问 [云服务器ip]:33389,就可以经过反向代理直接访问到[本地服务器ip]:3389
PS:tls_enable = true
如果没有这行客户端启动可能会报错login to server failed: EOF
配置完成frpc.ini后,就可以运行frpc了!
frpc程序不能直接双击运行!!!
打开cmd,可以选择进到frp所在目录下,输入frpc.exe -c frpc.ini
启动
Step4:尝一下远程控制
使用Microsoft Remote Desktop连接win10,却发现客户端抛出异常:
[E] [proxy.go:793] [7891b2d82382556d] [rdp] connect to local service [127.0.0.1:3389] error: dial tcp 127.0.0.1:3389: connectex: No connection could be made because the target machine actively refused it.
一番搜索之后发现说是win10电脑的远程连接功能被阉割了,所以需要下载修复工具。
-
以管理员身份运行
install.bat
-
双击运行RDPConf.exe,如下图所示就是ok的,现在就可以啦!
最后试了一下,好像成功了又好像不成功——
成功的是能连,不成功的是他黑屏,但是又能跳出任务管理器,桌面explorer.exe杀过了也没用,所以就是不成功。
在我的不懈努力之下最终,真的是最终,找到了可行的解决办法!
-
按Win+R,输入gpedit.msc打开策略组编辑器
-
定位到“计算机配置/管理模板/Windows组件/远程桌面服务/远程桌面会话主机/远程会话环境”
-
选择右侧的“为远程桌面链接使用WDDM图形显示驱动”,设置为禁用。
-
重启计算机即可正常使用远程桌面链接。
小结
折腾的过程充满艰辛,一步一步都是坑!尽管心情起起落落落,但最后好在实现了当初的设想,也给使用frp进行内网穿透的小伙伴看个热闹。
20220424更
其实之前有一次因为什么原因我忘了,好像是服务器被一个进程锁死一直没法登录,再加上一直没有使用这个功能,后面想着就算了。
今天又重新搞了一下,因为一个朋友在体验垒球活动时受伤了,所以需要帮她腾讯会议上号,又折腾了一下。主要是增加了windows开机自启frp。
其实也很简单,但是不知道当时为啥没整这个。
- 在Windows中frp的文件夹下新建一个bat文件,我这里命名为
start_frp.bat
。
编辑内容为
保存即可。@echo off :home frpc.exe -c frpc.ini goto home
- 打开开始菜单,搜索“任务计划程序”
- 在“常规”页中
- 点击右侧的 “创建任务”
- “名称”这里我写的是
start_frp
- “位置”不用管
- “安全选项”我选的是“不管用户是否登录都要运行”,这样子只要有网的情况下就可以开启frp且实现远程控制
- “使用最高权限运行”可选可不选
- 勾选上左下角的“隐藏”,即隐藏命令提示符的窗口
- 在“触发器”页中
- 点击左下角的“新建”
- 在新弹出的“新建触发器”中,“开始任务”选择为“启动时”
- 点击右下角的“确定”
- 再转到“操作”页中
- 点击左下角的“新建”
- 在新弹出的“新建操作”中
- 选择“操作”为“启动程序”
- “程序或脚本”选择frp路径下的bat文件
- “起始于(可选)”是bat文件的文件夹路径
- 点击右下角的“确定”
- 点击右下角的“确定”
- 在“常规”页中
- 重启电脑,用远程控制应用连接即可!
参考:
[1] https://blog.csdn.net/weixin_42081389/article/details/111745516
[2] https://sspai.com/post/52523
[3] https://zhuanlan.zhihu.com/p/126194647
[4] https://zhuanlan.zhihu.com/p/88400552
[5] https://blog.csdn.net/gdali/article/details/108864769