进阶技巧

飞牛NAS外网访问全攻略:DDNS + 反向代理

写在前面:为什么你需要一套靠谱的外网访问方案

飞牛NAS作为一款功能强大的国产NAS系统,其内网穿透和远程访问能力一直是用户关注的焦点。虽然系统自带了一些远程访问的解决方案,但如果你追求更稳定、更高速、更可控的外网连接,那么自己动手配置 DDNS + 反向代理 几乎是必经之路。这套组合拳不仅能让你在任何地方用极简的域名访问家里的NAS,还能顺带解决HTTPS证书、端口转发、多服务统一入口等一堆痛点。

本教程将手把手带你从零开始,在飞牛NAS上搭建一套完整的外网访问体系。全程基于命令行操作,步骤清晰,你可以直接复制命令执行。

第一步:准备工作与网络环境确认

在动手之前,请确认你具备以下条件:

  1. 你的宽带具备公网IP(无论是动态还是静态)。如果不确定,可以登录路由器查看WAN口IP,然后与百度搜索“IP”显示的地址对比,一致则为公网IP。如果是大内网,请先致电运营商申请公网IP。
  2. 拥有一台可以解析的域名(例如在阿里云、腾讯云或Cloudflare购买)。
  3. 飞牛NAS已开启SSH服务(在系统设置 -> 终端中启用)。

请确保你的NAS通过网线连接路由器,且路由器支持端口转发(几乎所有家用路由器都支持)。

第二步:DDNS动态域名解析

由于大多数家用宽带的公网IP是动态变化的,我们需要一个DDNS服务来将你的域名实时解析到当前IP上。

方案A:使用飞牛NAS内置DDNS(简单模式)

飞牛NAS系统设置中自带DDNS功能,支持多家服务商。操作路径:控制面板 -> 网络 -> DDNS。选择你的服务商(如阿里云),填入AccessKey ID和Secret,选择域名,保存即可。系统会自动更新IP。

方案B:使用Docker运行DDNS-GO(进阶推荐)

内置DDNS虽然方便,但更新频率和自定义能力有限。推荐使用ddns-go这款神器,它支持几乎所有主流DNS服务商,且更新速度极快。

在飞牛NAS的Docker中搜索jeessy/ddns-go,创建容器。需要映射两个端口:9876(Web管理界面)和9877(HTTP服务,可选)。建议将9876映射为18888避免冲突。创建完成后,通过http://NAS_IP:18888访问管理界面。

在管理界面中,选择你的DNS服务商(以阿里云为例),填入AccessKey ID和Secret,选择域名,IPv4和IPv6都勾选。保存后,DDNS-GO会自动获取你当前的公网IP并解析到域名上。

验证是否生效:在NAS上执行nslookup yourdomain.com,看到返回的IP与当前公网IP一致即可。

第三步:路由器端口转发

现在需要将路由器的特定端口转发到NAS的对应端口上。登录你的路由器管理界面,找到“端口转发”或“虚拟服务器”功能。

我们需要转发以下端口(以默认情况为例):

  • 80端口(HTTP)转发到NAS的80端口。
  • 443端口(HTTPS)转发到NAS的443端口。
  • 飞牛NAS的Web管理端口(默认为5666)转发到NAS的5666。

之所以转发80和443,是为了后面配置反向代理和HTTPS做准备。如果你不想暴露管理端口,可以只转发80和443。

注意:如果你的运营商封禁了80/443端口(部分宽带限制),你需要使用其他端口(如8080和8443),但那样访问时域名后需要带端口号,体验会差一些。本教程假设80/443可用。

第四步:安装与配置Nginx反向代理

飞牛NAS自带Nginx,但为了更灵活的控制,我们使用Docker部署一个独立的Nginx容器来作为反向代理层。

在飞牛NAS的Docker中,创建一个nginx容器。关键配置如下:

  • 端口映射:将宿主机的80端口映射到容器的80端口,宿主机的443映射到容器的443
  • 卷映射:将NAS上的/vol1/docker/nginx/conf.d目录挂载到容器的/etc/nginx/conf.d,将/vol1/docker/nginx/ssl挂载到/etc/nginx/ssl(用于存放证书)。
  • 环境变量:设置TZ=Asia/Shanghai

容器启动后,我们开始编写反向代理配置文件。通过SSH连接NAS,执行以下命令创建配置文件:

cd /vol1/docker/nginx/conf.d
nano default.conf

写入以下基础配置(以将nas.yourdomain.com反向代理到飞牛NAS的Web管理界面为例):

server {
    listen 80;
    server_name nas.yourdomain.com;

    location / {
        proxy_pass http://192.168.1.100:5666;  # 替换为你的NAS内网IP和飞牛管理端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

如果你还想代理其他服务(比如Jellyfin、qBittorrent等),只需在同一个conf.d目录下新增一个.conf文件,将server_name改成对应子域名,proxy_pass改成对应服务的内网地址和端口即可。

保存后,重启Nginx容器:

docker restart nginx

现在,通过http://nas.yourdomain.com应该就能访问到你的飞牛NAS了。

第五步:配置HTTPS证书(Let's Encrypt)

HTTP明文传输存在安全隐患,强烈建议配置HTTPS。我们使用acme.sh来免费申请Let's Encrypt证书。

在NAS上执行:

curl https://get.acme.sh | sh

然后设置默认CA为Let's Encrypt并申请证书:

~/.acme.sh/acme.sh --set-default-ca --server letsencrypt
~/.acme.sh/acme.sh --issue -d nas.yourdomain.com --nginx

如果你的80端口已经被Nginx占用,--nginx模式会自动验证。申请成功后,安装证书到Nginx的ssl目录:

~/.acme.sh/acme.sh --install-cert -d nas.yourdomain.com \
--key-file /vol1/docker/nginx/ssl/nas.key \
--fullchain-file /vol1/docker/nginx/ssl/nas.crt \
--reloadcmd "docker restart nginx"

然后修改default.conf,增加443 server块:

server {
    listen 443 ssl;
    server_name nas.yourdomain.com;

    ssl_certificate /etc/nginx/ssl/nas.crt;
    ssl_certificate_key /etc/nginx/ssl/nas.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_pass http://192.168.1.100:5666;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

同时,在80端口的server块中,添加永久重定向到HTTPS:

return 301 https://$server_name$request_uri;

重启Nginx容器,访问https://nas.yourdomain.com,浏览器应显示安全锁标志。

第六步:常见问题与优化技巧

1. 端口被封怎么办?

如果80/443被运营商封禁,可以将Nginx容器的端口映射改为8080:808443:443,然后在路由器上转发80808443。访问时使用https://nas.yourdomain.com:8443

2. 多域名多服务

conf.d目录下为每个服务创建独立的配置文件,互不干扰。例如:

# jellyfin.conf
server {
    listen 443 ssl;
    server_name media.yourdomain.com;
    # ... 证书配置同上
    location / {
        proxy_pass http://192.168.1.100:8096;
        # 其他代理头设置
    }
}

3. 动态IP变化后自动更新

DDNS-GO会自动检测IP变化并更新。但Nginx不需要重启,因为反向代理是通过域名解析的,DDNS更新后,新的连接会自动指向新IP。

4. 安全加固

建议在路由器上关闭不必要的端口暴露,只保留80/443。同时,为飞牛NAS的管理界面设置强密码,并开启两步验证。

总结

通过以上六步,你已经在飞牛NAS上成功部署了一套完整的 DDNS + 反向代理 外网访问方案。现在,你不仅可以用自己的域名随时随地访问NAS,还免费获得了HTTPS加密保护。这套架构的可扩展性极强,后续添加任何新服务,只需新增一个Nginx配置文件和对应的子域名解析即可,无需再担心端口混乱和IP变动的问题。享受你的私有云之旅吧!

💬 评论区
发表评论

暂无评论,来说两句吧