多平台方案:快速利用 FRP 实现 NAS 内网穿透

技术背景

frp 是什么?

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。关于 frp 的详细介绍详见 Github。从 frp 的架构体现了两个端:服务端 frps 和 客户端 frpc。本文主要讲述在 Windows 下部署服务端、在 Docker 下部署客户端的实现步骤。

为什么要内网穿透?

目前遇到了 2 个业务需求,需要内网穿透来解决:

  1. 公司局域网内服务器部署了 Web 站点,需要在公司外访问;
  2. 云服务器需要定时向内网服务器发送请求;

本文分别记录了在 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. 开放安全组

由于公网系统是云主机,因此还要到安全组里开放相应的端口。

腾讯云安全组:
image

阿里云安全组:
image

至此,服务端的 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 客户端已经在后台运行了。
注:终端运行后不能关掉。

参考资料

  1. 如何在Docker如何部署frp内网穿透. https://www.yisu.com/zixun/321709.html
  2. windows下基于frp的内网穿透部署. https://zhuanlan.zhihu.com/p/55306067
posted @ 2021-09-01 17:26  西湖摸鱼  阅读(618)  评论(0编辑  收藏  举报