2021-02-19

natfrp sakaru 官方教程来啦 使用 docker 管理 frpc 运行(群晖 NAS)

作者 万有引力

natfrp sakaru 官方教程来啦 使用 docker 管理 frpc 运行(群晖 NAS)

https://doc.natfrp.com/#/frpc/usage/docker使用 docker 管理 frpc 运行(命令行)

本教程以 DSM 6 系统作为 GUI 操作举例,命令行操作请移步 使用 docker 管理 frpc 运行(命令行)

前置知识说明

首先您需要知道启动参数的写法,即:-f <启动密钥>:<隧道ID>,如果要启动多个隧道可以 -f <启动密钥>:<隧道ID1>,隧道ID2,隧道ID3,...,如果还需深入了解请转到此

对于群晖用户,建议您在阅读本篇教程之前,阅读我们的 传统群晖教程,阅读全部后,按照指引操作「配置 DSM 面板」和「创建隧道」两节

设置隧道

因为 docker 网络模型的原因,我们像从前一样把隧道的 本地IP 设置为 127.0.0.1 已经不再奏效,必须修改设置中的此项。

此处需要分情况讨论:

  • 当修改为 host 宿主网络模式时,只需要设置为上级网关分配给当前设备的 ip 即可(人话:设置为路由器给群晖的ip)
  • 当保持默认的 bridge 网桥模式时,我们需要设置为对应网桥的网关 ip 才能恰当的访问当前设备,因为该方案兼容性和安全性更高,下面的教程默认采用此方案

首先打开群晖的 Docker 应用,根据图上的方法算出我们需要的 ip

然后在新建隧道时将其设置为 本地IP

或者在 隧道列表 中,编辑一条隧道,设置 本地IP 为该 IP

这样隧道就准备完了

设置Docker

如果您发现自己获取镜像非常慢,并不知道什么叫做 出国网络质量,或者不知道如何改善的话,获取镜像这一步建议跳转到 获取镜像:中国特色 试试

首先我们需要获取镜像,跟着图片操作即可:

获取到镜像后就可以启动一个「实例」,请注意,此处「命令」栏中输入的是我们先前准备的启动参数

设置好后应用,然后启动即可

获取连接信息

连接信息在 docker实例 的日志中,跟着图片打开它,你就能看到

打开浏览器,试一下(如何访问可能需要回忆 传统群晖教程 中的内容)

注意事项

群晖的编辑容器中有「启用自动重启启动」的选项,该选项默认关闭,建议打开它

获取镜像:中国特色

因为一些很有中国特色的原因,我国运营商的国际互联带宽长期不足(对于个人用户来说)。反映到您身上可能就是这个 7MiB 的镜像下了一个小时,最后还失败了,这时候就需要一些有中国特色的解决手段。

我们在阿里云的容器镜像服务提供镜像下载服务,镜像地址是 registry.cn-hongkong.aliyuncs.com/natfrp/frpc

使用方式如图:

使用 docker 管理 frpc 运行(命令行)

本教程为基于命令行操作的 docker 教程,如果需要 gui 教程请移步 使用 docker 管理 frpc 运行(群晖 NAS)

如果您感觉本篇教程对您来讲难以理解,可以试试隔壁 systemd 教程

前置知识说明

首先您需要知道启动参数的写法,即:-f <启动密钥>:<隧道ID>,如果要启动多个隧道可以 -f <启动密钥>:<隧道ID1>,隧道ID2,隧道ID3,...,如果还需深入了解请转到此

设置隧道

因为 docker 网络模型的原因,我们像从前一样把隧道的 本地IP 设置为 127.0.0.1 已经不再奏效,必须修改设置中的此项。

因为默认的 bridge 网桥模式兼容性和安全性更高,下面的教程默认采用此方案

首先运行下面的指令读出 docker 默认网桥的 网关IP

ip addr show docker0

结果预期如下:

4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:c4:f5:83:8f brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

其中 172.17.0.1 这一部分就是我们要的 IP

然后在新建隧道时将其设置为 本地IP

或者在 隧道列表 中,编辑一条隧道,设置 本地IP 为该 IP

这样隧道就准备完了

设置Docker

首先我们需要获取镜像:

# 默认 DockerHub 源,国内可能较慢:
docker pull natfrp/frpc

######## 或者 ########

# 阿里云容器镜像 香港地区源,适合国内用户:
docker pull registry.cn-hongkong.aliyuncs.com/natfrp/frpc

如果成功的话,返回应该会是下面这样:

~# docker pull registry.cn-hongkong.aliyuncs.com/natfrp/frpc
Using default tag: latest
latest: Pulling from natfrp/frpc
4c0d98bf9879: Pull complete 
292f768886fd: Pull complete 
Digest: sha256:9d33d6110ee53480f28cc99e39476d3d845ce70cf8a4d775da78f15620bbab5a
Status: Downloaded newer image for registry.cn-hongkong.aliyuncs.com/natfrp/frpc:latest
registry.cn-hongkong.aliyuncs.com/natfrp/frpc:latest

其中最后一行复制一下,这个是实际被下载到本地的镜像tag,启动时会用得上

接下来我们执行:docker run -d --restart=always <你刚复制的镜像tag> -f <启动参数>,如果一切顺利,就能看到只有一行奇怪的hash的输出,就是实例ID

获取连接信息

连接信息在 docker实例 的日志中,执行 docker logs <实例ID> 就能看到,如对于这样的启动参数:

我们取实例ID的随便前几位就能查到日志:

注意事项

--restart=always 选项并不是必须,但开启此选项后可以自动重启容器实例