Write by lyc at 2021-3-4
参考博文:
许迎果 第213期 openwrt旁路由模式设置教程(油管)
许迎果 第213期 openwrt旁路由模式设置教程(知乎)
旁路由设置的三种方式

1.关于旁路由

旁路由其实并不是路由,就像老婆饼里面不含老婆一样。

路由的本质是连接不同网络的设备,最常用的就是连接局域网与互联网。

在家庭网络中来说,通常谁负责上网拨号,谁就是路由模式,在主路由和旁路由的搭配中,只有主路由是负责拨号上网拨号和NAT转发的。

旁路由起到的主要是网关的作用,主要是用来分流数据和扩展插件的,比如去广告,自建DNS,离线下载,科学上网等进阶功能。严谨一点的叫法应该叫 “旁路网关” 或 “网关服务器”,“旁路由” 是约定俗成的叫法。

旁路由的核心是网关而不是路由,旁路由不能够单独存在,必须搭配主路由组成主旁体系来一起使用。

2.旁路由的两种常见架构

  • 主旁架构1:虚拟主旁路由,双软路由体系(不推荐):在高性能的软路由设备上,分别虚拟出主路由和旁路由系统搭配使用,它们各司其职,在软件层面上组成主旁网络架构。
  • 主旁架构2:物理硬件层面主旁网络结构(常用):由两个单独的物理设备,分别承当主路由和旁路由的角色,通过连接和配置打造硬件形式上的主旁网络结构。

我们这里谈论的就是架构2物理硬件层面的主旁网络结构,架构1虚拟层面的主旁体系不做过多讨论。

3.旁路由配置方案

当前家庭网络结构:

  • 主路由(TL-XDR6030 AX6000易展版)IP:192.168.1.1,已开启DHCP
  • 旁路由(友善R2S)IP:192.168.1.254

方案一:旁路由完全接手网关

旁路由完全接手网关,局域网设备都通过旁路由联网。

旁路由先单独配置,配置完成后再连入主路由环境中。

1.旁路由配置LAN口

旁路由必须跟主路由同IP网段而不同IP,且与其他设备不冲突。

openwrt web控制台 -> 网络-> 接口 -> LAN口

  • 协议改为静态地址(192.168.1.254)
  • IPv4网关、DNS填写主路由的IP(192.168.1.1)

2.旁路由开启强制DHCP

  • 开启动态DHCP
  • 开启强制:即使检测到另一台DHCP服务器,也要强制使用此设备上的DHCP服务器
  • IPv4子网掩码:255.255.255.0
  • DHCP选项:(IP也就是旁路由的IP)
    • 3,192.168.1.254
    • 6,192.168.1.254

主路由关闭DHCP服务,防止设备直接连接到主路由,而无法使用旁路由的扩展功能。

openwrt 配置上WAN口配置建议删掉,旁路由模式下用不到WAN口。

3.接网线

主路由LAN口连旁路由LAN口,最后主路由、旁路由重启,完成部署。

如需要断开旁路由,主路由与旁路由LAN口的网线先断开,重启主路由,主路由就可以重新接管网络。

方案二:旁路由部分接手网关

旁路由部分接手网关,让局域网的设备自行选择联网路径。

该方案步骤1,3和方案一一样,区别仅在步骤2,旁路由部分接手网关旁路由关闭DHCP服务,即忽略DHCP接口服务。

该方案下局域网默认会通过主路由上网。

如果我们需要让某个设备需要走旁路由,那么只需要单独手工配置该设备的IP、掩码,重点是将网关和DNS设为旁路由的IP(192.168.1.254)

后续如果要停用旁路,我们只需要断开网线,并将设备的IP、网关、DNS配置改成自动获取或手动改成主路由的IP地址即可又恢复主路由上网。

方案总结:

两个方案的区别在于,是否要强制开启旁路由的DHCP服务。

强制开启的好处是等于接管了整个局域网的流量,整个局域网都可以使用旁路由的扩展功能。

旁路由关闭DHCP服务的好处是,可以指定设备使用特殊功能,更加隐蔽灵活。

注意:以上两种方案都是针对硬件层面的旁路由配置

四、旁路由无法上网问题

Openwrt的旁路由设置

如果有网页打不开,可以在cmd中使用 ipconfig /flushdns 命令刷新DNS缓存试试。

部分 openwrt 固件可能导致无线设备连接主路由AP无法上网,可尝试在旁路由防火墙加入规则,开启NAT:

方式1:openwrt后台添加(推荐)

开启iptables nat转发

添加自定义 NAT 规则

1
iptables -t nat -I POSTROUTING -j MASQUERADE

方式2:ssh命令含添加配置

1
$ iptables -t nat -I POSTROUTING -j MASQUERADE

同时把配置添加到 /etc/ec.local 持久化。

1
2
3
4
5
6
$ root@OpenWrt:~# cat /etc/rc.local 
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.

/usr/sbin/iptables -t nat -I POSTROUTING -j MASQUERADE
exit 0