编辑
2023-07-20
学习资料
0

目录

应用场景
基础要求
设置方法
参考

注

本文章转载自https://www.haoyizebo.com/posts/d461b93f/ 好一则博

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

应用场景

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

一般来说,在特定设备有「看看外面」的需求时,只需要在对应设备上将网关与 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 实现)。

设置方法

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

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

  1. 打开 DHCP 配置
vim /etc/config/dhcp
  1. 按 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' config 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

  1. 重启 DHCP 服务
/etc/init.d/dnsmasq restart

注

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

cp: can’t stat ‘/etc/dnsmasq.d/*’: No such file or directory sh: out of range
  1. 验证是否生效 可以直接在终端上查看网关与 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

查看对应的配置

bash
cat /var/etc/dnsmasq.conf.cfg01411c

可以看到刚刚我们在 /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 配置文件,但是红米 AX6000 重启会重置该配置文件(倒也可以解决),大家注意就好了。

配置示例:

根据网址段分配不同网关与 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

参考

dnsmasq 配置文件手册:https://openwrt.org/zh/docs/guide-user/base-system/dhcp

DHCP Option 常见取值及含义

Options 序号Options 作用
1设置子网掩码选项。
3设置网关地址选项。
6设置 DNS 服务器地址选项。
12设置域名选项。
15设置域名后缀选项。
33设置静态路由选项。该选项中包含一组有分类静态路由(即目的地址的掩码固定为自然掩码,不能划分子网),客户端收到该选项后,将在路由表中添加这些静态路由。如果存在 Option121,则忽略该选项。
44设置 NetBios 服务器选项。
46设置 NetBios 节点类型选项。
50设置请求 IP 选项。
51设置 IP 地址租约时间选项。
52设置 Option 附加选项。
53设置 DHCP 消息类型。
54设置服务器标识。
55设置请求参数列表选项。客户端利用该选项指明需要从服务器获取哪些网络配置参数。该选项内容为客户端请求的参数对应的选项值。
58设置续约 T1 时间,一般是租期时间的 50%。
59设置续约 T2 时间。一般是租期时间的 87.5%。
60设置厂商分类信息选项,用于标识 DHCP 客户端的类型和配置。
61设置客户端标识选项。
66设置 TFTP 服务器名选项,用来指定为客户端分配的 TFTP 服务器的域名。
67设置启动文件名选项,用来指定为客户端分配的启动文件名。
77设置用户类型标识。
121设置无分类路由选项。该选项中包含一组无分类静态路由(即目的地址的掩码为任意值,可以通过掩码来划分子网),客户端收到该选项后,将在路由表中添加这些静态路由。
148EasyDeploy 中 Commander 的 IP 地址。
149SFTP 和 FTPS 服务器的 IP 地址。
150设置 TFTP 服务器地址选项,指定为客户端分配的 TFTP 服务器的地址。