Клиент CentOS 7 DHCP – Как использовать «бесclassовые статические маршруты» («код 121»)?

Согласно этому ответу …

https://unix.stackexchange.com/a/457577/61742

… Я могу использовать следующую конфигурацию для использования проталкиваемых маршрутов с моего DHCP-сервера в моем DHCP-клиенте, поместив в файл /etc/dhclient.conf или /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 ).

Мой вопрос: как правильно использовать «classless-static-routs» (код 121) на клиенте CentOS 7 DHCP?

Спасибо!


ПЛЮС:

Это конфигурация моего 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" }] [...] 

objective состоит в том, чтобы запросы к 10.1.4.0/24 направлялись на ip 10.1.6.4/32 в моих клиентах DHCP.

ПРИМЕЧАНИЕ. То же самое я получу с помощью команды ip route add 10.1.4.0/24 dev enp0s8 via 10.1.6.4 в каждом моем DHCP-клиенте.

Бесстыдное копирование из этого ответа :

Если вы хотите сделать это через DHCP, убедитесь, что вы правильно настроили своего DHCP-клиента в соответствии со статьей базы знаний RedHat здесь

Чтобы обеспечить правильную обработку бесclassовых статических маршрутов по стандарту RFC3442, предоставляемых сервером DHCP, при использовании NetworkManager, следующие строки должны быть помещены в /etc/dhclient.conf или, если используются параметры DHCP для каждого интерфейса, / etc / dhclient-. конф:

 option rfc3442-classless-static-routes code 121 = array of unsigned integer 8; option ms-classless-static-routes code 249 = array of unsigned integer 8; also request rfc3442-classless-static-routes; also request ms-classless-static-routes; 

Эти строки гарантируют, что бесclassовые статические маршруты RFC3442 запрашиваются у DHCP-сервера и что они должным образом обрабатываются NetworkManager.

На самом деле этот ответ является дополнением к ответу @ Исаака, и некоторые подводные камни – могут показаться немного очевидными, но не мне – по представленному вопросу.

Прежде всего, хотя в представленном юниверсе есть некоторый шаблон, необходимо понять корреляцию между тем, что настроено на DHCP-сервере, и тем, что ожидается в DHCP-клиенте. На практике такие параметры, как “option-def” -> “name”, могут варьироваться между “rfc3442-classless-static-маршруты” и “classless-static-маршруты”, “option-def” -> “типы записей” между ” uint8, uint8, uint8, ipv4-address »и« uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8 »и т. д. То есть это зависит от того, что клиент DHCP ожидает от« другого » сторона “в основном.

В случае CentOS 7 то, что указано в streamе https://unix.stackexchange.com/a/459963/61742 , уже настроено по умолчанию, тогда необходимо только настроить ISC KEA DHCP (DHCPv4) (мой случай) чего CentOS 7 ждет с “другой стороны”.

Наконец, конфигурация выглядит следующим образом …

 cat /usr/local/etc/kea/kea-dhcp4.conf [...] "option-def": [{ "name": "rfc3442-classless-static-routes", "code": 121, "space": "dhcp4", "type": "record", "array": true, "record-types": "uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8" } ], "option-data": [{ "name": "rfc3442-classless-static-routes", "data": "24,10,1,4,10,1,6,4" }] [...] 

… поскольку CentOS 7 настроен как …

 cat /var/lib/NetworkManager/dhclient-enp0s8.conf [...] option rfc3442-classless-static-routes code 121 = array of unsigned integer 8; also request rfc3442-classless-static-routes; [...] 

НЕКОТОРЫЕ РАЗЪЯСНЕНИЯ:

«record-types» – это маска, то есть то, что в каждой позиции массива сообщается в «date», что, как и ожидалось в CentOS 7, является «массивом беззнакового целого числа 8» (uint8).

«data» работает в соответствии со следующим примером: если я хочу следующую маршрутизацию 10.1.4.0/24 via 10.1.6.4 то я сообщу "24,10,1,4,10,1,6,4" . Обратите внимание, что ноль в 10.1.4.0/24 должен быть опущен, так как это маска для 3 октетов (/ 24).

СОВЕТ: Параметр “option-data” может быть размещен в нескольких местах в “subnet4” (файл “/usr/local/etc/kea/kea-dhcp4.conf”), и это будет зависеть от того, как вы хотите распространять свою конфигурацию для маршрутизации.

Особая благодарность @Isaac, @Rui F Ribeiro и @AB!