前言
Cloudflare作为国际知名CDN大厂,堪称业界良心。集成了域名解析,防火墙等功能。这次我们使用Cloudflare提供的api,对家宽动态ip进行ddns解析,保证我们能每次访问到正确的ip。特别是在2022年基本上运行商只提供公网ipv6。众所周知,ipv6地址不同于ipv4,手动输入替换几乎是不可能的事情,所以我们需要用域名访问我们搭建的服务。本教程主要讲解OpenWrt配置Ipv6以及通过公网ipv6访问OpenWrt-Webui,其他服务类似,可以参考进行ddns即可。如果你有ipv4公网,同样照葫芦画瓢即可。
准备工作
- ipv6公网地址
- openwrt
- cloudflare账户
- 域名一枚
路由器和光猫开启ipv6地址访问
大部分光猫支持并已经开启了ipv6,如果光猫未开启ipv6,下面操作都无效。光猫开启ipv6可能需要使用超级管理员,可能您需要致电对应运营商获取方法。我这边用的是电信的2014年的光猫,同样支持ipv4&ipv6。
大部分路由器不支持ipv6,2022年后新出的路由器大概率支持ipv6,具体是否支持请自行检查。部分路由器需要手动开启ipv6支持,请自行解决。
另外多说一下:有条件建议使用光猫桥接模式,具体请谷歌搜索相关教程
OpenWrt开启ipv6地址支持
参考
在进行这一步请先确定路由器已经开启ipv6并且有ipv6地址,可以将路由器,openwrt以及电脑连接在同一局域网下,在电脑上通过test-ipv6检测。出现如下图即表示路由器已经接入并分配了ipv6地址。
教程使用的OpenWrt R22.6.16 (2022-06-16 10:31:02 by flippy) 固件,并且作为旁路由,参考论坛上的方法进行设置
添加ipv6新接口
添加新接口(名称:lan6,协议:DHCPv6客户端,自定义接口:@lan,不要误写成@lan6)
设置lan6口防火墙
将lan6接口的防火墙设置选为lan
开启IPv6 DNS解析
部分老固件默认关闭ipv6 dns解析,需要手动取消
清空IPv6 ULA前缀
保存后重启
重启后查看接口,如果上面已经接入ipv6,此时应该能查看到OpenWrt已经获取到公网ipv6地址(请勿泄露)
配置Cloudflare-Ipv6-DDNS
编译安装cloudflare-ddns软件包
教程固件版本,f大的OpenWrt R22.6.16 (2022-06-16 10:31:02 by flippy) 固件,已经编译了ddns-scripts_cloudflare.com-v4,如果使用的是未编译的旧固件,可以通过命令行安装
opkg update && opkg install ddns-scripts_cloudflare.com-v4
配置Cloudflare-DDNS-API
首先添加域名(不赘述),添加AAAA解析,注意,取消后面的云朵
申请API,为了安全考虑,点击这里创建一个API Token ,权限为Zone(区域)-DNS-Edit(编辑)保存即可。
OpenWrt-Webui配置动态dns
DDNS服务提供商选择cloudflare.com-v4
;查询主机名填写刚刚解析AAAA的域名,例如:ddns.baidu.com
;域名填写刚刚解析的AAAA域名,注意:二级域名要使用@来分隔,例如,[email protected]
;用户名填写Bearer
;密码填写刚刚申请获得的API,保存
在高级设置中修改网络IPV6
注意:部分用户如上图设置可能无效,或者经常不能及时更新,可以使用URL方式获取正确IP用于检测的URL:http://ipv6.ip.sb
点击启用,保存&应用,保存后点击启动进程,查看到如下的进程号表明启动成功
等待几秒后刷新Cloudflare的DNS管理页面,可以看到IP变更了。此时:等几分钟后,直接浏览器输入AAAA解析的域名,默认80端口即可打开OpenWrt-Webui。
Tip:默认10分钟更新一次ddns,可以自己在高级设置中修改
拓展:使用cdn开启https访问(同样适用于其他服务)
OpenWrt-Webui默认是http页面,我们可以通过cloudflare-cdn开启https访问,由于需要接入cdn,所以这里采用最简单的方法:使用cloudflare提供的证书,直接接入cdn,可以免去复杂的OpenSSL配置和申请证书
申请cloudflare对应域名的ssl证书
注意:这个证书只能在使用cloudflare-cdn时才有效,如果不接入cdn,无法使用
配置OpenWrt-Webui的uhttp配置文件
#修改uhttp配置文件
root@OpenWrt:~# vim /etc/config/uhttpd
config uhttpd 'main'
#....
option redirect_https '1' # --> 访问 http 时跳转到 https
#....
option cert '/etc/uhttpd.crt' # --> 刚刚申请的ssl证书,请先删除此文件,再用vim创建后写入
option key '/etc/uhttpd.key' # --> 刚刚申请的ssl密钥,请先删除此文件,再用vim创建后写入
#重启uhttpd
/etc/init.d/uhttpd restart
完成后找到刚刚解析的AAAA域名处,点亮后面的云朵
此时直接浏览器输入刚刚解析的AAAA域名,此时可以看到https已经配置完毕并启用
拓展:关闭OpenWrt-Webui访问(由于暴露在公网安全考虑)
为了更安全, 您可以完全禁用LuCI web服务,并在需要时通过SSH启动服务。
/etc/init.d/uhttpd disable
/etc/init.d/uhttpd stop
如果你需要访问LuCI,只需启动uhttpd服务
/etc/init.d/uhttpd start
使用LuCI完成操作后,请不要忘记停止uhttpd服务
/etc/init.d/uhttpd stop
使用此设置,只要SSH设置是安全的(禁用密码并仅使用公钥身份验证),就可以最大限度地降低LuCI webserver被暴力强制的风险,并防止未经授权访问LuCI-web界面
参考文章
【终极教程】N1做旁路由,IPv6设置教程,超详细
OpenWrt 配置 Cloudflare DDNS
基于Cloudflare的IPv6动态域名解析DDNS
安全地访问LuCI Web界面