老生常谈的内容

frp 主要由两个组件组成:客户端(frpc) 和 服务端(frps)。通常情况下,服务端部署在具有公网 IP 地址的机器上,而客户端部署在需要穿透的内网服务所在的机器上。由于内网服务缺乏公网 IP 地址,因此无法直接被非局域网内的用户访问。用户通过访问服务端的 frps,frp 负责根据请求的端口或其他信息将请求路由到相应的内网机器,从而实现通信。

githup文件下载地址:https://github.com/fatedier/frp/releases

废话不多说,直接上配置。

注:http和https建议使用tcp协议
注:免责声明,此配置仅供学习使用。
=======linux进程守护=================
vim /etc/systemd/system/frps.service
————————————————–
 
[Unit]
Description=frp service
After=network.target syslog.target
Wants=network.target
 
[Service]
StartLimitInterval=5
StartLimitBurst=10
ExecStart=/opt/frp/frp/frps -c /opt/frp/frp/frps.toml
#安装路径,linux服务端和客户端的守护程序同理
 
Restart=always
RestartSec=120
 
[Install]
WantedBy=multi-user.target
=======================
#更新服务
systemctl daemon-reload
 
=========windows客户端配置完成========
windows下frpc部署路径
D:\frp
 
在这个文件夹下创建一个rdp_service.vbs文件,将下面两行输入并ctrl+c保存
Set ws = CreateObject(“Wscript.Shell”)
   ws.run “cmd /c d:\frp\frpc.exe -c d:\frp\frpc.toml”,vbhide
 
使用win+r调用运行,输入
shell:startup
 
至此,您的windows的远程桌面代理已配置完成
 
可以在cmd中使用d:\frp\frpc.exe -c d:\frp\frpc.toml看日志
 
===================================
 
# 启动frp
 systemctl start frps
# 停止frp
 systemctl stop frps
# 重启frp
 systemctl restart frps
# 查看frp状态
 systemctl status frps
#开机自启
 systemctl enable frps
#后台执行服务端,nohup ….. &是后台执行命令,建议第一次使用不要后台运行,方便查看日志
 nohup ./frps -c ./frps.toml &
 
==========frps服务端配置详解=================
#服务端和客户端的通信端口
bindPort = 7000
#token令牌
auth.token = “1q2w3e4r”
 
allowPorts = [
{ start = 2048,end = 65535},#允许2048——65535范围端口开放
{ single = 2001}#允许2001端口开放
]
 
webServer.port = 7002
#web管理页面端口
webServer.addr = “192.168.1.1”
#web管理页面的管理IP地址
webServer.user = “admin”
#web管理页面的管理账号
webServer.password = “qwer”
#web管理页面输入密码
 
================frpc配置==========================
serverAddr = “192.168.1.1”
#链接的服务端的IP地址
serverPort = 7000
#通信端口
auth.token = “1q2w3e4r”
#token令牌
 
[[proxies]]
name = “RDP_windows” #必须唯一,不能重复
type = “tcp” #支持TCP、UDP、STCP、SUDP、HTTP、HTTPS、XTCP、TCPMUX
localIP = “127.0.0.1” #可以是IP地址,也可以是域名(待确认)
localPort = 3389 #本地windows的远程桌面端口是3389
remotePort = 3389 #映射服务端的端口为3389
================================================
 
================================================
================================================
================================================
================================================
================================================
================================================
================================================
===============多端口复用=========================
通过使用 tcpmux 类型的代理,您可以实现多个 SSH 服务通过同一端口进行暴露。
这种方法还适用于任何支持 HTTP Connect 代理连接方式的客户端,以实现端口的复用。
注:通过二级域名的方式实现同端口服用
===============frps服务端==========================
bindPort = 7000
auth.token = “1q2w3e4r”
 
tcpmuxHTTPConnectPort = 5002
#复用端口
webServer.port = 7002
webServer.addr = “192.168.1.1”
webServer.user = “admin”
webServer.password = “qwer”
===============frpc客户端A=========================
 
serverAddr = “192.168.1.1”
serverPort = 7000
 
[[proxies]]
name = “ssh1”
type = “tcpmux”
#指定复用协议
multiplexer = “httpconnect”
#通过http协议进行代理
customDomains = [“machine-a.example.com”]
#指定访问此设备的域名
localIP = “127.0.0.1”
localPort = 22
 
===============frpc客户端B=========================
 
serverAddr = “192.168.1.1”
serverPort = 7000
 
[[proxies]]
name = “ssh1”
type = “tcpmux”
multiplexer = “httpconnect”
customDomains = [“machine-b.example.com”]
localIP = “127.0.0.1”
localPort = 22
 
==============访问方法===================
使用 SSH ProxyCommand 访问内网机器 A,假设用户名为 test。使用以下命令:
ssh -o ‘proxycommand socat – PROXY:x.x.x.x:%h:%p,proxyport=5002’ test@machine-a.example.com
 
ssh root@machine-a.example.com -p 5002
ssh root@machine-b.example.com -p 5002
================================================
================================================
================================================
================================================
 
 
===============对外提供简单的文件访问服务=====
通过配置 static_file 客户端插件,您可以将本地文件暴露在公网上,以供其他人访问。
通过使用 static_file 插件,您可以轻松地提供一个基于 HTTP 的文件访问服务,让其他人可以访问您指定的文件。
使用浏览器访问 http://x.x.x.x:6000/static/,以查看位于 /tmp/file 目录下的文件。系统会要求输入您设置的用户名和密码。
===============frpc客户端================
 
serverAddr = “192.168.1.1”
serverPort = 7000
 
[[proxies]]
name = “test_static_file”
type = “tcp”
remotePort = 6000
[proxies.plugin]
type = “static_file”
# 本地文件目录,对外提供访问
localPath = “/tmp/file”
# URL 中的前缀,将被去除,保留的内容即为要访问的文件路径
stripPrefix = “static”
httpUser = “admin”
httpPassword = “adminpasswd”
================================================

发表回复