多平台方案:快速利用 FRP 实现 NAS 内网穿透
技术背景
frp 是什么?
frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。关于 frp 的详细介绍详见 Github。从 frp 的架构体现了两个端:服务端 frps 和 客户端 frpc。本文主要讲述在 Windows 下部署服务端、在 Docker 下部署客户端的实现步骤。
为什么要内网穿透?
目前遇到了 2 个业务需求,需要内网穿透来解决:
- 公司局域网内服务器部署了 Web 站点,需要在公司外访问;
- 云服务器需要定时向内网服务器发送请求;
本文分别记录了在 Linux 和 Windows 环境下部署 FRP 客户端与服务端的步骤。
服务端(Server)部署环境
- 服务端 1:公网 CentOS 7.4 (x64)
- 服务端 2:公网 Windows Server 2008 (x64)
客户端(Client)部署环境
- 客户端1:Linux 环境下的 Docker (x64)
- 客户端2:Windows 10 (x64)
1. 服务端配置操作
1.1. Linux 服务端
步骤一:前往下载软件包(Release · fatedier / frp)
- 选择 frp_x.xx.x_linux_amd64.tar.gz
解压后取出 frps 和 frps.ini 两个文件,放到 frp 目录下。
步骤二:修改frps.ini配置
不同系统下 frps.ini 内容相同,可参考的参数如下(注释请删掉):
[common]
bind_addr = 0.0.0.0
bind_port = 9001
dashboard_port = 9000 // 控制面板端口
dashboard_user = admin // 控制面板用户名
dashboard_pwd = admin // 控制面板密码
vhost_http_port = 8000
vhost_https_port = 4430
log_file = ./frps.log
log_level = error
log_max_days = 3
token = thisisarandomstring // 自定义15位以上的连接密钥
max_pool_count = 50
tcp_mux = true
步骤三:运行frps
打开终端进入 frp 目录下,先 chmod 后再运行:
cd frp
chmod 775 frps
chmod 775 frps.ini
nohup ./frps -c frps.ini &
命令说明:
nohup :在退出帐户之后继续运行相应的进程,不挂起( no hang up)。
& :在后台运行某个作业,使终端不被该作业占据。
1.2. Windows 服务端
步骤一:前往下载软件包(Release · fatedier / frp)。
- 选择 frp_x.xx.x_windows_amd64.zip
解压后取出 frps.exe 和 frps.ini 两个文件,放到 frp 目录下。
步骤二:修改frps.ini配置
不同系统下 frps.ini 内容相同,可参考上面的配置,此处不赘述。
步骤三:启动服务
使用管理员身份启动 cmd 终端,进入 frp 目录下运行:
cd frp
frps -c frps.ini
启动任务管理器,出现了 frps.exe,说明 frps 已经在后台运行了。
注:终端运行后不能关掉。
1.3. 开放安全组
由于公网系统是云主机,因此还要到安全组里开放相应的端口。
腾讯云安全组:
阿里云安全组:
至此,服务端的 frp 服务已经部署完成了。
2.客户端配置操作
2.1. Docker 部署客户端
步骤一:创建客户端
这里建在 /home 中,可以通过 SSH 登录并操作:
cd /home
sudo mkdir frp
步骤二:创建 2 个配置文件
首先进入到 /home/frp 中,使用 vi 创建 frpc-docker-compose.yml,写入:
version: '3'
services:
frpc:
image: cloverzrg/frpc-docker
volumes:
- ./frpc.ini:/conf/frpc.ini
container_name: frpc
network_mode: host</code></pre>
再使用 vi 创建 frpc.ini,可参考的参数内容如下(注释请删掉):
[common]
server_addr = x.x.x.x // 服务端的公网IP地址
server_port = 9001
token = thisisarandomstring // 自定义的连接密钥
[自定义名字]
type = tcp
local_ip = 127.0.0.1
local_port = 80 // 本地端口
remote_port = 9002 // 远程端口
use_encryption = true
use_compression = true
步骤三:运行映像
docker-compose -f frpc-docker-compose.yml up -d
看到 frpc 映像运行中,说明客户端启动了,本地的 80 端口将映射到 http://x.x.x.x:9002 。
2.2. Windows 部署客户端
步骤一:下载软件包
前往 github 下载 frp 的最新软件包(Release · fatedier / frp)。
- 选择 frp_x.xx.x_windows_amd64.zip
解压后取出 frpc.exe 和 frpc.ini 两个文件,放到 frp 目录下。
步骤二:修改frpc.ini配置
不同系统下 frpc.ini 内容相同,可参考上面的配置,此处不赘述。
步骤三:启动服务
使用管理员身份启动 cmd 终端,进入 frp 目录下运行:
cd frp
frpc -c frpc.ini
启动任务管理器,出现了 frpc.exe,说明 frpc 客户端已经在后台运行了。
注:终端运行后不能关掉。
参考资料
- 如何在Docker如何部署frp内网穿透. https://www.yisu.com/zixun/321709.html
- windows下基于frp的内网穿透部署. https://zhuanlan.zhihu.com/p/55306067
本文来自作者:西湖摸鱼,转载请注明原文链接:https://www.cnblogs.com/conne/p/15215623.html