这个方案简单来说就是:用 openwrt 作为主路由,安装ddns-go
和 caddy
,实现泛域名解析和反向代理。
优点是配置简单,自动配置泛域名证书且自动续期,适合我这样的新手。但是还有些不完善的地方,希望各位能指点下。
由于目前 ipv6 的443
端口已经被封锁,我采用12580
作为 https 端口。
科学上网与 ipv6 总是调试不好,所以我将软件安装在 openwrt 路由器中,并禁止内网 ipv6 域名解析。
1 ,准备好一个域名(例如google.com
),托管到 cloudflare ,同时获取 token 。
2 ,在 openwrt 防火墙打开 ipv6 的12580
端口。
1 ,项目地址https://github.com/jeessy2/ddns-go
2 ,在 openwrt 中安装ddns-go
插件。
3 ,配置 ddns-go 。
1 ,点击这里,选择 cloudflare 插件,选择对应的架构和系统。下载 caddy 后安装到 openwrt 中/usr/bin/
,配置可执行权限。
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 。
但是这个方案还有些不完善的地方:
nas.google.com:12580
,会报错Client sent an HTTP request to an HTTPS server.
,需要手动输入https://nas.google.com:12580
。最后,感谢ddns-go
和caddy
项目,提供了如此好用的工具,降低了玩 nas 的门槛,再次感谢!!
1
yinh0715 72 天前
我用 lucky 傻瓜式操作
|
2
coolfan 72 天前
https://coooolfan.com/2024/08/07/Intranet-access-for-intranet-services/ 😁 哈哈 前几天刚做完 homelab 的服务访问线路,全程 https ,内网自动走内网。 ipv6 确实方便很多 |
3
CodeLauncher 72 天前
华硕路由器的内建 DDNS 可以双栈解析,防火墙放行====>访问,简单点,SSL 证书也是自动续签。
|
6
pursuit9 72 天前
mark 一下,学习
|
7
ounxnpz 72 天前
你用 IPV6 了,路由器本身就可以直接给 Nas 分配 IPV6 地址,直接在 Nas 里配置 DDNS 就行了
|
8
yuchenr 72 天前
@bluicezhen webproxy 放哪里都一样。
我现在是 caddy 放内网的 nas 上,ddns 也在 nas 上。IPv4 在路由上配端口转发,IPv6 直接解析到 nas. |
9
showgood163 72 天前 via Android
用 systemd 而不是 init.d 管理软件启动(比如 Caddy ),我没有遇到过问题
|
10
jqtmviyu 72 天前
还能上 cloudflare worker 自定义域名和重定向到非 443 端口.
但 v4 访问 v6 得转发服务器, cloudflare cdn 太慢了. 我直接用 tunnel 得了, 慢就慢. |
11
xiyuesaves 72 天前
直接找运营商要到了公网 v4 ,就是弄自更新证书的时候有点麻烦
|
12
jalena 72 天前
这端口不错,以后我也用它了!!
12580~~~~ |
16
Earsum 72 天前
有条件可以用 cloudflare zerotrust ,直接暴露 http 端口被运营商发现可能会封端口或者请喝茶
|
17
Earsum 72 天前
@Earsum #16 嫌弃 cloudflare zerotrust 就用 vpn 回家吧,懒得搭建 openvpn 可以用 zerotier 或者 tailscale 这种免费的 vpn 软件,效果不错
|
18
lxh1983 72 天前 via iPhone
为啥要这么麻烦?路由器直接放行 NAS 后缀地址的相应端口,把域名解析到 NAS 的地址上不就行了吗? NAS 自动续签 SSL 证书并自动导入到 NAS 上,这样没网访问都不用从路由器绕一圈
|
19
wheat0r 72 天前
zerotier ,公网 dns 写一个虚地址的 A 记录,家里 dns 写一个局域网 A 记录
|
20
DLLss OP @showgood163 openwrt 能用 systemd 来管理软件启动吗?我去研究一下
|
21
DLLss OP @Earsum cloudflare zerotrust 应该是比较慢的吧。搭建 vpn 来回家,确实是安全些,但是有些服务还是用域名更方便。我这边是小地方,ipv6 用了几年了还没啥事的。
|
22
Jhma 72 天前
都 DDNS 了,买个域名设置下,然后通过各类 VPN 连回家,当然客户端也得支持 v6 ,这样在 v6 隧道中可访问家里的内网 v4 资源
|
23
showgood163 72 天前 via Android
|
24
showgood163 71 天前 via Android
@showgood163
得,没说完就发出来了 Cron @reboot 需要在编译 busybox 时加参数 https://openwrt.org/docs/guide-user/base-system/cron?#task_specification |
25
Hozoy 71 天前
用 lucky 更傻瓜式操作,不用写一行配置项。我做的更极致一点,不想带端口号直接访问,试了一下 cloudflare 可以做到,但是国内速率太慢。通过国内服务器 frp 也可以做到,但是虽然链接速度快了,可是带宽只有 5Mbps 小水管。所以我直接上国内 cdn ,直接回源 ipv6 就可以了。带宽可以拉满家宽上行
|
26
DLLss OP @showgood163 我研究看看,谢谢
|
27
4s4IYOLfT1s3InRR 70 天前
https://ifwww.com/posts/11567.html
我这也是类似的方案,只不过是 nginx |