UbuntuのDHCPサーバーからホスト名を要求する方法は?

UbuntuのDHCPサーバーからホスト名を要求する方法は?

Ubuntu 11.04サーバー仮想マシンがあります。私のオフィスのDHCPサーバーから特定のホスト名を要求したいと思います。頻繁に実行しないため、起動するたびにIPが変更されます。明らかにホスト名で参照することをお勧めします。

私はDHCPサーバーがDHCPクライアントのホスト名要求を尊重することを知っています。私のWindows 7コンピュータでは、コンピュータの名前を変更し、再起動し、DHCPサーバーにクエリし、回答セクションで新しい名前を表示できます。私が使用するクエリコマンドは次のとおりです。

dig @192.168.225.5 -x 192.168.235.XXX

新しいコンピュータのホスト名で応答するたびに。これで、新しいホスト名を使用して別のコンピュータでpingとsshを実行することもできます。

Ubuntu VMにはそのような幸運はありませんでした。次の行を含むように/etc/dhcp/dhclient.confを修正しました。

send host-name "MYRQUESTEDHOSTNAME";

その後実行

sudo /etc/init.d/networking restart

ただし、仮想マシンのIPアドレスを使用した発掘クエリでは、回答部分は生成されません。

私は何を見逃していますか?

答え1

実際にホスト名が送信されていることを確認する必要があります。もしそうなら、問題はDHCPサーバーがDNSレコードを更新しないことです。

send は、DHCP サーバーに送信するオプションを指定します。あなたはこれがsend host-name "foo.bar"意味すると思いますfoo.barをホスト名に送信。しかし、これが意味するのはホスト名と文字列「foo.bar」をdhcpサーバーに送信します。。 2行が必要です:optionホスト名 "foo.bar"; send ホスト名;

答え2

私のネットワークに適したソリューションを見つけましたが、あなたの状況は異なる場合があります。なぜ自動的に発生しないのかわかりません。とにかく、これは正しいIPで正しいネットワークインターフェイスの正しいネームサーバーを更新し(VPN接続でも機能します)、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

)

答え3

上記の質問に対する答えは、WindowsコンピュータがDHCPプロセスとは完全に独立したホスト名でネットワーク上のネームサーバーを手動で更新していることです。

理想的には、DHCPサーバー自体がこれを行います。したがって、答えはDHCP要求とは何の関係もなく、すべてはDHCP / DNSサーバー自体の構成に関連しています。この記事を読んでくださいDebian の正しい設定。

関連情報