Cliente DHCP do CentOS 7 - Como usar “classless-static-routes” (“código 121”)?

1

De acordo com esta resposta ...

link

... Eu posso usar a seguinte configuração para usar rotas enviadas pelo meu servidor DHCP no meu cliente DHCP colocando no arquivo /etc/dhclient.conf ou /etc/dhcp3/dhclient.conf a seguinte configuração ...

option classless-static-routes code 121 = array of { ip-address, ip-address };

Mas no CentOS 7 este arquivo não existe, mas os seguintes arquivos ...

[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

NOTA: Anote o valor do parâmetro "-cf" (arquivos: /var/lib/NetworkManager/dhclient-enp0s8.conf e /var/lib/NetworkManager/dhclient-enp0s17.conf ).

Minha pergunta é: Qual é a maneira correta de usar "classless-static-routes" (código 121) em um cliente DHCP do CentOS 7?

Obrigado!

PLUS:

Esta é a configuração do meu 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"
}]
[...]

O objetivo é que as solicitações para 10.1.4.0/24 sejam roteadas para ip 10.1.6.4/32 em meus clientes DHCP.

NOTA: É a mesma coisa que eu obteria com o comando ip route add 10.1.4.0/24 dev enp0s8 via 10.1.6.4 em cada um dos meus clientes DHCP.

    
por Eduardo Lucio 01.08.2018 / 23:44

2 respostas

2

Cópia sem vergonha desta resposta :

Se você deseja fazer isso via DHCP, certifique-se de que você configurou corretamente seu cliente DHCP de acordo com o artigo da RedHat Knowledgebase aqui

To ensure that RFC3442-standard classless static routes provided by a DHCP server are processed correctly when using NetworkManager, the following lines should be placed into /etc/dhclient.conf or, if using per-interface DHCP options, /etc/dhclient-.conf:

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;

These lines will ensure that RFC3442 classless static routes are requested from the DHCP server, and that they are properly processed by NetworkManager.

    
por 02.08.2018 / 00:36
1

Na verdade, esta resposta é um complemento à resposta de Isaac e algumas armadilhas - podem parecer um pouco óbvias, mas não para mim - sobre a questão apresentada.

Em primeiro lugar, embora haja algum padrão dentro do universo apresentado, é necessário entender uma correlação entre o que está configurado no servidor DHCP e o que é esperado no cliente DHCP. Praticamente, parâmetros como "option-def" - > "name" pode variar entre "rfc3442-classless-static-routes" e "classless-static-routes", "option-def" - > "tipos de gravação" entre "uint8, uint8, uint8, endereço ipv4" e "uint8, uint8, uint8, uint8, uint8, uint8, uint8, uint8" e assim por diante ... Ou seja, depende do que o Cliente DHCP espera do "outro lado" basicamente.

No caso do CentOS 7, o que é apontado no thread link já está configurado por padrão. só é necessário configurar no ISC KEA DHCP (DHCPv4) (meu caso) o que o CentOS 7 espera do "outro lado".

Finalmente, a configuração é assim ...

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"
}]
[...]

... desde que o CentOS 7 está configurado como ...

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;
[...]

ALGUNS ESCLARECIMENTOS:

"record-types" é uma máscara, ou seja, o que está em cada posição da matriz informada em "date" que como esperado no CentOS 7 é uma "matriz de inteiro sem sinal 8" (uint8).

"data" funciona de acordo com o exemplo a seguir: se eu quiser o seguinte roteamento 10.1.4.0/24 via 10.1.6.4 , informarei "24,10,1,4,10,1,6,4" . Observe que o zero em 10.1.4.0/24 deve ser omitido, pois é uma máscara para 3 octetos (/ 24).

DICA: O parâmetro "option-data" pode ser colocado em múltiplos locais em "subnet4" (arquivo "/usr/local/etc/kea/kea-dhcp4.conf") e este dependerá de como você deseja distribuir sua configuração para roteamento.

Especial graças a @Isaac, @Rui F Ribeiro e @ A.B!

    
por 02.08.2018 / 19:22