本文及资源最后更新时间 2021-07-09 by sky995
frp是一款高性能反向代理应用,可以使用它来进行内网穿透,本期教程使用frp进行点对点穿透实现win远程桌面
在教程开始之前,使用阿里云或者和阿里云一样有防火墙的小伙伴需要去配置安全组(不配置会连接不上),以免后面出现各种错误,使用腾讯云或者其他没有防火墙的云的可以跳过这里往下看了
阿里云懒人配置,入方向TCP协议端口全开,UDP端口全开(如果你只想开用到的端口自己去frp日志看用到哪些端口),出方向UDP协议端口全开
一、准备
- linux服务器(本人是腾讯云1m带宽学生机,预装的centos7系统,使用的宝塔面板管理,安装宝塔面板教程直达)
- 被连接端电脑
- 连接控制端电脑
二、下载frp程序
2.1.下载服务端frp
下载frp_linux版本的,github下载地址frp-github(github国内下载较慢),我下载的是最新的版本frp_0.37.0_linux_amd64.tar.gz,64位的就可以直接用我这个,github慢的可以在我这儿下载,我填好了接下来需要填的值,你只要改部分值就可以了,下载地址:点我下载
2.2.将下载好的linux版本的frp上传到服务器
宝塔面板很方便可以上传,我这里传到服务器 根目录/www/wwwroot 目录下,你想放哪儿就传到哪儿
2.3.将上传到服务器的frp压缩包解压重命名
选中压缩包然后鼠标右键有解压选项,选中压缩包右侧也会出现解压选项,解压好后重命名位frp方便操作
2.4.下载被控制端和控制端frp程序
32位电脑下32位的,64位的下64位的,两台电脑位数相同就只用下一个就可以了,github下载地址frp-github,我下载的是最新的版本frp_0.37.0_windows_amd64.tar.gz,64位的就可以直接用我这个,github慢的可以在我这儿下载,我填好了接下来需要填的值,你只要改部分值就可以了,下载地址:frp被控端 , frp控制端
和步骤2.1一样将下载好的frp压缩包解压和重命名,我的解压好重命名为frp放在桌面
三、udp点对点穿透教程
3.1.配置服务端frp并运行
3.1.1.修改服务器frp配置文件frps.ini
宝塔双击frp目录下frps.ini进入编辑,将frps.ini文件内容替换成下面,下面#后面的内容为注释内容,可复制可不复制,修改好后左上保存文档或直接快捷键ctrl+s保存(注意注释最好不要写在右边,等号两边最好不要有空格)
[common]
#默认连接端口,可以自定义端口
bind_port=7000
#xtcp配置UDP端口,可以自定义端口
bind_udp_port=7001
#连接密钥,可要可不要,建议加上更安全,可以自定义,相当于密码
token=12345678
3.1.2.开放端口
上面用到的端口要去宝塔开放端口(阿里云可能还要去安全组开放端口),点击宝塔面板左侧安全按钮,在放行端口那一行填入端口号和备注,填好后点击右边的放行,放行好的端口就会显示在下方,我这里放行7000和7001端口,你上面用的什么端口就放行什么端口
3.1.3.启动服务端frp程序
使用ssh工具连接上服务器,这里我使用的是xshell工具,使用教程,也可以使用宝塔面板内置的ssh工具,连上ssh后先进入frp目录,输入 cd / 后回车进入了服务器根目录,继续输入 cd 你的frp目录 后回车进入frp目录,我这里frp目录为www/wwwroot/frp,所以我输入 cd www/wwwroot/frp 就进入frp目录了。继续输入命令 ./frps -c frps.ini 启动frp服务端,如下图出现蓝色字体就可以了,如果出现黄色或者其他颜色的就说明哪里有问题,可以复制代码百度以下。启动成功后请不要关闭ssh连接程序,因为关了窗口会关闭frp程序,后面会给出解决方案
3.2.配置被控制端的frp并运行
3.2.1.修改被连接端frp配置文件frpc.ini,注意是frpc.ini不是和上面服务器frps.ini同一个文件
电脑记事本软件打开frpc.ini,将frpc.ini文件内容替换成下面,修改server_addr为你的服务器ip地址,修改token值为服务器端token值,下面#后面的内容为注释内容,可复制可不复制,修改好后快捷键ctrl+s保存(注意注释最好不要写在右边,等号两边最好不要有空格)
[common]
#服务器ip地址,填你自己的服务器ip
server_addr=x.x.x.x
#服务器连接端口,和步骤3.1.1中bind_port相同
server_port=7000
#与服务器对应的连接密钥
token=12345678
#[]内可以自定义命名,我这里命名为p2p
[p2p]
#类型为xtcp协议
type=xtcp
#控制端电脑与被控端电脑的密钥,可以自定义密码
sk=520china
#本地ip
local_ip=127.0.0.1
#本地远程桌面端口
local_port=3389
3.2.2.运行frp程序
打开电脑cmd命令行(win10可以快捷键win+s打开搜索,然后搜索cmd),在c盘的直接输入命令 cd 你的frp所在的目录路径 后回车进入frp目录,放在别的盘的先输入 盘符: 回车进入该盘(例如放在D盘,先输入 D: 回车),再输入上面的 cd 你的frp路径 回车就进入了。进入了frp目录后,输入命令 frpc.exe -c frpc.ini 启动frp(如果跳出是否允许访问网络点允许),启动完毕后同样不要关闭cmd窗口,因为关了窗口会关闭frp程序,后面会给出解决方案
3.3.配置控制端的frp并运行
3.3.1.修改被控制端frp配置文件frpc.ini,注意是frpc.ini不是和服务器端frps.ini同一个文件
电脑记事软件打开frpc.ini,将frpc.ini文件内容替换成下面,修改server_addr为你的服务器ip地址,修改token值为服务器端token值,修改server_name为被控制端的udp连接名称,修改sk为被控制端sk值(如下图),下面#后面的内容为注释内容,可复制可不复制,修改好后快捷键ctrl+s保存(注意注释最好不要写在右边,等号两边最好不要有空格)
[common]
#服务器ip地址,填你自己的服务器ip
server_addr=x.x.x.x
#服务器连接端口,和服务端中bind_port保持一致
server_port=7000
#与服务器对应的连接密钥,与服务端token保持一致
token=12345678
#[]内可以自定义命名,我这里命名为p2p_visitor
[p2p_visitor]
#类型为xtcp协议
type=xtcp
#角色是visitor访问端
role=visitor
#要与需要连接的电脑端名字相同
server_name=p2p
#电脑与本电脑的密钥,可以自定义密码
sk=520china
#本地ip
bind_addr=127.0.0.1
#本地的端口去发送UDP包
bind_port=6666
3.3.2.运行frp程序
和操作3.2.2一样,打开电脑cmd命令行(win10可以快捷键win+s打开搜索,然后搜索cmd),在c盘的直接输入命令 cd 你的frp所在的目录路径 后回车进入frp目录,放在别的盘的先输入 盘符: 回车进入该盘(例如放在D盘,先输入 D: 回车),再输入上面的 cd 你的frp路径 回车就进入了。进入了frp目录后,输入命令 frpc.exe -c frpc.ini 启动frp(如果跳出是否允许访问网络点允许),启动完毕后同样不要关闭cmd窗口,因为关了窗口会关闭frp程序,后面会给出解决方案
四、测试是否能连接远程桌面
完成前面三个步骤,就完成了穿透,现在测试是否可以远程连接到电脑了
4.1.被控制端启动远程桌面,被控制端点电脑依次打开 设置——>系统——>远程桌面——>勾选启用远程桌面,点击下方选项选择可远程访问这台电脑的用户,添加你想允许连接的用户,那么控制端只有登录该用户才能控制
4.2.控制端连接远程桌面,快捷键win+s打开搜索,搜索远程桌面连接并打开,ip为控制端bind_addr的值,端口为bind_port值,点链接后输入你添加的被控制端的用户信息完成连接
连接成功,网速很快,要是传统的tcp穿透走服务器带宽的话1m带框很卡
五、frp设置后台运行
到目前为止已经完成了穿透和连接,但是不能关闭ssh和cmd frp就会自动关闭,我们可以给frp设置后台运行和
5.1服务器frp后台运行
在服务器xshell页面按ctrl+c键停止frp,进入frp目录下(目前是在frp目录下,但下次连接ssh的目录不是frp目录)输入命令nohup ./frps -c frps.ini >/dev/null 2>&1 &回车,出现端口就成功了,如果要看日志就输入cat nohup.out回车,然后关了xshell也没关系了,frp已经在后台运行了,需要关闭frp的见下图二,参考frp后台启动与停止
5.2.win版frp后台运行觉得没啥必要,要连就开个cmd不动,不连就关了,要想后台运行的可以参考win版frp后台运行
终于肝完了,我感觉要是还有一部分没写我肯定就搁着了,因为在写的过程自己也遇到很多问题,也不断的百度谷歌解决方法,然后慢慢修复,哪些问题本章不再讨论,可能会专门开一篇frp的错误及解决方法