使用frp进行内网穿透 实现公网访问工位主机

2022-03-05 Views 科技 | 效率1704字7 min read
featureimg

想着给实验室的主机搞个内网穿透,这样就可以公网访问我的主机了,虽然至今还没用它来工作过,还有之前闲来无事买的服务器,反正除了作业和科研都不想干,不如折腾折腾!😁

我的配置:

  1. 腾讯云服务器(CPU: 2核,内存: 4GB,80GB SSD云硬盘,带宽:8Mbps,系统:ubuntu18.04)

  2. Windows 10 (11th Gen Intel(R) Core(TM) i7-11700 2.5GHz 内存:16GB 无显卡)

Step1: 下载frp的服务器软件和客户端软件

frp下载地址指路🧭

下载参考
  1. 在服务器下载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

  1. 在win10上下载frp客户端软件

Step2: 在服务器端安装frp

解压压缩包

tar -zxvf frp_0.39.1_linux_386.tar.gz
Snipaste_2022-03-05_11-02-47

通过cd +文件夹名 进入到该文件夹内(这里是cd frp_0.39.1_linux_386/

还可以通过ls -a的命令查看目录

Snipaste_2022-03-05_11-08-01

修改frps.ini文件

通过vim frps.ini 命令修改该文件,一开始是如下图这样:

image-20220305111056435

可修改如下:

[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服务

记得先开启端口!

image-20220305111858389

然后再启动!

./frps -c ./frps.ini
image-20220305111749074

在浏览器测试一下是否成功ip:7500

image-20220305112126115
image-20220305112415019

后台启动!!

为了防止关闭连接窗口时服务停止,所以使用nohup可以一直启动服务器的frp服务端的任务。

nohup ./frps -c frps.ini &

Step3: 在Windows安装frp客户端

解压frp_0.39.1_windows_386.zip

修改frpc.ini文件

打开文件如下:

DF86F104E8ADD4453CB7B871E46C7B15

可修改如下:

[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

F48EADE8EE2C0D35B55C328DD64BFFC4

配置完成frpc.ini后,就可以运行frpc了!

frpc程序不能直接双击运行!!!

打开cmd,可以选择进到frp所在目录下,输入frpc.exe -c frpc.ini启动

45A65781DD8466E38CD31CE8601131A8

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.
B959DAFF0FE405A675F370DC2E5BD15F

一番搜索之后发现说是win10电脑的远程连接功能被阉割了,所以需要下载修复工具

  1. 以管理员身份运行install.bat

    968A583DDF290E230C25EAA7C435B993
    6F323380FABE64A9E4296F27508E6D93
  2. 双击运行RDPConf.exe,如下图所示就是ok的,现在就可以啦!

    DAAC9607A1904C590BBC17EAFCBDF82D

最后试了一下,好像成功了又好像不成功——

成功的是能连,不成功的是他黑屏,但是又能跳出任务管理器,桌面explorer.exe杀过了也没用,所以就是不成功。

image-20220305145715091

在我的不懈努力之下最终,真的是最终,找到了可行的解决办法!

  1. 按Win+R,输入gpedit.msc打开策略组编辑器

    43B4DB68E20D3B0B2B8413D493ACEEB0
  2. 定位到“计算机配置/管理模板/Windows组件/远程桌面服务/远程桌面会话主机/远程会话环境”

  3. 选择右侧的“为远程桌面链接使用WDDM图形显示驱动”,设置为禁用。

    5BAD0C8F1234EB43F08E504567F09E2E
  4. 重启计算机即可正常使用远程桌面链接。

image-20220305151135312

小结

折腾的过程充满艰辛,一步一步都是坑!尽管心情起起落落落,但最后好在实现了当初的设想,也给使用frp进行内网穿透的小伙伴看个热闹。

20220424更

其实之前有一次因为什么原因我忘了,好像是服务器被一个进程锁死一直没法登录,再加上一直没有使用这个功能,后面想着就算了。
今天又重新搞了一下,因为一个朋友在体验垒球活动时受伤了,所以需要帮她腾讯会议上号,又折腾了一下。主要是增加了windows开机自启frp。

其实也很简单,但是不知道当时为啥没整这个。

  1. 在Windows中frp的文件夹下新建一个bat文件,我这里命名为start_frp.bat
    编辑内容为
     @echo off
     :home
     frpc.exe -c frpc.ini
     goto home
    
    保存即可。
  2. 打开开始菜单,搜索“任务计划程序”
    1. 在“常规”页中
      1. 点击右侧的 “创建任务”
      2. “名称”这里我写的是start_frp
      3. “位置”不用管
      4. “安全选项”我选的是“不管用户是否登录都要运行”,这样子只要有网的情况下就可以开启frp且实现远程控制
      5. “使用最高权限运行”可选可不选
      6. 勾选上左下角的“隐藏”,即隐藏命令提示符的窗口
    2. 在“触发器”页中
      1. 点击左下角的“新建”
      2. 在新弹出的“新建触发器”中,“开始任务”选择为“启动时”
      3. 点击右下角的“确定”
    3. 再转到“操作”页中
      1. 点击左下角的“新建”
      2. 在新弹出的“新建操作”中
        1. 选择“操作”为“启动程序”
        2. “程序或脚本”选择frp路径下的bat文件
        3. “起始于(可选)”是bat文件的文件夹路径
        4. 点击右下角的“确定”
      3. 点击右下角的“确定”
  3. 重启电脑,用远程控制应用连接即可!

参考:

[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

EOF