V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
OpenWrt 是一个专门面向嵌入式设备的 Linux 发行版。你可以将 OpenWrt 支持的型号的嵌入式设备,比如各种路由器上的系统,换成一个有更多可能性可以折腾的 Linux 系统。
OpenWrt 官方网站
xausky
V2EX  ›  OpenWrt

家庭网络旁路由配置:光猫拨号 + OpenWrt(IPv4/IPv6)

  •  
  •   xausky · 4 天前 · 871 次点击

    目的

    通过配置光猫的拨号功能和 OpenWrt 旁路由,我们期望实现以下目标:

    1. 自动设置 OpenWrt 为网关:所有接入网络的设备无论是 IPv4 还是 IPv6 ,都自动将 OpenWrt 设置为网关。
    2. 网络优化功能生效:OpenWrt 上部署的各种网络优化功能,比如 Adblock 、QoS 等,在所有流量中有效。
    3. 支持独立公网 IPv6 地址:在宽带提供 IPv6 支持时,终端设备能够分配独立的 IPv6 公网地址。

    IPv4 配置步骤

    以下配置截图说明基于我设备信息如下

    光猫 ipv4 局域网地址为 192.168.31.1 ipv6 本地链路地址为 fe80::1

    Openwrt ipv4 局域网地址为 192.168.31.2 ipv6 本地链路地址为 fe80::8e53:c3ff:fedc:560e

    IPv4 的配置相对简单,因为其地址分配方式只有一种:DHCP 。

    1. 关闭光猫 DHCP 服务

      • 登录光猫的超级管理后台(不同品牌的光猫后台操作略有不同,参考设备手册或相关教程)。
      • 关闭光猫上的 DHCP 服务器。
    2. 配置 OpenWrt 接口

      • 在 OpenWrt 后台,新建接口LAN并设置为静态地址,例如:
        • IP 地址:192.168.31.2
        • 子网掩码:255.255.255.0
        • 网关地址:192.168.31.1
      • 开启 OpenWrt 的 DHCP 服务。
      • 默认情况下,OpenWrt 会分配 IP 地址并将自己设置为网关( Gateway )和 DNS 服务器。

    IPv4 完成后启用效果

    • 所有通过 IPv4 接入网络的设备将自动获取由 OpenWrt 分配的 IP 地址,同时将其设置为默认网关和 DNS 。

    IPv6 配置步骤

    相比 IPv4 ,IPv6 的配置更加复杂,因为 IPv6 有两种地址分配和管理方式:

    • DHCPv6(动态主机配置协议,分配 IPv6 地址)。
    • RA(路由通告,设置默认网关)。

    IPv6 默认行为的问题

    1. 默认情况下,光猫会同时启用DHCPv6RA服务。
      • 如果我们模仿 IPv4 的做法,将 DHCPv6 服务从光猫移到 OpenWrt ,会发现设备仍然会从光猫获取默认 IPv6 路由,这将导致设备的 IPv6 流量绕过 OpenWrt 。
    2. 如果将DHCPv6RA全部迁移到 OpenWrt:
      • 设备无法获取公网 IPv6 地址,因为公网前缀在光猫端,OpenWrt 只能分配局域网范围内的 IPv6 地址。

    IPv6 解决方案

    经过权衡,选择如下策略:

    • 光猫负责 DHCPv6:用于分配公网 IPv6 地址。
    • OpenWrt 负责 RA 服务:用于配置 IPv6 网关。

    配置步骤

    1. 配置光猫

    • 关闭 RA 服务:登录光猫超级管理后台,找到 IPv6 设置,关闭 RA 服务器。
    • 开启 DHCPv6:确保 DHCPv6 服务启用,用于向设备分配公网 IPv6 地址。

    2. 配置 OpenWrt

    2.1 为lan6接口配置 DHCPv6 客户端
    • 新建接口lan6
      • 协议:DHCPv6 客户端
      • 请求 IPv6 地址强制
      • 请求 IPv6 前缀长度禁用(另一种方法是获取前缀再由 OpenWrt 分配设备,但实践中不稳定,因此禁用)。
      • 使用默认网关:勾选。
    2.2 配置lan接口的 RA 和 DHCPv6 中继
    • lan接口设置,在“DHCP 服务器”中配置:
      • RA 服务:设置为服务器模式
      • DHCPv6:设置为中继( Relay )
    • 在“IPv6 RA 设置”中:
      • 默认路由器( Default Router ):强制其他默认
      • RA 标记:受管配置(M), 这样设备会尝试使用 DHCPv6 获取 IP 地址,但是其他配置使用 RA 的。

    配置截图参考

    以下是相关配置的截图:

    光猫 RA 配置

    光猫 RA 配置

    光猫 DHCPv6 配置

    光猫 DHCPv6 配置

    OpenWrt lan6接口设置

    lan6 接口配置

    OpenWrt lan接口 RA 服务设置

    lan 接口 RA 服务设置 1 lan 接口 RA 服务设置 2


    验证配置效果

    检查设备获取的 IPv6 地址和路由

    通过配置,可以得到以下结果:

    1. 客户端设备通过 DHCPv6 从光猫获取独立的公网 IPv6 。
    2. 客户端设备通过 RA 服务将 OpenWrt 设置为默认网关。
    3. 全部 IPv6 流量经过 OpenWrt ,完成网络优化和其他功能的部署。

    以下是示例验证截图:

    客户端 IPv6 地址和路由

    Windows

    Windows 效果

    Linux

    Linux 效果


    总结

    通过上述步骤,我们成功实现了光猫拨号+OpenWrt 旁路由的家庭网络配置目标:

    1. IPv4 流量:通过关闭光猫 DHCP 和启用 OpenWrt DHCP ,所有 IPv4 流量通过 OpenWrt 网关。
    2. IPv6 流量:通过光猫分配公网 IPv6 地址、OpenWrt 负责 RA 服务,确保设备流量集中通过 OpenWrt 网关。

    这一配置方案在家庭环境中可实现高效的网络控制以及完整的 IPv6 支持。

    上述方案是我踩坑很久一点点摸索出来的,如有问题希望各位指正。 当然用 Openwrt 当主路由拨号方便拉,但是现在的光猫性能也不算太差,只做猫有点浪费。

    7 条回复    2025-02-16 23:24:42 +08:00
    ruxuan1306
        1
    ruxuan1306  
       4 天前
    学习了,才意识到 IPv6 的默认网关只能从 RA 下发,不像 IPv4 是 DHCP 下发
    povsister
        2
    povsister  
       4 天前 via iPhone
    大佬开始玩旁漏油了,期待更牛逼的方案
    wske
        3
    wske  
       4 天前
    xausky
        4
    xausky  
    OP
       4 天前
    @wske 结尾也说了主路由当然更好了,但是我这弱电箱塞不下另一个路由器了,还有网线等原因,只能旁路由了,这篇文章不提供旁路由方案的。我就是这文章里面说的:`强烈建议使用主路由环境,抛弃旁路由。旁路由出问题自己想办法,谁教你用旁路由的你去找谁,不要提问。`
    WhatTheBridgeSay
        5
    WhatTheBridgeSay  
       4 天前
    很好的方案,之前网关与 NAT 设备不一致时,4 跟 6 的路由很难走到一起去,楼主这也不失为一个解决方案
    core12
        6
    core12  
       4 天前
    ipv6 的透明网关可以提高 ra 的优先级来实现,openwrt 或者随便一台 linux 服务器都行,不要下发 ipv6dns 就行。
    y1y1
        7
    y1y1  
       4 天前
    @povsister 嘲讽拉满
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1050 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 19:11 · PVG 03:11 · LAX 11:11 · JFK 14:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.