
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 の正しい設定。