前言
内网穿透技术允许从外部网络访问内网中的设备,例如 nas 设备。即使在不同的网络环境下,此功能也能实现远程访问和管理 nas 设备。以下是一些常用的内网穿透方案:
官方龙8唯一官网的解决方案
 synology quickconnect 服务:synology 官方提供的服务,可以通过 synology 帐户远程访问 nas 设备。用户可在 nas 控制面板上配置和管理 quickconnect 服务,使其在不同网络环境下轻松访问 nas。
 synology ddns 服务:synology nas 支持使用 ddns(动态域名解析)服务,为 nas 设备设置一个动态域名。用户可通过域名访问 nas,无需担心动态 ip 地址变化带来的不便。
vpn 连接
 路由器 vpn:在路由器上设置 vpn 服务器,或使用 nas 自身的 vpn 服务,可建立安全的远程连接,允许用户访问内网资源,包括 nas 设备。
端口转发
 端口转发(端口映射):在路由器上配置端口转发,将特定端口的流量转发到 nas 设备上。用户可通过指定端口访问 nas,但应确保考虑安全性,避免暴露不需要的服务或端口。
第三方工具或服务
 ngrok:一个第三方工具,可帮助用户将内网设备暴露到公网上。需要注意安全性和隐私保护。
 frp:类似于 ngrok 的第三方工具,也用于内网穿透。
使用自有服务器 ngrok 实现内网穿透
准备工作
 一个已备案的域名(如在国内服务器)
 一台服务器(如阿里云 99 元/年,访问:http://d.xgss.net/2)
 系统为 centos 7
配置域名
 将二级域名解析为 ngrok.xgss.net
 使用泛解析 .ngrok.xgss.net,避免后续手动解析子域名
服务器配置
 远程 ssh 连接到服务器
 下载依赖库:
     `sudo yum install -y wget git`
 安装 go 和 git:
     `wget https://go.dev/dl/go1.18.2.linux-amd64.tar.gz`
     `tar -c /usr/local -xzf go1.18.2.linux-amd64.tar.gz`
     `export path=$path:/usr/local/go/bin`
     `wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.36.0.tar.gz`
     `tar -c /usr/local -xzf git-2.36.0.tar.gz`
     `export path=$path:/usr/local/git/bin`
 切换至用户目录:
     `cd /data`
 下载 ngrok 源代码:
     `git clone https://github.com/inconshreveable/ngrok`
 复制证书:
     `cp ngrok/cert/server.pem ngrok/cmd/ngrokd/`
     `cp ngrok/stub/.go ngrok/cmd/ngrokd/`
 编译 ngrok:
     `make build`
 创建配置文件:
     ` nano /data/ngrok/ngrokd.conf`
     配置参数:
         `httpaddr`:访问 http 使用的端口(默认:80)
         `httpsaddr`:访问 https 使用的端口(默认:443)
         `tunneladdr`:ngrok 通道使用的端口(默认:4443)
启动和管理 ngrok
 启动 ngrok:
     `./ngrokd start`
 监控 ngrok 服务:
     `service ngrokd start`
 定时执行 ngrok:
     `crontab -e`
     添加以下内容:
    ```
         /bin/sh /data/ngrok/init.sh
    ```
测试 ngrok
 访问 `test.ngrok.xgss.net`,应显示本机 ip 地址。
使用 ngrok 远程访问 nas
 在 nas 上配置 ngrok 的 22 端口映射
 在 nas 上配置 ngrok 的 80 端口映射到公网
 新建 ngrok 配置文件:
     `ngrok -config=/data/ngrok/seafiedes.cfg run --log=/data/ngrok/seafiles.log --subdomain=seafieldes`
客户端设置
 下载 ngrok 客户端(https://ngrok.com/download)
 创建 ngrok 配置文件(例如:`ngrok.cfg`)
 配置隧道端口(与服务器配置中的 `tunneladdr` 相同)
 启动 ngrok 客户端:
     `ngrok -config=ngrok.cfg start`