V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要把任何和邀请码有关的内容发到 NAS 节点。

邀请码相关的内容请使用 /go/in 节点。

如果没有发送到 /go/in,那么会被移动到 /go/pointless 同时账号会被降权。如果持续触发这样的移动,会导致账号被禁用。
DLLss
V2EX  ›  NAS

抛砖引玉!基于 ipv6 的外网访问 nas 方案分享

  •  
  •   DLLss · 2024-08-20 11:28:03 +08:00 · 3562 次点击
    这是一个创建于 378 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

    这个方案简单来说就是:用 openwrt 作为主路由,安装ddns-go caddy,实现泛域名解析和反向代理。

    优点是配置简单,自动配置泛域名证书且自动续期,适合我这样的新手。但是还有些不完善的地方,希望各位能指点下。

    由于目前 ipv6 的443端口已经被封锁,我采用12580作为 https 端口。

    科学上网与 ipv6 总是调试不好,所以我将软件安装在 openwrt 路由器中,并禁止内网 ipv6 域名解析。

    准备

    1 ,准备好一个域名(例如google.com),托管到 cloudflare ,同时获取 token 。

    2 ,在 openwrt 防火墙打开 ipv6 的12580端口。

    ddns-go

    1 ,项目地址https://github.com/jeessy2/ddns-go

    2 ,在 openwrt 中安装ddns-go插件。

    3 ,配置 ddns-go 。

    image-20240814164245759.png

    caddy

    1 ,点击这里,选择 cloudflare 插件,选择对应的架构和系统。下载 caddy 后安装到 openwrt 中/usr/bin/,配置可执行权限。

    image-20240814160529979.png

    2 ,Caddyfile配置文件。

    新建/etc/caddy/Caddyfile

    {
            http_port 18000  #这个可以随便写一个,只要不冲突就行。
            https_port 12580
            email [email protected]
    }
    
    *.google.com:12580 {
            tls {
                    dns cloudflare XXXXXXXXXXXXXXXXXXXX(token)
            }
    
            @nas host nas.google.com
    
            handle @nas {
                    reverse_proxy 192.168.1.100:5000
         	}
    
            @alist host alist.google.com
    
            handle @alist {
                    reverse_proxy 192.168.1.100:5244
            }
    		
    		#根据自己的需求,自行添加反代地址
    		
            handle {
                    respond 404
            }
    }
    

    3 ,caddy 启动文件。这个启动文件我是用 chatGPT 生成的,还有待改进。

    新建/etc/init.d/caddy,配置可执行权限。

    #!/bin/sh /etc/rc.common
    
    START=95
    STOP=10
    
    start() {
        echo "Starting Caddy..."
        /usr/bin/caddy run --config /etc/caddy/Caddyfile &
    }
    
    stop() {
        echo "Stopping Caddy..."
        killall caddy
    }
    
    restart() {
        stop
        sleep 1
        start
    }
    

    4 ,caddy 启动命令。

    /etc/init.d/caddy start
    /etc/init.d/caddy stop
    /etc/init.d/caddy restart
    

    总结

    这样就能通过nas.google.com:12580访问 nas ,通过alist.google.com:12580访问 alist 。

    但是这个方案还有些不完善的地方:

    1. caddy 启动文件不完善。即使是加入到开机启动,但是 caddy 还是不随机启动,需要手动执行启动命令。
    2. 外网访问 nas ,在 nas 中显示访问者 ip 为 openwrt 的 ip ,而不是外网 ip 。
    3. 在有些浏览器中第一次输入地址nas.google.com:12580,会报错Client sent an HTTP request to an HTTPS server.,需要手动输入https://nas.google.com:12580

    最后,感谢ddns-gocaddy项目,提供了如此好用的工具,降低了玩 nas 的门槛,再次感谢!!

    27 条回复    2024-08-22 19:03:54 +08:00
    yinh0715
        1
    yinh0715  
       2024-08-20 11:33:13 +08:00
    我用 lucky 傻瓜式操作
    coolfan
        2
    coolfan  
       2024-08-20 11:33:37 +08:00


    https://coooolfan.com/2024/08/07/Intranet-access-for-intranet-services/
    😁
    哈哈 前几天刚做完 homelab 的服务访问线路,全程 https ,内网自动走内网。
    ipv6 确实方便很多
    CodeLauncher
        3
    CodeLauncher  
       2024-08-20 11:38:00 +08:00
    华硕路由器的内建 DDNS 可以双栈解析,防火墙放行====>访问,简单点,SSL 证书也是自动续签。
    DLLss
        4
    DLLss  
    OP
       2024-08-20 11:41:42 +08:00
    @coolfan 学习下你的方案
    DLLss
        5
    DLLss  
    OP
       2024-08-20 11:42:04 +08:00
    @yinh0715 我去了解下
    pursuit9
        6
    pursuit9  
       2024-08-20 11:43:00 +08:00
    mark 一下,学习
    ounxnpz
        7
    ounxnpz  
       2024-08-20 11:52:55 +08:00
    你用 IPV6 了,路由器本身就可以直接给 Nas 分配 IPV6 地址,直接在 Nas 里配置 DDNS 就行了
    yuchenr
        8
    yuchenr  
       2024-08-20 12:09:55 +08:00
    @bluicezhen webproxy 放哪里都一样。
    我现在是 caddy 放内网的 nas 上,ddns 也在 nas 上。IPv4 在路由上配端口转发,IPv6 直接解析到 nas.
    6388xE5FRKTNUT9x
        9
    6388xE5FRKTNUT9x  
       2024-08-20 12:22:10 +08:00 via Android
    用 systemd 而不是 init.d 管理软件启动(比如 Caddy ),我没有遇到过问题
    jqtmviyu
        10
    jqtmviyu  
       2024-08-20 12:24:17 +08:00
    还能上 cloudflare worker 自定义域名和重定向到非 443 端口.

    但 v4 访问 v6 得转发服务器, cloudflare cdn 太慢了. 我直接用 tunnel 得了, 慢就慢.
    xiyuesaves
        11
    xiyuesaves  
       2024-08-20 14:01:23 +08:00
    直接找运营商要到了公网 v4 ,就是弄自更新证书的时候有点麻烦
    jalena
        12
    jalena  
       2024-08-20 14:29:40 +08:00
    这端口不错,以后我也用它了!!

    12580~~~~
    ofnh
        13
    ofnh  
       2024-08-20 14:35:10 +08:00
    @jalena 一按我帮您 手动狗头
    galikeoy
        14
    galikeoy  
       2024-08-20 17:14:56 +08:00
    @jalena #12 +1
    Earsum
        15
    Earsum  
       2024-08-20 20:37:41 +08:00
    @DLLss #5 lucky 不支持 nftables ,只能用 iptables
    Earsum
        16
    Earsum  
       2024-08-20 20:39:24 +08:00
    有条件可以用 cloudflare zerotrust ,直接暴露 http 端口被运营商发现可能会封端口或者请喝茶
    Earsum
        17
    Earsum  
       2024-08-20 20:40:33 +08:00
    @Earsum #16 嫌弃 cloudflare zerotrust 就用 vpn 回家吧,懒得搭建 openvpn 可以用 zerotier 或者 tailscale 这种免费的 vpn 软件,效果不错
    Od37v61n5s89gXx8
        18
    Od37v61n5s89gXx8  
       2024-08-20 23:51:49 +08:00 via iPhone
    为啥要这么麻烦?路由器直接放行 NAS 后缀地址的相应端口,把域名解析到 NAS 的地址上不就行了吗? NAS 自动续签 SSL 证书并自动导入到 NAS 上,这样没网访问都不用从路由器绕一圈
    wheat0r
        19
    wheat0r  
       2024-08-21 00:58:46 +08:00
    zerotier ,公网 dns 写一个虚地址的 A 记录,家里 dns 写一个局域网 A 记录
    DLLss
        20
    DLLss  
    OP
       2024-08-21 07:32:33 +08:00
    @showgood163 openwrt 能用 systemd 来管理软件启动吗?我去研究一下
    DLLss
        21
    DLLss  
    OP
       2024-08-21 07:37:05 +08:00
    @Earsum cloudflare zerotrust 应该是比较慢的吧。搭建 vpn 来回家,确实是安全些,但是有些服务还是用域名更方便。我这边是小地方,ipv6 用了几年了还没啥事的。
    Jhma
        22
    Jhma  
       2024-08-21 08:47:15 +08:00
    都 DDNS 了,买个域名设置下,然后通过各类 VPN 连回家,当然客户端也得支持 v6 ,这样在 v6 隧道中可访问家里的内网 v4 资源
    6388xE5FRKTNUT9x
        23
    6388xE5FRKTNUT9x  
       2024-08-21 09:32:46 +08:00 via Android
    @DLLss

    别,我没注意这是在 openwrt 上。

    看一眼 cron @reboot
    6388xE5FRKTNUT9x
        24
    6388xE5FRKTNUT9x  
       2024-08-21 09:39:16 +08:00 via Android
    @showgood163

    得,没说完就发出来了

    Cron @reboot 需要在编译 busybox 时加参数

    https://openwrt.org/docs/guide-user/base-system/cron?#task_specification
    Hozoy
        25
    Hozoy  
       2024-08-21 10:27:00 +08:00
    用 lucky 更傻瓜式操作,不用写一行配置项。我做的更极致一点,不想带端口号直接访问,试了一下 cloudflare 可以做到,但是国内速率太慢。通过国内服务器 frp 也可以做到,但是虽然链接速度快了,可是带宽只有 5Mbps 小水管。所以我直接上国内 cdn ,直接回源 ipv6 就可以了。带宽可以拉满家宽上行
    DLLss
        26
    DLLss  
    OP
       2024-08-21 10:46:56 +08:00
    @showgood163 我研究看看,谢谢
    4s4IYOLfT1s3InRR
        27
    4s4IYOLfT1s3InRR  
       2024-08-22 19:03:54 +08:00
    https://ifwww.com/posts/11567.html
    我这也是类似的方案,只不过是 nginx
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4833 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 01:14 · PVG 09:14 · LAX 18:14 · JFK 21:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.