注
本文章转载自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 支持。
以下以 红米 AX6000 路由器版本为例,路由器固件为官方固件,版本为 1.0.48。
首先需要通过 ssh 进入路由器,还没解开 ssh 的话自行网上搜索解决吧。
vim /etc/config/dhcp
# 主路由网关 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
/etc/init.d/dnsmasq restart
注
如果出现下面的报错,不用管
cp: can’t stat ‘/etc/dnsmasq.d/*’: No such file or directory sh: out of range
也可以通过确认 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
查看对应的配置
bashcat /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 | 设置无分类路由选项。该选项中包含一组无分类静态路由(即目的地址的掩码为任意值,可以通过掩码来划分子网),客户端收到该选项后,将在路由表中添加这些静态路由。 |
148 | EasyDeploy 中 Commander 的 IP 地址。 |
149 | SFTP 和 FTPS 服务器的 IP 地址。 |
150 | 设置 TFTP 服务器地址选项,指定为客户端分配的 TFTP 服务器的地址。 |