前言
如果你想在一台没有公网ip的电脑上,对外提供一些服务,例如远程桌面,ssh等。
而你如果你刚好有一台有公网ip的服务器,那么你就可以使用这台服务器为没有公网ip的电脑做内网穿透。
frp分为客户端与服务端,客户端放在要被穿透的电脑上,服务端放在拥有一个公网ip的服务器上。
准备工作
1.有公网ip的电脑
2.在项目地址中下载对应平台的服务端与客户端(如果不是特殊处理器,下载amd64即可)
注意:frpc为客户端,frps为服务端(c即为cilent,s即为server,每个平台的压缩包里都包含客户端与服务端)
项目地址:https://github.com/fatedier/frp/releases
文档地址:[https://gofrp.org/docs](https://link.zhihu.com/?target=https%3A//gofrp.org/docs
"https://gofrp.org/docs")
开始
我的公网ip的电脑为centos7.6,你的公网电脑也可以是windows,我的客户端为windows,你的客户端也可以是linux
注意:服务端与服务端之间的配置是相同的,客户端与客户端之间的配置也是相同的,只不过他们的启动方式不同,我演示linux为服务端,windows为客户端,请根据自己的情况进行相应变动。
服务端搭建
下载“linux_amd64.tar.gz”,下载好后,上传至服务器
1.解压
tar -zxvf frp_0.39.0_linux_amd64.tar.gz
2.创建文件夹与移动到指定位置
mkdir /usr/local/frp
cd frp_0.39.0_linux_amd64
mv * /usr/local/frp/
3.编辑配置文件
vim /usr/local/frp/frps.ini
不会使用vim,可以使用其他方法,若其他方法也不会,建议百度看看vim如何使用,很快就可以上手
配置文件改为如下(没啥特殊需求,就使用最简单配置即可)
最简单配置
[common]
# frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000
# frp管理后台端口,请按自己需求更改
dashboard_port = 7500
# frp管理后台用户名和密码,请改成自己的
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true
复杂配置(根据自己需求去掉注释)
[common]
# frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000
#绑定udp端口
#bind_udp_port = 7000
# 授权码,请改成更复杂的,这个token之后在客户端会用到
#token = 123456
#subdomain_host = frp.abc.com
# frp管理后台端口,请按自己需求更改
dashboard_port = 7500
# frp管理后台用户名和密码,请改成自己的
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true
# frp日志配置
#log_file = /usr/local/frp/frps.log
#log_level = info
#log_max_days = 3
4.启动
/usr/local/frp/frps -c /usr/local/frp/frps.ini
此时已经可以运行了,但是没办法在后台运行,并且开机不会自启,稍后会在教程中说明如何后台运行并开机自启
5.放开端口
根据自己服务器,自行放开7000和7500端口,若有安装宝塔面板,记得除了开放服务器的防火墙还有开放宝塔的防火墙
6.开机自启与后台运行
将systemd中的frps.service 文件复制到服务器的 /etc/systemd/system/ 目录下
记得更改里面的配置
cp /usr/local/frp/systemd/frps.service /etc/systemd/system
然后就可以
设置开机启动
sudo systemctl enable frps
启动
systemctl start frps
重启
systemctl restart frps
停止
systemctl stop frps
客户端搭建
1.下载客户端
下载好“frp_0.39.0_windows_amd64.zip”之后,解压,放在你喜欢放的目录,我放在了c:\app\frp中
只要运行“frpc.exe”并加载“frpc.ini”即可(直接双击frpc.exe无法正常运行)
先不急运行,我们还需要改一下配置文件
2.更改配置文件
编辑“frpc.ini”
简单配置
[common]
#服务端公网ip地址
server_addr = 110.110.110.110
#刚刚服务端填写的端口
server_port = 7000
#服务端填写的token,若没有填写,可忽略
token = 123456
[yc]
#穿透类型
type = tcp
#本地ip地址,无特殊需求,无需改变
local_ip = 127.0.0.1
#远程桌面端口,默认端口为3389
local_port = 3389
#访问服务端33890端口即可穿透到本地3389端口
remote_port = 33890
#自定义域名,可不配
subdomain = yc
复杂配置
[common]
server_addr = 110.110.110.110
server_port = 7000
token = 123456
[yc]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 33890
subdomain = yc
[stcp_yc]
type = stcp
# 只有 sk 一致的用户才能访问到此服务
sk = 123456
local_ip = 127.0.0.1
local_port = 3389
[p2p_yc]
type = xtcp
# 只有 sk 一致的用户才能访问到此服务
sk = 123456
local_ip = 127.0.0.1
local_port = 3389
use_encryption = false
use_compression = false
注意此处p2p配置,具体配置详情参考官方文档,实在不想写了。。。
p2p打洞不一定成功哦~~
链接:https://gofrp.org/docs/examples/xtcp/
3.运行
(其实此步骤就是让你试验试验能不能正常运行,若你感觉你配置没问题,可以直接跳过此步骤)
打开cmd(组合键:win+R)
切换至frp目录(根据自己真实情况替换地址)
cd c:\APP\frp
运行并加载配置文件
frpc.exe -c frpc.ini
若没问题,则可以关掉此页面了,可以开始搞开机自启了
4.配置开机自启
在frp的目录下,新建一个“star_frpc.bat”文件,注意:一定要放在frp的目录下,和frpc.exe同级目录
将下述代码填入“star_frpc.bat”文件中
@echo off
:home
frpc -c frpc.ini
goto home
上述代码的作用是:后台运行,并遇到错误后,自动重新执行
然后打开控制面板,搜索“计划任务”
打开后,在右侧选择“创建任务”
常规中,填入完名称后,将下述3项勾选上
新建个触发器
选择“启动时”
操作中,新建个操作
选择“启动程序”,选择你的刚刚创建的“star_frpc.bat”的位置,并在起始于处,填上那个.bat文件的文件位置
填写完成后,点击确定,此时frp的开机自启就配置好了
可以重启电脑自己试验一下是否正常启动
重启电脑后,这时候任务管理器中会出现个frpc.exe
你结束他是结束不掉的,因为遇到错误他会自己重新启动,这样会有较高的稳定性,不至于电脑出问题了之后,你远控不到了,如果更改了配置文件,只需要将他结束一下,他自动会重新加载配置文件。