欢迎光临
我们一直在努力

AdGuardHome IPv4/IPv6双栈配置:全面网络支持

AdGuardHome IPv4/IPv6双栈配置:全面网络支持

【免费下载链接】AdGuardHome Network-wide ads & trackers blocking DNS server 【免费下载链接】AdGuardHome 项目地址: https://gitcode.com/gh_mirrors/ad/AdGuardHome

随着IPv6网络的普及,家庭网络中同时支持IPv4和IPv6已成为刚需。你是否遇到过部分设备只能通过IPv4联网,而新设备却默认使用IPv6导致广告过滤失效的问题?本文将详细介绍如何在AdGuardHome中配置IPv4/IPv6双栈支持,一次设置即可保护所有网络设备,无论其使用何种IP协议。

读完本文后,你将能够:

  • 理解AdGuardHome的双栈网络架构
  • 正确配置IPv4和IPv6的DHCP服务
  • 设置双协议下的DNS过滤规则
  • 验证和排查双栈网络问题

双栈网络架构概述

AdGuardHome作为网络级广告过滤DNS服务器,其双栈架构设计允许同时处理IPv4和IPv6协议的请求。这种设计确保了即使在混合网络环境中,所有设备都能获得一致的广告过滤体验。

AdGuardHome的双栈实现主要依赖于内部的DHCP服务器模块,该模块同时支持DHCPv4和DHCPv6协议。核心实现代码位于internal/dhcpd/dhcpd.go,其中定义了同时处理两个协议的服务器接口:

// Interface is the DHCP server that deals with both IP address families.
type Interface interface {
Start(ctx context.Context) (err error)
Stop() (err error)
Enabled() (ok bool)
Leases() (leases []*dhcpsvc.Lease)
MACByIP(ip netip.Addr) (mac net.HardwareAddr)
HostByIP(ip netip.Addr) (host string)
IPByHost(host string) (ip netip.Addr)
WriteDiskConfig(c *ServerConfig)
}

双栈工作流程

AdGuardHome的双栈处理流程如下:

  • 设备通过DHCPv4或DHCPv6协议从AdGuardHome获取IP地址
  • 设备将DNS请求发送到AdGuardHome
  • AdGuardHome根据请求的IP协议版本进行相应处理
  • 过滤后的结果通过原协议版本返回给设备
  • AdGuardHome架构

    配置前的准备工作

    在开始配置双栈支持前,请确保你的AdGuardHome已正确安装并运行。推荐使用官方提供的自动化安装脚本:

    curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s — -v

    如果你倾向于手动安装,可以参考README.md中的"Manual installation"部分进行操作。

    环境要求

    • AdGuardHome v0.107.0或更高版本
    • 支持IPv6的网络环境
    • 具有管理员权限的设备

    IPv4配置详解

    AdGuardHome默认启用IPv4支持,但需要正确配置以确保最佳性能。

    DHCPv4设置

  • 登录AdGuardHome管理界面
  • 导航到"设置" > "DHCP服务器"
  • 在IPv4部分,启用DHCP服务器
  • 配置IP地址范围(如192.168.1.100-192.168.1.200)
  • 设置子网掩码、网关和DNS服务器地址
  • 配置租约时间(推荐24小时)
  • 核心配置参数在internal/dhcpd/dhcpd.go中定义,包括默认租约时间:

    // DefaultDHCPLeaseTTL is the default time-to-live for leases.
    DefaultDHCPLeaseTTL = uint32(timeutil.Day / time.Second)

    静态IP分配

    对于需要固定IP的设备,可以配置静态IP分配:

  • 在DHCP设置页面滚动到"静态租约"部分
  • 点击"添加静态租约"
  • 输入设备MAC地址、期望的IP地址和主机名
  • 点击"保存"
  • IPv6配置详解

    IPv6配置与IPv4类似,但有一些关键差异需要注意。

    DHCPv6设置

  • 在同一DHCP服务器页面,找到IPv6部分
  • 启用DHCPv6服务器
  • 选择适当的操作模式(推荐"无状态+有状态")
  • 配置IP地址范围(通常以前缀形式表示,如2001:db8::/64)
  • 设置DNS服务器地址(通常是AdGuardHome自身的IPv6地址)
  • 配置租约时间
  • AdGuardHome的DHCPv6实现支持多种操作模式,以适应不同的网络环境需求。相关实现代码可在internal/dhcpd/dhcpd.go中找到,特别是服务器初始化部分:

    v6conf := conf.Conf6
    v6conf.Logger = s.conf.Logger.With("ip_version", "6")
    v6conf.InterfaceName = s.conf.InterfaceName
    v6conf.notify = s.onNotify
    v6conf.Enabled = s.conf.Enabled && len(v6conf.RangeStart) != 0

    s.srv6, err = v6Create(v6conf)

    IPv6防火墙注意事项

    配置IPv6时,需要确保防火墙允许以下流量:

    • UDP端口546(客户端)和547(服务器)的DHCPv6流量
    • TCP和UDP端口53的DNS流量
    • ICMPv6流量(邻居发现等关键网络功能需要)

    双栈DNS配置

    正确配置DNS服务器是确保双栈环境下广告过滤正常工作的关键。

    上游DNS服务器设置

  • 导航到"设置" > "DNS设置"
  • 在"上游DNS服务器"部分,添加同时支持IPv4和IPv6的DNS服务器
  • 推荐配置:
    • 208.67.222.222 (OpenDNS IPv4)
    • 208.67.220.220 (OpenDNS IPv4)
    • 2620:0:ccc::2 (OpenDNS IPv6)
    • 2620:0:ccd::2 (OpenDNS IPv6)
  • 访问控制设置

    为确保只有授权设备可以使用你的DNS服务器:

  • 在"DNS设置"页面找到"访问设置"部分
  • 选择"允许指定IP地址"
  • 添加你的IPv4子网(如192.168.1.0/24)
  • 添加你的IPv6子网(如2001:db8::/64)
  • 验证与故障排除

    配置完成后,需要验证双栈是否正常工作。

    验证方法

  • 检查设备获取的IP地址:

    • IPv4设备应获取配置范围内的地址
    • IPv6设备应获取以配置前缀开头的地址
  • 在AdGuardHome管理界面的"客户端"页面,确认所有设备都显示正确的IP版本信息

  • 查看查询日志,确认同时存在IPv4和IPv6的DNS查询:

    • 导航到"查询日志"页面
    • 检查"客户端IP"列,确认同时有IPv4和IPv6地址出现
  • 常见问题解决

    IPv6设备无法获取地址

    检查以下可能原因:

    • 路由器是否启用了IPv6转发
    • IPv6前缀是否正确配置
    • 防火墙是否阻止了DHCPv6流量

    相关代码实现可参考internal/dhcpd/dhcpd.go中的服务器启动部分:

    // Start will listen on port 67 and serve DHCP requests.
    func (s *server) Start(ctx context.Context) (err error) {
    err = s.srv4.Start(ctx)
    if err != nil {
    return err
    }

    err = s.srv6.Start(ctx)
    if err != nil {
    return err
    }

    return nil
    }

    部分网站在IPv6下无法访问

    这通常是由于IPv6路由或DNS配置问题:

  • 确认AdGuardHome的IPv6地址可以被设备访问
  • 检查上游DNS服务器是否正常响应IPv6查询
  • 尝试在"DNS设置"中禁用"使用IPv6上游服务器"选项
  • 高级配置选项

    对于有特殊需求的用户,AdGuardHome提供了更多高级配置选项。

    自定义过滤规则

  • 导航到"过滤器" > "自定义过滤规则"
  • 添加针对特定IP协议的规则,例如:
    • ||example.com^$ipv4 仅阻止IPv4上的example.com
    • ||example.com^$ipv6 仅阻止IPv6上的example.com
  • 配置文件修改

    对于高级用户,可以直接编辑AdGuardHome的配置文件(通常位于/etc/AdGuardHome/AdGuardHome.yaml)来进行更精细的控制。

    双栈相关的配置部分通常包括:

    dhcp:
    enabled: true
    interface_name: eth0
    dhcpv4:
    range_start: 192.168.1.100
    range_end: 192.168.1.200
    subnet_mask: 255.255.255.0
    gateway_ip: 192.168.1.1
    lease_duration: 86400
    dhcpv6:
    range_start: 2001:db8::100
    range_end: 2001:db8::200
    lease_duration: 86400
    ra_slaac_only: false

    性能优化建议

    在双栈环境中,适当的优化可以提高AdGuardHome的性能。

    内存使用优化

  • 减少不必要的过滤规则列表
  • 定期清理旧的DHCP租约
  • 限制查询日志的保留时间
  • 网络性能优化

  • 为IPv4和IPv6配置不同的上游DNS服务器
  • 启用DNS缓存(默认启用)
  • 配置适当的缓存大小(在"DNS设置"中调整)
  • AdGuardHome的缓存实现位于internal/dnsforward/upstreams.go,通过合理配置可以显著提高响应速度。

    总结与展望

    配置AdGuardHome的IPv4/IPv6双栈支持不仅能确保所有设备都受到广告过滤保护,还为未来完全过渡到IPv6做好了准备。随着物联网设备的普及,家庭网络中的IPv6设备将越来越多,提前配置双栈支持可以避免将来的兼容性问题。

    本文介绍的配置方法适用于大多数家庭网络环境,但每个网络都有其特殊性。如果遇到问题,建议查阅官方文档README.md或在AdGuard社区寻求帮助。

    未来,AdGuardHome将继续增强双栈支持,包括更精细的每协议过滤规则和更完善的IPv6统计功能。保持AdGuardHome更新到最新版本,可以享受这些新功能和改进。

    相关资源

    • AdGuardHome官方文档
    • DHCP服务器实现代码
    • DNS转发器实现
    • 网络过滤核心代码

    【免费下载链接】AdGuardHome Network-wide ads & trackers blocking DNS server 【免费下载链接】AdGuardHome 项目地址: https://gitcode.com/gh_mirrors/ad/AdGuardHome

    创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

    赞(0)
    未经允许不得转载:171主机测评 » AdGuardHome IPv4/IPv6双栈配置:全面网络支持
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址