Como solicitar um hostname de um servidor DHCP no Ubuntu?

3

Eu tenho uma máquina virtual do servidor Ubuntu 11.04. Gostaria de solicitar um nome de host específico do servidor DHCP no escritório. Como não o executo com frequência, o IP muda quase toda vez que eu inicializo. Obviamente, fazer referência a ele por um nome de host é a opção preferida.

Eu sei que meu servidor DHCP respeita as solicitações de nome de host do cliente DHCP. Na minha máquina windows 7, eu posso renomear o computador, reiniciar, consultar o servidor DHCP e ver o novo nome na seção ANSWER. O comando de consulta que eu uso é:

dig @192.168.225.5 -x 192.168.235.XXX

e sempre que responderá com o novo nome de host do computador. Eu também posso agora ping e ssh de outras máquinas usando esse novo nome de host.

Eu não tenho tanta sorte na VM Ubuntu. Eu modifiquei /etc/dhcp/dhclient.conf para incluir uma linha:

send host-name "MYRQUESTEDHOSTNAME";

e, em seguida, execute

sudo /etc/init.d/networking restart

mas a consulta com dig usando o endereço IP da VM não gera nenhuma SECÇÃO DE RESPOSTA.

O que estou perdendo?

    
por Keith Bentrup 13.05.2011 / 17:37

3 respostas

1

Encontrei uma solução que funciona para minha rede, mas sua milhagem pode variar. Não sei por que isso não acontece automaticamente. De qualquer forma, aqui está o script de shell simples que deve atualizar o servidor de nomes correto na interface de rede correta com o IP correto (funcionará também para conexões VPN) e deve funcionar no OSX / BSD & Linux.

#!/bin/bash

# the host information to send
DOMAIN=$(awk '/^search/ {print $2}' /etc/resolv.conf | head -1)
HOST=$(hostname -s)

# nameserver to update
NAMESERVER=$(awk '/nameserver/ {print $2}' /etc/resolv.conf | head -1)

# linux version to find interace that routes to nameserver 
if [[ -e /sbin/ip ]]; then
    INTERFACE=$(ip -o route get ${NAMESERVER} | awk '{print $5}')
else # osx / bsd version
    INTERFACE=$(route get ${NAMESERVER} | awk '/interface/ {print $2}')
fi

# ip of the interface
IP=$(ifconfig ${INTERFACE} | perl -ne 'print "$1" if /inet.*?(\d+\.\d+\.\d+\.\d+)/')


nsupdate -d <(

echo server ${NAMESERVER} 53
echo update add ${HOST}.${DOMAIN} 86400 A ${IP}
echo show
echo send

)
    
por 20.02.2012 / 05:36
1

Você precisa verificar se o nome do host é realmente enviado. Se for, o problema é que o servidor dhcp não atualiza os registros DNS.

send especifica as opções para enviar ao servidor DHCP. Você está assumindo que send host-name "foo.bar" significa enviar foo.bar como o nome do host . No entanto, significa enviar o hostname e a string "foo.bar" para o servidor dhcp . Você precisa de duas linhas:     opção host-name "foo.bar";     enviar nome do host;

    
por 13.05.2011 / 17:45
0

A resposta acima é que o seu computador Windows está atualizando manualmente o servidor de nomes da sua rede com seu nome de host, que é completamente separado do processo DHCP.

Idealmente, o próprio servidor DHCP estaria fazendo essa tarefa - portanto, a resposta não está muito relacionada à solicitação DHCP, mas também à configuração do próprio servidor DHCP / DNS. Veja este artigo para uma configuração adequada no Debian.

    
por 29.05.2014 / 20:03