根据这个答案...
https://unix.stackexchange.com/a/457577/61742
...我可以使用以下配置在我的 DHCP 客户端中使用来自我的 DHCP 服务器的推送路由,方法是在/etc/dhclient.conf
or/etc/dhcp3/dhclient.conf
文件中放置以下配置...
option classless-static-routes code 121 = array of { ip-address, ip-address };
但是在 CentOS 7 中这个文件不存在,但是下面的文件...
[root@localhost ~]# ps -eaf | grep dhcli
root 780 650 0 15:02 ? 00:00:00 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-enp0s8.pid -lf /var/lib/NetworkManager/dhclient-00cb8299-feb9-55b6-a378-3fdc720e0bc6-enp0s8.lease -cf /var/lib/NetworkManager/dhclient-enp0s8.conf enp0s8
root 783 650 0 15:02 ? 00:00:00 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-enp0s17.pid -lf /var/lib/NetworkManager/dhclient-8512e951-6012-c639-73b1-5b4d7b469f7f-enp0s17.lease -cf /var/lib/NetworkManager/dhclient-enp0s17.conf enp0s17
root 2218 1152 0 15:36 pts/0 00:00:00 grep --color=auto dhcli
注意:注意“-cf”参数的值(文件:/var/lib/NetworkManager/dhclient-enp0s8.conf
和/var/lib/NetworkManager/dhclient-enp0s17.conf
)。
我的问题是:在 CentOS 7 DHCP 客户端上使用“无类静态路由”(代码 121)的正确方法是什么?
谢谢!
加:
这是我的 ISC KEA DHCP (DHCPv4) 的配置...
cat /usr/local/etc/kea/kea-dhcp4.conf
[...]
"option-def": [{
"name": "rfc3442-classless-static-routes",
"code": 121,
"space": "dhcp4",
"type": "record",
"record-types": "uint8,uint8,uint8,ipv4-address"
}
],
"option-data": [{
"name": "rfc3442-classless-static-routes",
"data": "10,1,4, 10.1.6.4"
}]
[...]
目标是将 10.1.4.0/24 的请求路由到我的 DHCP 客户端中的 ip 10.1.6.4/32。
ip route add 10.1.4.0/24 dev enp0s8 via 10.1.6.4
注意:我在每个 DHCP 客户端中使用该命令会得到相同的结果。
从这个答案中无耻地复制:
事实上,这个答案是对@Isaac 的答案的补充,并且在所提出的问题上存在一些陷阱 - 可能看起来有点明显,但对我来说不是。
首先,尽管在所呈现的宇宙中存在一些模式,但有必要了解 DHCP 服务器中配置的内容与 DHCP 客户端中预期的内容之间的相关性。实际上,诸如“option-def”->“name”之类的参数可以在“rfc3442-classless-static-routes”和“classless-static-routes”之间变化,“option-def”->“record-types”在“ uint8, uint8, uint8, ipv4-address”和“uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8”等等……也就是说,这取决于DHCP客户端对“其他侧”基本上。
在 CentOS 7 的情况下,线程https://unix.stackexchange.com/a/459963/61742中指出的内容已默认配置,那么只需在 ISC KEA DHCP (DHCPv4) 中配置(我的case) CentOS 7 从“另一边”等待什么。
最后,配置看起来像这样......
...因为 CentOS 7 被配置为...
一些说明:
“记录类型”是一个掩码,即在“日期”中通知的数组的每个位置中的内容,正如 CentOS 7 中所预期的那样,是一个“无符号整数 8 数组”(uint8)。
“数据”根据以下示例工作:如果我想要以下路由
10.1.4.0/24 via 10.1.6.4
,那么我会通知"24,10,1,4,10,1,6,4"
。请注意,10.1.4.0/24
应该省略 in 的零,因为它是 3 个八位字节 (/24) 的掩码。提示: “option-data”参数可以放置在“subnet4”(文件“/usr/local/etc/kea/kea-dhcp4.conf”)中的多个位置,这取决于您希望如何分发配置用于路由。
特别感谢@Isaac、@Rui F Ribeiro 和@AB!