Também estou interessado em consultar servidores DNS do DHCP sem usar outras informações.
O dhcpcd pode permitir consultá-lo ( dhcpcd -o domain_name_servers -T
), mas não consegui encontrar nada para o dhclient.
Além de usar um dhclient modificado (veja aqui no GitHub e aqui no Stack Overflow ) ou um test-client ( como neste blog ) ou scripts diferentes ( veja isso no Stack Overflow ) Eu encontrei uma solução powershell aqui em recuado.com.br .
Isso me fez pensar em usar "o básico" no Linux e acabei com uma solicitação dhcp criada usando printf
.
Alguns campos podem ser falsos (como mac aa: bb: cc: dd: ee: ff) mas contém opções 53 = 0x35 (len 1 / value 1 = Request) e 55 = 0x37 (len 1 / value 6 para DNS).
Para transmissão, o socat é usado:
printf "\x1\x1\x6\x0\xd3\x44\x33\xeb\x0\x0\x80\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\xaa\xbb\xcc\xdd\xee\xff\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x63\x82\x53\x63\x35\x01\x01\x37\x01\x06\xff" | socat - UDP4-DATAGRAM:255.255.255.255:67,broadcast
Simliar socat é usado para receber uma resposta
socat -u udp-recv:68,reuseaddr -
ou
socat -u udp-recv:68 - | dd bs=1 skip=$( printf "%d" 0xec )
Usando o xxd, encontrei o que procurava ...