Frp内网穿透
目的:通过内网穿透,暴漏远程桌面端口,可以远程连接家里的电脑,或者访问其他部署在家里电脑里的服务。
必要条件:有公网ip服务器
github地址:https://github.com/fatedier/frp
frpc 客户端
frps 服务端
服务端配置
frps.ini
[common]
bind_port = 5000 #服务端监听端口,后边配置客户端要用到,服务器防火墙需要放行该端口
dashboard_port = 6001 #web面板端口,服务器防火墙需要放行该端口
token = ********* #密码,配置客户端时用到
dashboard_user = username #面板登录用户
dashboard_pwd = password #面板登录密码
vhost_http_port = 6003 #http协议端口,服务器防火墙需要放行该端口
vhost_https_port = 6004 #https协议端口,服务器防火墙需要放行该端口
启动服务
nohup ./frps -c frps.ini > frp.log 2>&1 &
客户端配置
[common]
server_addr = xx.xx.xx.xx #服务端公网IP
server_port = 5000 #服务端bind_port地址
token = ******** #服务端token
#下面配置为开启客户端WEBUI
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_pwd = admin
[remote-1] #随便起个名字
type = tcp #连接类型
local_ip = 127.0.0.1
local_port = 13389 #要访问本机的哪个端口
remotePort = 6000 #指定服务端访问的端口,不填默认随机。服务端防火墙要放行改端口,最好固定值。
linux启动服务
nohup ./frpc -c frpc.ini > frp.log 2>&1 &
查看web看板
windows启动frpc客户端
进入到frp的目录后输入cmd
前台启动
.\frpc.exe -c frpc.toml
另一种方式:XTCP 打洞穿透
官方文档解释
了解 frp XTCP 类型的代理。
XTCP 的配置方式和 STCP 很类似。但是会采用 P2P 的方式进行打洞穿透,如果成功,后续的流量将不会经过 frps,而是直接通信,不再受到 frps 所在服务器的带宽限制。
由于打洞成功率取决于所处网络的 NAT 类型,所以 XTCP 的可用性和稳定性无法保证。在需要可靠连接的情况下,建议使用 STCP 替代。
当 visitor 配置了 keepTunnelOpen = true 时,frpc 会定期检测隧道是否打开,如果没有,则会尝试打洞建立隧道,这样可以始终保持隧道打开,在需要连接对端服务时,可以避免延迟。
默认情况下,visitor 会在接收到用户连接后尝试打洞,如果打洞失败,可以尝试多次建立连接,程序会尝试其他的打洞策略,有可能在多次重试后成功打洞。一旦打洞成功,后续新增连接不必重复打洞,而是可以复用隧道。
注:这种方式的好处是,一旦打洞成功,所有请求和流量不再经过中间服务器,而是两台电脑之间直接连接,连接速度不受中间服务器带宽限制。
坏处就是不一定可以打洞成功
配置示例:
服务端配置参考上边不变
被访问客户端(结合上边的配置,可以同时配置两种方式)
log.to="C:\frp_0.52.3\frpc.log"
log.maxDays=10
log.level="debug"
[common]
server_addr = xx.xx.xx.xx #服务端公网IP
server_port = 5000 #服务端bind_port地址
token = ******** #服务端token
#下面配置为开启客户端WEBUI
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_pwd = admin
[remote-1] #随便起个名字
type = tcp #连接类型
local_ip = 127.0.0.1
local_port = 13389 #要访问本机的哪个端口
remotePort = 6000 #指定服务端访问的端口,不填默认随机。服务端防火墙要放行改端口,最好固定值。
[remote-2]
type = xtcp
sk = *********
local_ip = 127.0.0.1
local_port = 13389
访问者客户端配置
# 连接服务器配置
[common]
server_addr = xx.xx.xx.xx #服务端公网IP
server_port = 5000
token = ******** #服务端token
# 开启控制面板
admin_addr = 127.0.0.1
admin_port = 7400
# 设置控制面板账号密码
admin_user = admin
admin_pwd = admin
# 设置需要访问穿透的命名,可随意命名
[Mstsc_visitor]
# 设置协议xtcp
type = xtcp
# 设置角色为visitor
role = visitor
# 设置被穿透主机的frpc穿透名称
server_name = remote-2
# 设置密钥
sk = *********
# 将穿透的IP地址绑定为本地地址
bind_addr = 127.0.0.1
# 将穿透的端口绑定为本地端口
bind_port = 3390
keepTunnelOpen=true
配置好后启动服务,访问127.0.0.1:3390即可
注册为系统服务并开机自启
方法一
创建文本文件改名为ftpcstart.vnb,填写下面代码
注:程序目录不能有空格,且必须放在C盘,要不然会报错
set ws=WScript.CreateObject("WScript.Shell")
ws.Run "C:\frp_0.52.3\frpc.exe -c C:\frp_0.52.3\frpc.toml",0
保存后把脚本放到下面目录下(用户名根据自己的修改一下)
C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
放好后再开始菜单查找「启动应用」
在这里可以控制刚刚添加的启动项
方法二(推荐)
使用nssm工具注册为系统服务
官网地址:https://nssm.cc/
下载地址:https://nssm.cc/release/nssm-2.24.zip
解压后进入目录,按住Shift+右键 再此处打开Powershell窗口(或者使用cmd窗口)
执行命令
.\nssm.exe install frpc
根据自己的路径填写后点击install service
完成后
右键 此电脑
管理-服务和应用程序-服务
找到frpc,双击后点击启动,启动类型:自动。
Frp内网穿透
https://www.hechunyu.com/archives/1701239465108