目录
一、使用Frp
frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。
需要准备有公网ip的服务器,可以上阿里云购买云服务器
下载文件:
wget https://github.com/fatedier/frp/releases/download/v0.57.0/frp_0.57.0_linux_arm64.tar.gz
根据自己的系统架构选择对应版本
github地址:https://github.com/fatedier/frp/releases/tag/v0.57.0
下载后解压并重命名:
#解压到当前目录下
tar -xzf frp_0.57.0_linux_arm64.tar.gz -C ./
#重命名
mv frp_0.57.0_linux_arm64 frp
服务端(具有公网ip的服务器)只需要两个文件 :frps frps.toml
客户端只需要两个文件 frpc frpc.toml
客户端就是你需要通过服务端访问的内网服务
服务端配置
进入frp目录下,编辑frps.toml文件
vim frps.toml
添加以下内容:
鉴权token可以通过以下命令生成一个随机十六进制字符串 ,也可以自己自定义
#使用OpenSSL生成一个16字节(即128位)的随机十六进制字符串
openssl rand -hex 16
#frps服务监听的本机端口
bindPort = 7000
#frps服务web界面配置
webServer.addr = "0.0.0.0"
webServer.port = 7800
webServer.user = "admin"
webServer.password = "admin"
# frpc客户端连接鉴权token,默认为token模式,可选oidc
auth.token="3deb4dd2a5ebd3c5d64a53f5d07aabb2"
#日志打印配置
log.to = "./log"
log.level = "info"
log.maxDays = 7
保存退出
对frps二进制文件加可执行权限:
sudo chmod +x frps
手动执行命令:
frps -c frps.toml
Ctrl+C 可停止服务
服务端Dashboard页面访问 IP +端口: 这里端口为7000,如果是云服务器记得加安全组和防火墙开放端口,用户名密码为配置admin
点击proxy的TCP可查看对应客户端连接情况
配置systemd,通过systemctl命令管理服务
sudo vim /etc/systemd/system/frps.service
添加以下内容,将你的frp文件存放路径修改为你的
[Unit]
# 服务名称,可自定义
Description = frps client
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /home/glacier/software/frp/frps -c /home/glacier/software/frp/frps.toml
[Install]
WantedBy = multi-user.target
重新加载守护进程
sudo systemctl daemon-reload
启动frps服务端
sudo systemctl start frps
开机自启
sudo systemctl enable frps
停止服务
sudo systemctl stop frps
重启服务
sudo systemctl restart frps
客户端配置
在需要访问的客户端服务器中添加对于文件
编辑frpc.toml文件:
#token需要与服务端的token一致
auth.token = "3deb4dd2a5ebd3c5d64a53f5d07aabb2"
# 服务端的公网ip
serverAddr = "服务端公网IP"
# 服务端的监听端口
serverPort = 7000
#客户端管理界面,配置0.0.0.0局域网其他人才能访问,近本地访问保持127.0.0.1
webServer.addr = "0.0.0.0"
webServer.port = 7400
webServer.user = "admin"
webServer.password = "admin"
[[proxies]]
# 名称 需要唯一
name = "glacier-ssh-tcp"、
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
#访问服务端被转到本机当前配置的对应端口
#比如此处是57002,那外网访问服务端公网ip:57002则会被转发访问本配置127.0.0.1:22端口
remotePort = 57002
# mysql-3306,访问服务端公网ip:57336,即可访问3306端口
[[proxies]]
name = "mysql-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3306
remotePort = 57336
客户端管理界面,配置0.0.0.0局域网其他人才能访问,近本地访问保持127.0.0.1
可以添加一个 [[proxies]] 使可以通过公网IP访问该客户端管理页面,但也需要重视安全考虑
手动启动 :frpc -c frpc.toml
配置systemd守护进程与服务端差不多,只需修改对应frpc和frpc.toml 文件存在路径,重新加载守护进程,启动对应服务即可
启动后,浏览器访问客户端管理页面:IP + 端口 (用户名密码为配置admin):
点击configure可以在线配置,添加客户端代理端口等,修改好需要添加的配置后记得点击refresh
刷新服务端Dashboard页面可查看客户端连接情况
通过公网IP+客户端配置的remotePort 端口即可访问指定端口的服务,注意防火墙配置和云服务器的安全组配置
安全地暴露内网服务
通过创建一个只有授权用户能够访问的 SSH 服务代理,实现内网服务的安全暴露。
某些内网服务,如果直接暴露在公网上,可能存在安全风险。使用 stcp(secret tcp)
类型的代理可以让您安全地将内网服务暴露给经过授权的用户,这需要访问者也部署 frpc 客户端。
在需要将内网服务暴露到公网的机器上部署 frpc,并创建如下配置:
部署 frpc 客户端并配置
serverAddr = "x.x.x.x"
serverPort = 7000
[[proxies]]
name = "secret_ssh"
type = "stcp"
# 只有与此处设置的 secretKey 一致的用户才能访问此服务
secretKey = "abcdefg"
localIP = "127.0.0.1"
localPort = 22
在访问者机器上部署并配置 frpc
在想要访问内网服务的机器上也部署 frpc,并创建如下配置:
serverAddr = "x.x.x.x"
serverPort = 7000
[[visitors]]
name = "secret_ssh_visitor"
type = "stcp"
# 要访问的 stcp 代理的名字
serverName = "secret_ssh"
secretKey = "abcdefg"
# 绑定本地端口以访问 SSH 服务
bindAddr = "127.0.0.1"
bindPort = 6000
这样授权的用户才能访问这个端口服务
更多详细配置可查看官方文档进行配置:frp
二、使用贝锐蒲公英组网
让异地组网更简单
安全、稳定,让企业快速组网
快速部署、即装即用;稳定可靠、安全合规
需要组网的内网服务器安装,我这里使用docker安装,更简单快速
注册账号登录蒲公英管理平台:
添加成员后点击查看详情,复制对应的 UID
docker运行命令:
sudo docker run -d \
--restart=always \
--device=/dev/net/tun \
--net=host \
--cap-add=NET_ADMIN \
--cap-add=SYS_ADMIN \
--env PGY_USERNAME="这是UID" \
--env PGY_PASSWORD="这是你的密码" \
--name pgy \
bestoray/pgyenterprise
运行后,没有就像会自动拉去最新版镜像
忘记密码可以修改密码:
windows上安装对应windows版本软件,登录后即可实现组网,查看在线的服务器,通过对应ip即可访问对应服务器中的服务,左边灰色的表示离线,也可以通过蒲公英管理平台查看。