路由

OpenWRT给不同IP的设备分配不同的网关、旁路由

波比AI · 5月2日 · 2025年本文共3022个字 · 预计阅读11分钟7次已读

OpenWRT默认的DHCP Server服务器是Dnsmasq,借助Dnsmasq可以实现根据网址段分配不同网关(旁路由),也可以实现根据MAC地址/IP地址分配不同网关。

iStoreOS 设置步骤

应用场景

我家里目前是使用iStoreOS作为主路由(192.168.0.1),另外nas上虚拟了一个iStoreOS作为旁路由(192.168.0.2)作为科学上网使用,你懂的。以前的做法是,在需要科学上网的设备上使用静态IP,然后网关处设置成旁路由网关(192.168.0.2),这样就能实现科学上网,但如果某些设备不支持静态IP设置,或者操laoxiongb2c作起来比较麻烦,就不太容易实现了,于是有了这个教程和记录,在DHCP端实现给不同IP的设备分配不同的网关。

具体操作如下

  1. 打开“网络”-“接口”,在“lan”后面点击编辑,在弹出的对话框选择“DHCP 服务器”-“高级设置”,其中的“DHCP 选项”增加两条“3,192.168.0.1”和“6,192.168.0.1”,其中“3,192.168.0.1”表示指派192.168.0.1 作为网关(注意3和英文逗号),“6,192.168.0.1”表示指派 192.168.100.1 作为 DNS 服务器(注意6和英文逗号)。这里的设置是其他不需要科学的设备走的是主路由的网关和DNS。PS:如果iStoreOS作为主路由,不提供科学服务,由旁路由提供科学等服务,内网部分主机需要科学,大部分主机都不需要科学,这一步忽略(因为默认网关就是主路由)。
    OpenWRT给不同IP的设备分配不同的网关、旁路由

OpenWRT给不同IP的设备分配不同的网关、旁路由

  1. 打开“网络”-“DHCP/DNS”-“标签”,在“添加”按钮左边输入“t_proxy”,点击“添加”按钮,然后也是“DHCP 选项”输入两条“3,192.168.0.2”和“6,192.168.0.2”,保存应用。这里设置的是标签为“t_proxy”的设备走的是旁路由的网关和DNS。

OpenWRT给不同IP的设备分配不同的网关、旁路由

OpenWRT给不同IP的设备分配不同的网关、旁路由

  1. 打开“网络”-“DHCP/DNS”-“静态地址分配”,点击“添加”(如果之前已经配置了要科学的主机,那编辑相应条目即可),输入主机名称(可以用英文大小写,数字,下划线,必填),选择要科学的主机的MAC;如果不需要固定IP,“IPv4地址”可以选择未指定;最关键的是在“标签”选项中选择“t_proxy”(如果没出现,保存下刷新页面再回来选)。然后保存应用即可。
    OpenWRT给不同IP的设备分配不同的网关、旁路由

OpenWRT给不同IP的设备分配不同的网关、旁路由

对于每一个需要科学的设备都要添加。内网主机重新插网线或连wifi,应该就会获取到指定的网关和DNS了。

Openwrt 设置步骤

一个主路由下有多个旁路由,如何在主路由上针对不同的连接设备,指定其使用的旁路由是哪laoxiongb2c一个?

应用场景

由于家里是用旁路由的模式来实现按需科学上网的。

一般来说,在特定设备有「看看外面」的需求时,只需要在对应设备上将网关与 DNS 都手动设置为旁路由的 IP 就行了。

BUT,

家里的雷鸟电视,买的时候看它是「极客的新选择」,但是到手却发现这家伙的设置里,连静态 IP 都没法设置,更别提指定网关和 DNS 了。

官方论坛看大家在 21 年就在吐槽了,而看官方的态度,这个 Android 本身就自带的功能,他们是不准备支持了。

那么,

我们就绕开 client 端的设置,从 server 端入手吧,通过在主路由配置 dnsmasq 来实现按设备分配网关和 DNS

Dnsmasq 为小型网络提供网络基础设施:DNS、DHCP、Router Advertisement 和 Network boot。它设计轻巧,资源占用少,适用于资源有限的路由器和防火墙。它还被广泛用于在智能手机和便携式热点上,并支持虚拟化框架中的虚拟网络。支持的平台包括 Linux ( 带有 glibc 和 uclibc ) 、Android、*BSD 和 Mac OS X. Dnsmasq 包含在大多数 Linux 发行版以及 FreeBSD、OpenBSD 和 NetBSD 的端口系统中。Dnsmasq 提供全面的 IPv6 支持。

基础要求

  1. 既然是配置旁路由为网关,因此必然是要求旁路由和主路由处于同一个网段(例如处于 192.168.1.0/24 中的两个地址,可以互相访问)。
  2. 主路由必须作为 DHCP Server(lan接口启用 DHCP。在小米系的官方固件以及 OpenWRT 中,该服务是默认都是由 Dnsmasq 实现)。

设置方法

以下以 红米 AX6S 路由器版本为例,路由器固件为官方固件,版本为 18.06。

首先需要通过 ssh 进入路由器,还没解开 ssh 的话自行网上搜索解决吧。

1、打开 DHCP 配置

vim /etc/config/dhcp

2、按 MAC 地址配置静态 ip 并设置 tag,并对指定 tag 设置网关与 DNS

# 主路由网关 192.168.1.1,旁路由网关 192.168.1.2  
# 主路由 DNS 192.168.1.1,旁路由 DNS 192.168.1.2  

config dhcp 'lan'  
list dhcp_option '3,192.168.1.1'  
list dhcp_option '6,192.168.1.1'  

config host  
option ip '192.168.1.100'  
option mac 'aa:bb:cc:dd:ee:ff'  
option tag 'bypass'  

claoxiongb2config tag 'bypass'  
option dhcp_option '3,192.168.1.2 6,192.168.1.2'  
option force '1'

3,192.168.xxx.xxx这前面的 3 是自定义网关,6 是自定义 DNS

3、重启 DHCP 服务

/etc/init.d/dnsmasq restart

如果出现下面的报错,不用管

cp: can’t stat ‘/etc/dnsmasq.d/*’: No such file or directory
sh: out of range

4、验证是否生效

可以直接在终端上查看网关与 DNS 的配置是否正确了。

也可以通过确认 dnsmasq 的配置是否生效,如下

先用ps命令查看一下当前 dnsmasq 正在使用的配置文件路径,这里的就是/var/etc/dnsmasq.conf.cfg01411c

/usr/sbin/dnsmasq --user=root -C /var/etc/dnsmasq.conf.cfg01411c -k -x /var/run/dnsmasq/dnsmasq.cfg01411c.pid

查看对应的配置

/etc/init.d/dnsmasq restart

可以看到刚刚我们在/etc/config/dhcp里配置的已经生成在这个配置里

dhcp-option=lan,3,192.168.1.1
dhcp-option=lan,6,192.168.1.1

dhcp-host=aa: bb: cc: dd: ee: ff,set: bypass,192.168.1.100

dhcp-option-force=tag: bypass,3,192.168.1.2
dhcp-option-force=tag: bypass,6,192.168.1.2

补充:

也可以直接改/etc/dnsmasq.conf配置文件,但是红米 AX6S 重启会重置该配置文件(倒也可以解决),大家注意就好了。

配置示例:

根据网址段分配不同网关与 DNS

dhcp-range=set: bypass,192.168.1.100,192.168.1.200
dhcp-option=tag: bypass,3,192.168.1.2
dhcp-option=tag: bypass,6,192.168.1.2

也可在客户端中测试,如:
OpenWRT给不同IP的设备分配不同的网关、旁路由

[Total: 0 Average: 0]
0 条回应

必须 注册 为本站用户, 登录 后才可以发表评论!