frp-0.59-使用教程
背景
目前需要使用自建的内网穿透工具,就选择了frp,frp也分很多版本,我之前使用的是frp_0.51.2_windows_386版本,现在升级版本为frp_0.59.0_windows_amd64,主要使用这个frp功能有,点对点内网穿透(p2p)、安全地暴露内网服务 和 服务端作为代理进行穿透的三种方式。准备使用点对点或安全的暴露服务方式,之前使用的一直是服务器代理的方式进行内网穿透,这样直接将自己的机器暴露在公网上,非常不安全,有一次我检查服务器日志,发现很多请求我服务器暴露的这个端口,意识到可能被盯上了,就改换了其他端口。现在加强安全意识,就换用点对点或者安全的暴露方式,攻击者的扫描和入侵。建议不使用服务提供的默认端口,自行进行修改。
目前使用的用途有:远程连接window电脑、web服务暴露在公网上。
一、准备工作
官方下载地址:https://github.com/fatedier/frp/releases/tag/v0.59.0
这里我提供两个下载地址:
123网盘:https://www.123pan.com/s/tB5A-psnYd.html? 提取码: TA7T
蓝奏网盘:https://nxg.lanzoul.com/b03ivhzl1i 密码:7ijd
frp_0.59.0_linux_amd64.tar.gz ====》用于上传到linux服务器上
frp_0.59.0_windows_amd64.zip ====》 用于在window本地启动的
注意:下载linux版的会window系统会报毒,自行在设置中放行(排除)下载目录即可下载,并上传到服务器上。 在官网下载同样是会报毒的,可以自行验证。
二、配置服务端
2.1 上传frp和配置frp
先上传frp_0.59.0_linux_amd64.tar.gz压缩包到自定义目录下,这里我以 /root/frp 目录为例:
tar -zxvf frp_0.59.0_linux_amd64.tar.gz
位置:/root/frp/frp_0.59.0_linux_amd64
frps.toml修改配置端口:
bindPort = 7002
auth.token = "qwweqqwea123132aa"
transport.maxPoolCount = 5
# 默认为 127.0.0.1,如果需要公网访问,需要修改为 0.0.0.0。
webServer.addr = "0.0.0.0"
webServer.port = 7003
# dashboard 用户名密码,可选,默认为空
webServer.user = "admin"
webServer.password = "admin"
log.to = "/root/frp/log/frps.log"
log.level = "info"
log.maxDays = 30
log.disablePrintColor = false
至此服务配置就配置好了
2.2 安装 systemd
yum install systemd
2.3 创建并编辑 frps.service
文件(使用vim编辑器)
vim /etc/systemd/system/frps-59.service
2.4 写入内容
[Unit]
# 服务名称,可自定义
Description = frp_0.59.0_linux_amd64 server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart =/root/frp/frp_0.59.0_linux_amd64/frps -c /root/frp/frp_0.59.0_linux_amd64/frps.toml
[Install]
WantedBy = multi-user.target
注意:/root/frp/frp_0.59.0_linux_amd64/frps 对应的frps 文件,也就是你上传到服务器后,并解压后的一个文件。
上面三步可以参考:https://gofrp.org/docs/setup/systemd/
然后刷新一下:
systemctl daemon-reload
# 如果上面的命令没有生效,就使用下面的命令试一试
systemctl daemon-reexec
2.5 启动和关闭命令
不是root管理员权限时,需要使用到sudo,如你是管理员权限,就可以不是sudo命令,直接 systemctl start frps-59
# 启动frp
sudo systemctl start frps-59
# 停止frp
sudo systemctl stop frps-59
# 重启frp
sudo systemctl restart frps-59
# 查看frp状态
sudo systemctl status frps-59
设置开机自启:
sudo systemctl enable frps-59
三、配置客户端
安全暴露服务
1、被访问者机器(目标机器)
解压 frp_0.59.0_windows_amd64.zip 文件:
位置:D:\programTool\frp\frp_0.59.0_windows_amd64
frpc.toml 修改配置:
serverAddr = "服务器公网ip地址"
serverPort = 7002
[[proxies]]
name = "rdp_stcp_test"
type = "stcp"
# 只有与此处设置的 secretKey 一致的用户才能访问此服务
secretKey = "7G5Y2QW9X312PYWQWE67"
localIP = "127.0.0.1"
localPort = 3389
这是要被访问的机器,即 目标机器
cmd启动命令:
.\frpc.exe -c .\frpc.toml
2、访问者机器
解压 frp_0.59.0_windows_amd64.zip 文件:
位置:D:\tool\technology\frp\frp_0.59.0_windows_amd64
修改frpc.toml 配置:
serverAddr = "101.133.238.75"
serverPort = 7002
[[visitors]]
name = "rdp_stcp_visitor"
type = "stcp"
# 要访问的 stcp 代理的名字
serverName = "rdp_stcp_test"
# 只有与此处设置的 secretKey 一致的用户才能访问此服务
secretKey = "7G5Y2QW9X312PYWQWE67"
bindAddr = "127.0.0.1"
bindPort = 7003
这是访问者的机器,即,从这台机器去访问上一台配置好的机器。
cmd启动命令:
.\frpc.exe -c .\frpc.toml
访问者机器 连接 被访问者
使用window自带的远程连接工具:127.0.0.1:7003 输入电脑用户名和密码,即可访问目标机器
点对点访问服务
1、被访问者机器(目标机器) 位置:D:\programTool\frp\frp_0.59.0_windows_amd64
frpc.toml 修改配置:
serverAddr = "服务器公网ip地址"
serverPort = 7002
[[proxies]]
name = "p2p_rdp_test"
type = "xtcp"
# 只有共享密钥 (secretKey) 与服务器端一致的用户才能访问该服务
secretKey = "AAAA5Y2QW9X312PYWQWE67"
localIP = "127.0.0.1"
localPort = 3389
2、访问者机器:
位置:D:\tool\technology\frp\frp_0.59.0_windows_amd64
修改frpc.toml 配置:
serverAddr = "101.133.238.75"
serverPort = 7002
[[visitors]]
name = "p2p_rdp_visitor"
type = "xtcp"
# 要访问的 P2P 代理的名称
serverName = "p2p_rdp_test"
secretKey = "AAAA5Y2QW9X312PYWQWE67"
# 绑定本地端口以访问 SSH 服务
bindAddr = "127.0.0.1"
bindPort = 7004
# 如果需要自动保持隧道打开,将其设置为 true
keepTunnelOpen = true
这是访问者的机器,即,从这台机器去访问上一台配置好的机器。
cmd启动命令:
.\frpc.exe -c .\frpc.toml
访问者机器 连接 被访问者
使用window自带的远程连接工具:127.0.0.1:7004 输入电脑用户名和密码,即可访问目标机器
window自启配置
在 D:\programTool\frp\frp_0.59.0_windows_amd64 和 D:\tool\technology\frp\frp_0.59.0_windows_amd64 目录下创建
方式一:
frpc-start.bat
@echo off
:home
frpc -c frpc.toml
goto home
然后将这个 frp-start.bat 快捷键放入到 window开机自启的目录下。
这个脚本可以看到控制台窗口,不那么优雅
方式二:
frpc-start.bat
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
REM
cd D:\programTool\frp\frp_0.59.0_windows_amd64
frpc -c frpc.ini
exit
frp客户端相对稳定,使用方式二就足够了,如不稳定也可以选择方式一
方式三
frpc-start.bat
可以一直尝试连接
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
REM
:home
frpc -c frpc.toml
goto home
这个frpc-start.bat脚本,放在D:\programTool\frp\frp_0.59.0_windows_amd64 目录下