前言
ISC DHCPD 服务器不仅仅能分配 IP
,DNS
,DefaultGateway
等信息,还可以推送静态路由条目,自动配置到客户端上;
最近将公司服务器和家里的 Lab
环境用 L2TP
打通了,公司服务器作为客户端在连接上 L2TP
后需要自动从家里的 dhcpd
服务器上获取分配的虚拟专用网 IP
等信息;由于家里的 Lab
环境是有划分多个网段的,为了公司服务器能正常访问家里的所有网段,就必须要在公司服务器上设置静态的路由条目;当然不可能是手动去配置了,所以就在 dhcpd
上做了点配置,轻松实现了自动分配静态路由的功能;
配置
经过查阅资料,发现 windows
客户端和 Linux/unix
客户端在 DHCP
中接收静态路由的协议参数 code
码是不一样的,因此需要分别为这两种类型的客户端分别定义2种路由设置,配置方法如下:
所有配置均在 /etc/dhcp/dhcpd.conf
中设定
1. 配置文件开头,全局定义2个 option
指定对应的 code
值
option ms-classless-static-routes code 249 = array of unsigned integer 8;
option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
2. 在对应的 subnet 段编写需要分配的静态路由条目
subnet 10.0.0.0 netmask 255.255.255.0 {
range dynamic-bootp 10.0.0.2 10.0.0.20;
option broadcast-address 10.0.0.255;
option ms-classless-static-routes 24,192,168,10,10,0,0,1,24,192,168,2,10,0,0,1,24,192,168,100,10,0,0,1,24,172,16,10,10,0,0,1,24,10,0,0,10,0,0,1;
option rfc3442-classless-static-routes 24,192,168,10,10,0,0,1,24,192,168,2,10,0,0,1,24,192,168,100,10,0,0,1,24,172,16,10,10,0,0,1,24,10,0,0,10,0,0,1;
}
以上的两条 static-routes
条目因为是针对不同类型的客户端,所以出了 option
对象名称不同,设定的路由条目内容都是完全一样的,但需要注意路由条目的写法规则:
网段掩码位数,目标网段,网关地址
单一路由条目写法如下:网段 192.168.10.0/24 网关 10.0.0.1
24,192,168,10,10,0,0,1;
2条路由条目写法:网段1 192.168.10.0/24 网关 10.0.0.1 网段2 192.168.2.0/25 网关 10.0.0.1
24,192,168,10,10,0,0,1,24,192,168,2,10,0,0,1;
更多路由条目的写法类似,以此往后附加即可,需要注意的是每个网段开头的掩码位数,必须要和紧接在后面的网段范围匹配,全部用逗号分隔,不是IP地址常用的点分割;
配置文件修改完毕后,需要 重启/重载 (restart/reload) dhcpd
服务生效
验证
使用客户端,连接上 L2TP
后查看本地路由表,确认有包含分配的 static-route
条目