Linux DHCP 网关信息 没有同步到路由表 解决办法
关键字:
DHCP NetworkManager Debian Route DNS
背景
家里有几台Linux & Windows 节点,运行着 SMB RDP 服务。
网络出口只有1个, 是光猫宽带。之前有过2次光纤故障, 导致我无法访问家里的节点。
现新增一台 LTE_4G 转 LAN 作为备用网关。
在 DHCP 服务器上, 当检测到主网关 ping 外网不可用时,启用备用网关,
更新 DHCP下发时的 DNS 与 route信息。
为什么会有这篇笔记
Windows是可以自动将DHCP中的route作为新的网关。在DHCP服务器设定不同的路由,window工作的很好。
Debian11 在没有安装 NetworkManager时则是不可以的(我不喜欢NetworkManager,所以另找其他方式)
执行 systemctl restart networking 可以获取正确的 路由。
但是当 dhcp 服务器更新了 route信息时。 Debian11 歇菜了.
查看 DNS
1 |
|
查看默认路由
1 |
|
dhcp 钩子
通过DHCP 回调, 令 br0 网卡的DHCP更新 同步到路由表1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18root@debian:~# cat /etc/dhcp/dhclient-exit-hooks.d/br0
if [ "$interface" != "$(basename $1)" ]
then
exit 0
fi
if [ "$old_routers" = "$new_routers" ]
then
exit 0
fi
if [ "$reason" = "BOUND" ] || [ "$reason" = "RENEW" ] || [ "$reason" = "REBOOT" ]
then
route del -net 0.0.0.0/0
route add -net 0.0.0.0/0 gw $new_routers
fi
root@debian:~#
添加了执行权限1
root@debian:~# chmod +x /etc/dhcp/dhclient-exit-hooks.d/br0
DHCP option 设定
MikroTik1
2
3
4
5
6
7
8
9
10
11
12/ip dhcp-server option
add code=3 name=Free_Route value="'192.168.88.2'"
add code=6 name=Free_DNS value="'192.168.88.2'"
/ip dhcp-server lease
add address=192.168.88.101 dhcp-option=Free_DNS,Free_Route mac-address=F0:76:1C:38:5A:64 server=DHCP_LAN
add address=192.168.88.99 mac-address=98:90:96:D3:CD:AE server=DHCP_LAN
add address=192.168.88.102 dhcp-option=Free_DNS,Free_Route mac-address=12:34:56:78:90:A1 server=DHCP_LAN
add address=192.168.88.2 mac-address=52:54:00:92:69:4D server=DHCP_LAN
add address=192.168.88.103 dhcp-option=Free_DNS,Free_Route mac-address=D0:A6:37:ED:88:E7 server=DHCP_LAN
add address=192.168.88.97 lease-time=1m mac-address=12:34:56:78:90:A2 server=DHCP_LAN