目前网上的教程都不太完善,在经过一下午的折腾才搞定(主要是没想到校园网竟然搞了端口封锁)白折腾了不少时间。

一、部署带公网ip的云服务器

 

 二、下载frp

下载链接:Releases · fatedier/frp (github.com)

首先看自己服务器是哪种架构,选择对应的版本

 

比如我的是x86就应该选择386

 在最新版选择服务端和客户端进行下载。

因为frp下载比较慢,我是自行下载再上传到服务器的,使用Xshell.

使用方法:(2条消息) 通过阿里云ECS服务器部署FRP实现Windows自带远程桌面_阿里云服务器frp远程桌面_baotangyin的博客-CSDN博客

创建一个会话

创建完成后进入会话列表,选中后点击连接

出现以下提示即表示连接成功

在命令行界面空白处右键鼠标,选择传输模式,我选的是ZMODEM,三个模式看哪个速度快选哪个

弹出文件选择框后选择文件,打开即可上传

三、服务端配置

上传后解压安装包

tar -zxvf frp_0.51.0_linux_386.tar.gz

进入解压好的文件,配置frps.ini(服务器端)

vi frps.ini
[common]
# bind_port 是frp内网穿透服务器端监听的端口,默认是7000
bind_port = xxxx

# 开启token验证
authentication_method = token
# 设置token验证,相当于密码
token = xxxx

(可选)
# 这个是frp内网穿透服务器的web界面的端口,可以通过http://你的ip:XXXX查看frp内网穿透服务器端的连接情况,和各个frp内网穿透客户端的连接情况。
dashboard_port = xxxx
dashboard_user = xxxx(用户名)
dashboard_pwd = xxxx(密码)
                                             
# frp日志配置
log_file = /var/log/frps.log
log_level = info
log_max_days = 3

 这里要把bind_port对应端口开放

 因为我用的是轻量应用服务器,所以在防火墙开启对应端口后最好在内部进行确认

 比如这样就开启9000端口

配置完后可以去检查一下

  • 服务器端口是否可用,客户端是去连接服务器的相应端口的,所以要保证端口是能被客户端访问的

(1)先看看服务器是否开启了任务监听对应端口,我这里端口是3389

sudo netstat -tunlp | grep 3389

(2)如果任务已开始监听,然后看看防火墙是否开放了这个端口,很重要

sudo iptables -L -n --line-numbers | grep 3389

(3)如果防火墙没有开启这个端口,需要自己添加规则开启

我的服务器使用了防火墙工具firewalld。

举例在使用firewalld的情况下,按如下步骤开放7000端口:

  1. 打开终端或SSH连接到你的CentOS服务器。

  2. 使用超级用户或具有管理员权限的账户登录。

  3. 检查防火墙状态,确认是否使用firewalld:

    sudo firewall-cmd --state
    

    如果返回结果是 running,说明你使用的是firewalld。

  4. 开放7000端口并使其持久生效:

    sudo firewall-cmd --zone=public --add-port=7000/tcp --permanent
    
  5. 重新加载防火墙规则以应用更改:

    sudo firewall-cmd --reload

     6.使用以下命令来检查7000端口是否已经开放:

sudo firewall-cmd --zone=public --query-port=7000/tcp

前台运行frp

./frps -c ./frps.ini

 跟网上不一样的是输入该代码后不会出现任何提示信息,但是通过web界面可以发现确实成功启动

后台运行frp

使用systemctl来控制启动

vim /lib/systemd/system/frps.service

在frps.service(可以命名为xx.service)里写入以下内容

[Unit]

Description=frps service After=network.target syslog.target Wants=network.target

[Service]

Type=simple #启动服务的命令
 
ExecStart=此处写你的frps的实际安装目录/frps -c 此处写你的frps的实际安装目录/frps.ini
  
[Install] 

WantedBy=multi-user.target

使用以下命令启动frps

systemctl start frps

使用以下命令打开自启动

systemctl enable frps

使用以下命令关闭开机自启动

systemctl  disable frps

使用以下命令重启应用

systemctl restart frps

使用以下命令停止应用

systemctl stop frps

使用以下命令查看应用的日志

systemctl status frps

 四、客户端配置

编辑该文件

[common]
server_addr = 服务器公网ip
server_port = blnd_prot
token = 和服务端一样

[ssh]
type = tcp
local_ip = xxxxxxxx(本机ip或者127.0.0.1)
local_port = xxxx
remote_port = xxxx

 记住这里设置的remote_port也要在服务器防火墙开放端口

同时用户端添加端口出站规则:将端口3389添加到出站规则中

在Dos中启动服务:win+R 输入cmd

需要先进入frp目录后执行如下操作:

frpc -c frpc.ini

 出现这样的页面就是成功了,在web页面也能看到链接成功

5.设置客户端frpc随系统启动

因为是远程控制桌面,那我们电脑就会有重启情况,所以我们把它打包成服务设置成开机自启

下载winsw最新版,为了方便将其重命名为winsw.exe, 将该文件和frpc.exe放在一起,然后新建winsw.xml

写入以下内容:

 
  1. <service>

  2.     <id>frp</id>

  3.     <name>frp</name>

  4.     <description>用frp发布本地电脑网站到外网</description>

  5.     <executable>frpc</executable>

  6.     <arguments>-c frpc.ini</arguments>

  7.     <logmode>reset</logmode>

  8. </service>


 保存后进入powershell,CD到frp所在目录,然后使用

winsw install

frpc start

命令即可将frpc安装为系统服务。
win+r后通过

services.msc

进入到服务列表页面找到frp服务。

为了确保frpc在连接失败后自动尝试重新连接,在恢复tap页进行如下设置:

完成后下次启动系统,服务就会自动启动运行。

至此frp内网穿透就完成了。

最后使用微软的rd client进行连接

这样就链接成功 ,效果如下:

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐