前言:FRP内网穿透原理
在数字时代,无缝的网络连接是技术人员的常见需求。FRP(Fast Reverse Proxy),一款由Go语言编写的高性能反向代理工具,提供了强大的内网穿透能力。本文将深入探讨FRP的安装、配置,以及工作原理,帮助你将本地服务无缝暴露至全球互联网。
FRP通过在有公网IP的服务器(服务端)和需要暴露服务的内网机器(客户端)之间建立隧道,允许外部请求安全访问内网中的服务。下图详细展示了FRP内网穿透的工作原理,包括客户端(frpc)、服务端(frps)、内部服务、外部请求以及它们之间建立的隧道。
1.下载frp软件
https://github.com/fatedier/frp/releases
阿里云的ECS系统是Centos,这里下载 frp_0.61.0_linux_amd64.tar.gz 版本。
Mac mini是Apple芯片,这里面下载 frp_0.61.0_darwin_arm64.tar.gz 版本。
2.配置frp服务端(阿里云ECS Centos)
解压缩 frp_0.61.0_linux_amd64.tar.gz, 修改 frps.toml
# 服务端口 bindPort = 7000 auth.method = "token" # 鉴权方式 auth.token = "xxxxx" # 客户端连接的token # Dashboard 配置 webServer.port = 7001 # 后台面板端口号 webServer.addr = "0.0.0.0" # 后台管理地址 webServer.user = "xxxxx" # 后台管理员账号 webServer.password = "xxxxx" # 后台管理员密码
在终端上输入下面命令,就可以启动服务了。
./frps -c frps.toml 即可启动服务
后台管理面板页面
访问地址:http://[serverAddr]:7001
添加修改ECS服务器的安全组规则
添加7000,7001,35900,7860, 35901 端口的入方向规则
3.Mac mini客户端的配置
解压缩 frp_0.61.0_darwin_arm64.tar.gz, 修改 frpc.toml
serverAddr = "123.xxx.xxx.xxx" # 阿里云ECS服务器IP serverPort = 7000 # frp端口 auth.method = "token" auth.token = "xxxxx" # token 与服务端保持一直 vhostHTTPPort = 7860 # 穿透服务器7860端口 [[proxies]] name = "vnc" type = "tcp" localIP = "127.0.0.1" localPort = 5900 # vnc默认端口5900 remotePort = 35900 # 和阿里云ECS服务器的映射端口,访问阿里云ECS服务器的35900端口时,会被转发到客户端的5900端口 #transport.useEncryption = true transport.useCompression = true [[proxies]] name = "stable-diffusion-web" type = "http" localIP = "127.0.0.1" localPort = 7860 #transport.useEncryption = true transport.useCompression = true customDomains = ["123.56.xxx.xxx"] # 和阿里云ECS服务器的映射端口,http访问阿里云ECS服务器的7860端口时,会被转发到客户端的7860端口 # 配置ssh服务 [[proxies]] name = "ssh" type = "tcp" localIp = "127.0.0.1" localPort = 22 remotePort = 35901 # 这个自定义,之后再ssh连接的时候要用
在Mac mini的设置里面打开 屏幕共享(远程桌面)
在Mac mini的设置里面打开 远程登录(SSH)
在Mac mini的终端执行,启动客户端。
./frpc -c ./frpc.toml
启动成功以后,在服务端的管理页面,可以看到有vnc, ssh,http的连接了
4.远程连接Mac mini
远程桌面
在另外Mac电脑上,访达–>前往–>连接服务器
vnc://frp服务器ip:35900
HTTP
浏览器访问 http://123.xxx.xxx.xxx:7860/ 时,会被转发给 客户端的7860端口
SSH
在终端上输入,就能以ssh登录了。
ssh -p 35901 用户名@123.xxxx.xxx.xxxx