@scomper

Synology 的网络访问

2019.05.19

从外网访问自己的群晖有多种方式,主要的问题节点有以下几个:为群晖分配域名、SSL 证书、外网 IP、端口映射、80 和 443 端口的访问。实践了一圈发现坑还是不少,默认的 DSM 外网访问只需要添加端口号就可以,例如 https://nas.good9.cn:5001,然而群晖上安装的 Wordpress、MantisBT、Yourls 等第三方服务,如果想从外网访问就必须多做一些设置。

固定 IP 地址和 DSM 端口

为了配合后面的各种网络设定,首先固定一下 NAS 的 IP 地址,在「网络- 网络界面-局域网」设置中将 DHCP 获取 IP 地址改为手动设置,这样重启 DSM 后 IP 地址能保持不变。

网络设置中另一个重要设置就是 DSM 设置中的端口号,默认是 5000 和 5001,如果用 http 访问域名后加上 :5000 就能打开 DSM 页面,如果是 https 访问端口号就要改成 5001。

http://192.168.0.157 等同于 http://192.168.0.157:80 访问的是 80 端口的页面,局域网内访问没有问题,启用WebStation 后可以用来访问内部的博客或网站。外网访问的话,国内运营商默认关闭了 80 和 443 端口,所以即便已经绑定了域名,外网也无法访问这两个端口。

QuickConnect

白裙用户推荐优先配置好 QuickConnect,填写一个和别人不重名的 QuickConnect ID,就有了一个外网可以访问的地址,类似于:http://QuickConnect.to/userID,或者 http://userID.QuickConnect.to/, userID 不重名就可以。QuickConnect 链接的好处是不用去记本地的 IP 地址,内外网都能访问,每次打开 QuickConnect 链接时,都有一个 Synology 搜索链接的过程,所以交互上有点拖拉。

DDNS 绑定域名的方式

通过 DDNS 绑定一个域名的方式链接速度上比 QuickConnect 快,同样也是服务于外网访问的。
DDNS 简单的设置方式是直接选 Synology 作为 DDNS 服务商,使用 Synology 提供的二级域名,主机名称中设置一个和别人不重名的名称即可获得类似于 scomper.synology.me 这样的域名。

对于不想劳神折腾自己域名的小伙伴来说 synology.me 是个不错的选择,设置简单,证书也不用自己申请。如果有自己的域名,可以在 DDNS 里添加自己的域名。

首先将域名解析设定到腾讯的 DNSPOD,具体方法是前往域名注册的地方将 DNS 修改为 DNSPod 的 DNS 服务器:f1g1ns1.dnspod.net、f1g1ns2.dnspod.net。然后在 DNSPOD 中添加主机记录(A 记录),以已经申请的 good9.cn 域名为例,可以添加一个 nas.good9.cn 的二级域名分配给 NAS 使用。

  • DNSPOD 控制台中只需要添加一个 A 记录,主机记录填写 nas,记录值先随便写一个内网地址。
  • 切换到「安全设置」创建一个 API Token,记住 ID 和 Token 的密钥字符串,注意 Token 只在创建的时候可见,可以复制出来待会方便粘贴到群晖的 DDNS 设置中。

  • 打开 NAS 的「外部访问 - DDNS」,主机名填写二级域名 nas.good9.cn,用户名中输入 ID,密码中输入 Token 的字符串,测试联机一下,状态提示正常就是没有问题,确定后域名就分配好了。

外部访问的高级设置里设置一下 DSM 外部访问的端口号,默认是 HTTP :5000、HTTPS:5001。设置好之后,使用 nas.good9.cn:5001 就能从外网访问自己的群晖了。

网络端口

DDNS 的路由器配置不是必须的,遇到不支持 UPnP 的路由器或者群晖路由器列表里没有的设备,群晖都无法和路由器同步设置。路由器配置向导页面检索完成后,可以取消后单独新增路由器转发规则,这里的目的是明确一下群晖里的服务使用的端口,以便后续到无线路由器的设置界面里手动添加端口映射或放行。

除了 DDNS 的路由器配置中添加端口以外,群晖「信息中心」里也能看到当前设备已经启用的端口情况。连接状态测试如果不成功,可能是路由器上对应的端口并没有设置。

第三方的路由器设置界面不尽相同,找到端口映射的栏目对照群晖里的路由器配置端口添加放行。也可以参考官网的介绍「Synology 服务使用哪些网络端口?」

SFTP 访问

有时候需要从外部上传一下大的文件,文件服务中可以开启 SFTP 服务,如果是提供给朋友使用,建议在用户账户中单独创建一个用户并设置权限,高级设置中「安全性设置」里记得「更改用户根目录」,把可访问的文件夹限定在指定目录。

FRP

首先需要一台外网有独立 IP 的云服务器,如果绑定了域名更好。如何实现这一步这里就不详细写了,可自行 Google。记录下来服务器的 root 账户密码,便于后面通过终端 SSH 的方式操作。

访问 FRP 的官网

查看最新的版本安装 FRP,例如,当前的版本是 0.27,那么 wget 的网络下载命令如下:

wget https://github.com/fatedier/frp/releases/download/v0.27.0/frp_0.27.0_linux_amd64.tar.gz

将下载的文件解压

tar -zxvf frp_*_linux_amd64.tar.gz -C /usr/local/

进入刚刚解压缩的目录

cd /usr/local/frp_*_linux_amd64/

删除 FRP 服务器端部署用不到的文件

rm -f frpc frpc.ini

用 VI 命令编辑配置,添加端口,如果不熟悉可以 FTP 连接到服务器把配置下载下来编辑

vi frps.ini

[common] 部分是必须有的配置,其中 bind_port 是自己设定的 frp 服务端端口,vhost_http_port 是自己设定的 http 访问端口,如果服务器的 80、443 端口被占用可以改成 8080 和 8443。

其他的可以根据需要添加,例如:dashboard_port = 7500,如果有 dashboard_* 这三行,那么在浏览器里可以访问 http://服务器 IP:7500 来查看 FRP 的控制台(密码如配置中所写就是 admin/admin),这样也能判断自己的部署是否成功,还能看到客服端连接上来的情况。

[common]
bind_port = 7000
token = 12345678
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin

从官网单独下载的 frp_0.27.0_linux_amd64.tar.gz 文件包里包含一个 frps_full.ini 命名的文件,这个文件里包含了 FRP 服务器端可以添加的所有配置项。

执行命令,让 FRP 在后台运行

screen -dmS frp
screen -r frp
./frps -c ./frps.ini &

也可以输入如下命令来实现后台运行

nohup ./frps -c frps.ini > /dev/null 2>&1

停止服务和重新启动 FRP

修改过 FRP 服务器端的配置后,需要重启 FRP 的服务,FRP 自己没有提供控制方式,可以通过查找进程定位后 Kill 到 FRP 的进程号,至于重启依旧是上一步的命令行。

ps -aux|grep frp| grep -v grep

用 Kill 命令停止 FRP 的进程,把 xxxx 替换成进程号即可。

kill -9 xxxx

群晖上的设置

群晖上 FRP 的客户端可以通过 Docker 的方式来运行,这样维护更方便。
打开 Docker 在注册表中搜索 oldiy/frpc 下载最新的版本,下载完成后在映像中可以看到已经下载的 frp 映像文件,很小只有 15MB。

1、通过 File Station 新建一个放置 frp 客户端配置文件 frpc.ini 的目录,例如 Docker/frp/conf/
新建配置文件 frpc.ini,如果不嫌麻烦也可以从 FRP 官网的安装包里获取。

2、编辑 frpc.ini 文件
FRP 安装包里默认的配置文件内容如下:

[common]
# server_addr 改成 FRP 服务器的 IP 或域名,例如 good9.cn
server_addr = good9.cn
server_port = 7000
# 服务器端如果有 token,客户端配置中一定也要有 密码还要一致
token = 12345678

[nas1]
type = http
local_port = 80
# custom_domains 自己 nas 的域名,例如 good9.cn,需要注意的是 dsm.good9.cn 的域名解析需要指向到 good9.cn 所在的服务器
custom_domains = dsm.good9.cn

PS:可能有同学会问了,为啥不用前面 DDNS 的 nas.good9.cn,nas.good9.cn 我们是通过 DDNS 直接指向到 NAS 设备的,FRP 穿透需要将域名指向到 FRP 服务器才能识别,单独分配一个域名更妥当一些,这样 FRP 挂了不至于要去调整所有的域名解析指向。

FRP 客户端的配置文件写好后就可以去 Docker 里启动 FRP 的容器了,容器的高级设置里需要改变一个地方,「卷」里添加文件 docker/frp/conf/frpc.ini 装载路径 /frp/frpc.ini,应用保存后启动即可。

如果配置没有问题,容器就能正常启动并后台运行。遇到问题推荐通过容器详情查看日志来判断问题。

FRP 客户端容器运行成功,外网现在输入 dsm.good9.cn:8080 就能访问群晖的 80 端口,如果要增加更多的端口映射,可以对照 frpc.full.ini 修改配置,每次修改配置后需要关闭再打开容器以让配置生效。


试试用 http://dsm.good9.cn:8080/MantisBT 的方式访问原来只能在局域网访问的服务。
Wordpress 和 Web Station 的事下回分解:)

Comments
Write a Comment