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

1次阅读

共计 1442 个字符,预计需要花费 4 分钟才能阅读完成。

前言

这个方案简单来说就是:用 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。

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

caddy

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

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

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 的门槛,再次感谢!!

正文完
 0