前言
由于ipv4地址相对来说稀缺,导致并无法实现公网给ip人手一个。所以,我们想要在公网上访问我们在内网中的设备就必须借助内网穿透服务。Frp就属于内网穿透的一种,个人感觉比较适合个人使用。我在这里采用的docker对frp进行部署,方便对于服务进行管理。
基本原理
frp 主要由 客户端(frpc) 和 服务端(frps) 组成
服务端通常部署在具有公网 IP 的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。
内网服务由于没有公网 IP,不能被非局域网内的其他用户访问。用户通过访问服务端的 frps,由 frp 负责根据请求的端口或其他信息将请求路由到对应的内网机器,从而实现通信。
准备工作
云服务器一台
云服务器的线路质量直接决定了你的内网穿透体验
服务器分为国内和国外
国内的机器由于带宽较贵一般价格会比较高,但是延时较低,体验会比较好
国外机器由于物理距离较远,体验相对较差,但是价格会便宜点
SSH连接工具
SSH连接工具有很多,例如xsell、finalshell等。这里我采用finalshell方便对于文件进行传输。
开始部署服务
安装docker和docker-compose
国内服务器安装docker
#国内服务器安装docker
curl -sSL https://get.daocloud.io/docker | sh
# 设置开机自动启动
systemctl enable docker
#查看docker版本
docker -v
#国内服务器安装docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.1.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
#授予权限
sudo chmod +x /usr/local/bin/docker-compose
#查看docker-compose版本
docker-compose --version
国外服务器安装docker
#非大陆服务器Docker安装
wget -qO- get.docker.com | bash
# 设置开机自动启动
systemctl enable docker
#查看docker版本
docker -v
#非大陆服务器Docker-compose安装
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#授予权限
sudo chmod +x /usr/local/bin/docker-compose
#查看docker-compose版本
docker-compose --version
编写部署配置文件
创建frps路径
#切换为root权限
sudo -i
#创建frps目录
mkdir -p /root/data/docker_data/frps
#进入frps目录
cd /root/data/docker_data/frps
编写配置文件
#创建frps配置文件
vim frps.ini
frps配置文件
[common]
#frp 监听端口,与客户端绑定端口
bind_port= A_port
kcp_bind_port = A_port
#dashboard用户名
dashboard_user= admin
#dashboard密码
dashboard_pwd= changeme
#dashboard端口
dashboard_port= B_port
#设置客户端token
token = 1ffs4f6s1s6f16s
PS:其中A_port是frps监听的端口,B_port是面板的端口,大家按照自己的需求进行设置,token也可自定义
编写docker-compose文件
#创建docker-compose配置文件
vim docker-compose.yaml
docker-compose配置文件
version: '3.3'
services:
frps:
restart: always
network_mode: host
volumes:
- './frps.ini:/etc/frp/frps.ini'
container_name: frps
image: snowdreamtech/frps
运行配置文件
docker-compose up -d
进入控制面板
#浏览器输入
http://IP:B_port