桥接模式下让 openwrt 可以访问光猫和互联网

在光猫拨号的情况下,openwrt 可以上网,也可以直接访问光猫的管理页面,也可以直接访问光猫下面连接的其他设备。

但在光猫桥接模式下,即 openwrt 进行拨号,则无法直接访问光猫的管理页面,需要连接光猫的 wifi 或者网线才能对访问光猫界面。

在光猫设置为桥接模式的情况下,通过在 openwrt 设置一些必要的路由规则和防火墙规则,即可以实现两个子网互通,则可以通过 openwrt 直接访问光猫的管理页面。

一般前提

  • 本文基于 openwrt 23.05, 24.10 进行设置。不同版本的界面和细节可能略有不同,但原理都是相同的。
  • 本文假设光猫和 openwrt 使用不同的网段(例如光猫的网段为 192.168.1.*,openwrt 的网段为 192.168.200.*)。
  • 本位假设你已经在 openwrt 中完成 pppoe 拨号上网的设置。
  • 假设 wan 口的设备(device)名为 wan,接口(interface)名为 wanwan6

步骤 1. 设备选择

笔者尝试使用 2 种方法配置 openwrt 让其可以同时访问光猫和互联网。经测试 2 种方法均可以正常使用。2 种方法的主要区别在于网卡设备选择上,其他的设置大同小异。

方案 1 - macvlan

设备设置

  1. 首先需要安装 macvlan 软件包。
  2. 在 network - interfaces - devices 页面中新增 1 个 macvlan 设备,基础设备(base device)选择 wan 设备。名字可以自定,例如默认是 wanmac111 。mac 地址可以留空(每次启动时会自动生成),或自行指定不同的 mac 地址。

新建接口

步骤 2 中新建接口时,将设备(device)设置为这个 macvlan 设备,例如 wanmac111

方案 2 - 双线接入

如果有富余的网线和端口,则可以考虑采用双线接入的方式,例如:

  • openwrt 的 wan 口连接光猫的 lan111 口,用于拨号上网。
  • openwrt 的 lan444 口连接光猫的 lan222 口(也可以是其他端口,自行规划),用于访问光猫网络。

设备设置

  1. 在光猫超级管理界面的宽带设置中,将 lan222 解绑(也可以是其他端口,自行规划)。
  2. 在 openwrt 的 network - interfaces - devices 页面,编辑 br-lan 设备的桥接端口,取消 openwrt 的 lan444 口(也可以是其他端口,自行规划)。
  3. 用网线连接 openwrt 的 lan444 口和光猫的 lan222 口。

新建接口

步骤 2 中新建接口时,设备(device)选择这个 lan444 口。

步骤 2. 接口设置

新建接口

在 network - interfaces 页面中 新增一个 接口 (interface):

  • 名字(name):自行命名,例如:i_modem
  • 协议(protocol):建议选择“静态地址”。
  • 设备(device):根据 步骤 1 选择相应的设备。

接口设置

IP 地址设置

i_modem 接口的基本设置中,填入 ipv4 地址、掩码、网关。

这里说的 ip 地址、掩码、网关是 openwrt 相对光猫而言的,例如:

  • 光猫的网段是 192.168.1.* ,那么地址应该 192.168.1.114514 (自行设定)。
  • 网关是光猫的地址,一般是 192.168.1.1
  • 掩码一般为 /24255.255.255.0

网关设置

i_modem 接口的高级设置中,取消勾选“使用默认网关”(Use default gateway)。

  • 网关设置不当,可能会导致无法访问互联网。
  • 如果使用 DHCP 协议,建议取消勾选“对端通告的 DNS 服务器”。

跃点设置

i_modem 接口的高级设置中,网关跃点(Use gateway metric)和DNS 权重(DNS weight),设置一个比 lan 接口的跃点大、比 wan 接口的跃点小的数字,

例如:

  • lan 的跃点设置为 0
  • i_modem 接口的跃点设置为 5
  • wan 接口的跃点设置为 10

防火墙区域设置

i_modem 接口的防火墙设置中,建议新建一个区域,例如 z_modem

步骤 3. 防火墙设置

打开 network - firewall 页面, 编辑 z_modem 区域设置:

  • 覆盖网络(Covered networks):选择前面建立的 i_modem 接口。
  • 伪装(Masquerading):开启。(不开也行,但需要在光猫中设置路由表)
  • MSS 钳制(MSS clamping): 建议开启。
  • 入站(Input):根据自己的需求进行设置。建议“拒绝”或者“丢弃”,表示不允许光猫及光猫下的其他设备访问 openwrt 本身。
  • 出站(Output):根据自己的需求进行设置。可选择设置“接受”。表示是否允许 openwrt 本身访问光猫及光猫下的设备。
  • 区域内部转发(Intra zone forward):“拒绝”或者“丢弃”。
  • 允许从源区域转发(Allow forward from source zones):勾选 lan 区域。表示 lan 区域(即 openwrt 下的设备)可以访问光猫及光猫下的其他设备。
  • 允许转发到目标区域(Allow forward to destination zones):根据自己的需求进行设置。可选择设置 lan 区域。表示光猫及光猫下的其他设备可以访问 lan 区域(即 openwrt 下的设备)。

完成设置

完成设置后,openwrt 路由器下的设备就可以直接访问光猫的管理页面了。

  • 在电脑上,ping 光猫地址可以正常收到回复:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    
    > ping 192.168.1.1
    
    正在 Ping 192.168.1.1 具有 32 字节的数据:
    来自 192.168.1.1 的回复: 字节=32 时间=1ms TTL=63
    来自 192.168.1.1 的回复: 字节=32 时间=1ms TTL=63
    来自 192.168.1.1 的回复: 字节=32 时间=1ms TTL=63
    来自 192.168.1.1 的回复: 字节=32 时间=3ms TTL=63
    
    192.168.1.1  Ping 统计信息:
        数据包: 已发送 = 4已接收 = 4丢失 = 0 (0% 丢失)
    往返行程的估计时间(以毫秒为单位):
        最短 = 1ms最长 = 3ms平均 = 1ms
    
  • 在 Windows 系统中,可以通过 tracert 指令可以查看路由情况:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    > tracert 192.168.1.1
    
    通过最多 30 个跃点跟踪
     cmcc [192.168.1.1] 的路由:
    
      1     1 ms     1 ms     1 ms  openwrt [192.168.200.1]
      2     1 ms     1 ms     1 ms  cmcc [192.168.1.1]
    
    跟踪完成
    
  • 在 Linux 系统中,可以使用 traceroute 指令查看路由情况:

    1
    2
    3
    4
    
    $ traceroute 192.168.1.1
    traceroute to 192.168.1.1 (192.168.1.1), 30 hops max, 60 byte packets
    1  openwrt (192.168.200.1)  1.492 ms  1.276 ms  0.654 ms
    2  cmcc (192.168.1.1)  2.958 ms  2.840 ms  2.927 ms
    
使用 Hugo 构建
主题 StackJimmy 设计