方法

安装dnsmasq-full

进入系统->软件包

安装dnsmasq-full,勾选允许覆盖冲突的包文件

进入系统->启动项,重启dnsmasq

查看dns ttl

进入网络->DHCP/DNS->限制

最大缓存 TTL的值,下文使用{ttl}代指,默认应为3600

配置防火墙ip集

进入网络->防火墙->ip集

配置ipv6

点击添加

名称任意(不能与已有规则重复),下文使用{ipset}6代指,例如yuanshen6

数据包字段匹配选择dest_ip

族选择ipv6

超时填写{ttl},例如3600

点击保存

配置ipv4

点击添加

名称任意(不能与已有规则重复),下文使用{ipset}4代指,例如yuanshen4

数据包字段匹配选择dest_ip

族选择ipv4

超时填写{ttl},例如3600

点击保存

配置防火墙通信规则

进入网络->防火墙->通信规则

配置ipv6

点击添加

名称任意(不能与已有规则重复)

源区域选择

  • 设备(输出) 当你的局域网设备正在使用路由器上的代理进行通信时
  • lan 当你的局域网在lan区域时

目标区域选择wan

操作选择

  • 拒绝 会响应拒绝信息
  • 丢弃 会直接丢弃包

点击高级设置

地址族限制选择仅ipv6

使用ip集选择{ipset}6,例如yuanshen6

配置ipv4

点击添加

名称任意(不能与已有规则重复)

源区域选择

  • 设备(输出) 当你的局域网设备正在使用路由器上的代理进行通信时
  • lan 当你的局域网在lan区域时

目标区域选择wan

操作选择

  • 拒绝 会响应拒绝信息
  • 丢弃 会直接丢弃包

点击高级设置

地址族限制选择仅ipv4

使用ip集选择{ipset}4,例如yuanshen4

配置dns

进入网络->DHCP/DNS->ip集

点击添加

集合名输入{ipset}4,例如yuanshen4{ipset}6,例如yuanshen6

FQDN输入若干全限定域名,下文使用{hosts}代指

表格ip族保持默认IPv4+6

点击保存

测试

在测试机访问{hosts}

进入系统->管理权->SSH访问

添加lan区域

ssh登陆openwrt

执行命令nft list set inet fw4 {ipset}4,例如nft list set inet fw4 yuanshen4

正常应该可以看到返回

table inet fw4 {
        set yuanshen4 {
                type ipv4_addr
                timeout 1h
                elements = { 120.xxx.xxx.231 expires 52m53s900ms }
        }
}

执行命令nft list set inet fw4 {ipset}6同理,例如nft list set inet fw4 yuanshen6