1. FRP介绍
FRP (Fast Reverse Proxy) 是比较流行的一款。FRP 是一个免费开源的用于内网穿透的反向代理应用,它支持 TCP、UDP 协议, 也为 http 和 https 协议提供了额外的支持。你可以粗略理解它是一个中转站, 帮你实现 公网 ←→ FRP(服务器) ←→ 内网 的连接,让内网里的设备也可以被公网访问到。
2. 工具准备
内网服务器 Ubuntu系统
阿里云服务器 Ubuntu系统 (带有公网IP的云服务器都是可以的)
3. 部署
3.1 云服务器端
下载FRP工具
wget https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gz
解压
tar -xvf frp_0.36.2_linux_amd64.tar.gz
进入安装目录
cd frp_0.36.2_linux_amd64
编辑frps.ini文件
[common]
bind_port = 8000 #与客户端绑定的进行通信的端口
这里我们将云服务器端的bind_port设定为8000,但是云服务器对外依然需要一个或者多个端口进行访问,这里的端口数量取决于你有多少个内网服务器。
然后,需要在阿里云服务器上设置一下开放的端口
首先进入云服务器 ESC中找到安全组-->管理规则-->入方向-->手动添加
按照需要的端口进行设置,在目的中输入你想要的端口,这边我们申请三个8000,8812,8813,保存即可。
启动
# 前台启动
./frps -c ./frps.ini
# 后台启动(正常使用后推荐后台启动)
nohup ./frps -c ./frps.ini &
3.2 内网服务器端
下载-->解压-->进入安装目录和云服务器端一样
编辑frpc.ini文件 注意文件名称(云服务器那边是frps.ini文件)
服务器1
[common]
server_addr = xx.xx.xx.xx # 公网服务器ip
server_port = 8000 # 与服务端bind_port一致
[ssh_1]
type = tcp # 连接协议
local_ip = 127.0.0.1 # 内网服务器ip
local_port = 22 # ssh默认端口号
remote_port = 8812 # 自定义的访问内部ssh端口号
服务器2
[common]
server_addr = xx.xx.xx.xx # 公网服务器ip
server_port = 8000 # 与服务端bind_port一致
[ssh_2]
type = tcp # 连接协议
local_ip = 127.0.0.1 # 内网服务器ip
local_port = 22 # ssh默认端口号
remote_port = 8813 # 自定义的访问内部ssh端口号
需要注意的问题:
- [common]部分两个服务器是一致的;
- 一定要区别[ssh_1]和[ssh_2]如果都是[ssh]的话,另外一个启动时会报占用;
- local_port是你在内网访问自己服务器用的端口,一般都是默认22,但是有特殊情况需要修改;
- remote_port是刚才我们在云服务器上开放的端口,也是我们在外网访问时用的端口;
启动
# 前台启动
./frpc -c ./frpc.ini
# 后台启动(正常使用后推荐后台启动)
nohup ./frpc -c ./frpc.ini &
启动之后出现 frpc permission denied 这个是权限不足 chmod 777 frpc 可以解决
4. 访问
ssh -p remote_port username@公网ip
# 举例
ssh -p 8812 user@106.15.333.9