
Ubuntu日本語フォーラム

ログインしていません。
社内でDynamic DNSが導入されたので、clientの設定をしているのですが、うまくDNSに反映されてないので、設定のどこに問題があるのか御教示いただけないでしょうか?
環境は、以下になります。
yama@jps20120007:~$ uname -a
Linux jps20120007.ifs.foo.co.jp 3.0.0-12-generic #20-Ubuntu SMP Fri Oct 7 14:50:42 UTC 2011 i686 i686 i386 GNU/Linux
yama@jps20120007:~$ cat /etc/hostname
jps20120007.ifs.foo.co.jp
yama@jps20120007:~$ hostname
jps20120007.ifs.foo.co.jp
yama@jps20120007:~$ hostname -f
jps20120007.ifs.foo.co.jp
yama@jps20120007:~$ grep "^send" /etc/dhcp/dhclient.conf
send host-name "jps20120007.ifs.foo.co.jp" # ← IPv4オプション81番 FQDN通知設定
send dhcp-client-identifier "jps20120007.ifs.foo.co.jp" # ← 上の設定だけではダメなのかなと思い、Webでの検索で試しに設定
以下は、別のPCでnslookupの結果です。
yama@jpc00095266:~$ nslookup
> server XX.15.126.4
Default Server: nsx1.jdc.foo.co.jp
Address: XX.15.126.4
> jpc00095266.jp.foo.com
Server: nsx1.jdc.foo.co.jp
Address: XX.15.126.4 ← nslookupを実行したマシンのIPが引けている
Name: jpc00095266.jp.foo.com
Addresses: 2001:cf8:3ffe:0:200:5efe:XX.2.67.3
2001:cf8:1:51f:11c9:dde:db2f:5bd
> jps20120007.ifs.foo.co.jp
*** nsx1.jdc.foo.co.jp can't find jps20120007.ifs.foo.co.jp: Non-existent domain
Server: nsx1.jdc.foo.co.jp
Address: XX.15.126.4 ← Dynmic DNSでのserver名からIPが引けない。
> jps20120006.ifs.foo.co.jp
Non-authoritative answer:
Server: nsx1.jdc.foo.co.jp
Address: XX.15.126.4
Name: jps20120006.ifs.foo.co.jp
Addresses: 2001:cf8:1:220:0:dddd:4ada:9182
XX.11.165.115 ← 他のマシン(私の管理外、誰管理か不明)はDynamic DSN登録出来ている。
オフライン
コード:
yama@jps20120007:~$ uname -a Linux jps20120007.ifs.foo.co.jp 3.0.0-12-generic #20-Ubuntu SMP Fri Oct 7 14:50:42 UTC 2011 i686 i686 i386 GNU/Linux
この結果からすると ubuntu 12.04 を使っているのだろうと思います
ただ、上記コマンド (uname -a) で示されるのはカーネルのバージョンであり ubuntu のバージョンではありません
助言を得る際に重要なのはどちらかといえば ubuntu のバージョンです
ubuntu のバージョンを得るには lsb_release -d (lsb_release -a の方が無難かも) を使います
さて、本題の Dynamic DNS へのホスト名の登録については、拙ブログで申し訳ないのですが 「ubuntu 12.04 を起動しても DNS に名前登録されない « COMPNET」 を参考に試してみてはどうでしょうか
オフライン
ryさんご教示ありがとうございます。
未だ、正しく動作しないので引き続きご教示いただけますでしょうか?
yama@jps20120007:~$ ls -F /sbin/dh*
/sbin/dhclient* /sbin/dhclient-script* /sbin/dhclient3@
dhclient-scriptから ry さんのスクリプトが実行されているのかどうか確認する術とかございますでしょうか?
後、DHCPでIPが割り当てられ際に、hostname(FQDN)通知時に、どこかのログに吐き出されるのでしょうか?
yama@jps20120007:~$ cat /etc/hostname
jps20120007.ifs.company.co.jp
yama@jps20120007:~/howm$ lsb_release -a ← lsb_release で出力し直しました。
No LSB modules are available.
Distributor ID: LinuxMint
Description: Linux Mint 12 Lisa ← Linux Min 12 です。
Release: 12
Codename: lisa
yama@jps20120007:/etc$ ls dhc*
dhcp:
./ ../ dhclient-enter-hooks.d/ dhclient-exit-hooks.d/ dhclient.conf
dhcp3:
./ ../ dhclient-enter-hooks.d/
yama@jps20120007:~/etc$ cat ddns_update ← ryさんのページからスクリプトをcopy
#!/bin/sh
SED=/bin/sed
PHASE=`echo "$script" | $SED -e 's%^.*/[^/]*-\(enter\|exit\)-.*/[^/]*$%\L\1\E%i'`
NSUPDATE=/usr/bin/nsupdate
HOSTNAMEFILE=/etc/hostname
get_fqdn() {
#=- $1 ... domain name
#=- ret ... FQDN; Null string when there is no hostname file
###
local HOSTNAME
[ -s $HOSTNAMEFILE ] && read HOSTNAME <$HOSTNAMEFILE
[ -n "$1" -a -n "$HOSTNAME" ] && echo "$HOSTNAME.$1."
}
AWK=/usr/bin/awk
cnv_ip4_inaddr() {
#=- $1 ... ip4 address
#=- ret ... in-addr string
###
[ -n "$1" ] && echo `echo $1 | $AWK -F . '{ printf( "%d.%d.%d.%d.in-addr.arpa.", $4, $3, $2, $1 ) }'`
}
case ${reason} in
BOUND|RENEW|REBIND|REBOOT)
if [ $PHASE == "exit" ]; then
new_fqdn=`get_fqdn ${new_domain_name}`
new_inaddr=`cnv_ip4_inaddr ${new_ip_address}`
if [ ! -z ${new_fqdn} ]; then
$NSUPDATE <<__END__
update add ${new_fqdn} 3600 IN A ${new_ip_address}
send
update add ${new_inaddr} 3600 IN PTR ${new_fqdn}
send
__END__
fi
fi
;;
EXPIRE|FAIL|RELEASE|STOP)
if [ $PHASE == "enter" ]; then
old_fqdn=`get_fqdn ${old_domain_name}`
old_inaddr=`cnv_ip4_inaddr ${old_ip_address}`
if [ ! -z ${old_fqdn} ]; then
$NSUPDATE <<__END__
prereq yxrrset ${old_fqdn} IN A ${old_ip_address}
update delete ${old_fqdn} 3600 IN A ${old_ip_address}
send
prereq yxrrset ${old_inaddr} IN PTR ${old_fqdn}
update delete ${old_inaddr} 3600 IN PTR ${old_fqdn}
send
__END__
fi
fi
;;
esac
yama@jps20120007:~/etc$ sudo cp ddns_update /etc/dhcp/dhclient-enter-hooks.d/ ← enter-hooks.dへcopy
[sudo] password for yama:
yama@jps20120007:~/etc$ sudo cp ddns_update /etc/dhcp/dhclient-exit-hooks.d/ ← exit-hooks.dへcopy
yama@jps20120007:~/etc$ nslookup ← nslookup で確認
> server
Default server: XX.15.126.4
Address: XX.15.126.4#53
Default server: XX.7.134.253
Address: XX.7.134.253#53
> jps20120007.ifs.company.co.jp ← DNS引けない
Server: XX.15.126.4
Address: XX.15.126.4#53
** server can't find jps20120007.ifs.company.co.jp: NXDOMAIN
> jps20120006.ifs.company.co.jp ← DNS引けている
Server: XX.15.126.4
Address: XX.15.126.4#53
Non-authoritative answer:
Name: jps20120006.ifs.company.co.jp
Address: XX.11.165.115
オフライン
スクリプトを /etc/dhcp/dhclient-{enter,exit}.d ディレクトリにコピーしてから、IP アドレスの再取得は試みましたか?
このスクリプトは DHCP から IP アドレスの割り当てを受けるときと IP アドレスを解放するときに動作します
スクリプトが呼び出されているかどうかは、スクリプトの先頭 (# の行が一行目に必須なので実際は二行目とか) に echo "てきとうなメッセージ" とかを追加すれば、スクリプトが呼び出されたときにコンソールに「てきとうなメッセージ」と表示されます
if [ $PHASE == "exit" ]; then や if [ $PHASE == "enter" ]; then の行の次の行あたりに echo "てきとうなメッセージ" を追加すれば、それぞれ IP アドレスを解放したとき、割り当てをうけたときに表示されます
メッセージを syslog に残したいなら、/usr/bin/logger "てきとうなメッセージ" を echo "てきとうなメッセージ" の代わり追加してください
もっと詳しく調査したいなら、二か所ある $NSUPDATE を cat や /usr/bin/logger に変えて、DNS に登録・削除で実行しているコマンドを確認してみるのも一案です
オフライン
ryさん、アドバイスありがとうございます。
DHCPでのIPアドレスの再取得はしており、IP等は問題なく取得出来ています。
で、スクリプト中に、
#!/bin/sh
SED=/bin/sed
PHASE=`echo "$script" | $SED -e 's%^.*/[^/]*-\(enter\|exit\)-.*/[^/]*$%\L\1\E%i'`
NSUPDATE=/usr/bin/nsupdate
...
echo "tako" > /tmp/ddns_update.log # ← 追加
...
echoした内容を、/tmp/ddns_update.log というファイルに落とすコマンドを追加しましたが、
DHCPでIP再取得できているのですが、ファイルが作成されず、全くスクリプト呼ばれていない事が分かりました。
そこで、/etc/dhcp/dhclient.conf をもう一度よーく確認したら
...
#script "/etc/dhcp3/dhclient-script";
...
となる行があり、これを有効にすれば正しく動作すると考えました。
yama@jpx20120007:/etc/dhcp3$ ls
./ ../ dhclient-enter-hooks.d/
なるディレクトリが既にあったので、この下のスクリプトを置き、DHCPでIP再取得したところ、グルグルと
IP再取得を行いつづけ、最終的には、IP取得に失敗します。
とこんな状況なのですが、他に確認するところがあればご教示下さい。
オフライン
#script "/etc/dhcp3/dhclient-script"; をアンコメントする必要はありませんが、お使いのディストリビューションが Linux Mint 12 なので、もしかすると dhclient がスクリプトを呼び出す動作がオリジナルの ubuntu とは少々異なっているのかもしれません
遅ればせながら Wikipedia で Linux Mint と ubuntu のバージョンの対応調べました (参考 Linux Mint - Wikipedia)
それによると Linux Mint 12 は ubuntu 11.10 がベースになっているようです
ここまでに提示した小生のアドバイスはすべて ubuntu 12.04 に関する内容なので、残念ながら Linux Mint 12 ではうまくいかないのかもしれません
Linux Mint 12 では少々異なるかもしれませんが、
#script "/etc/dhcp3/dhclient-script" とコメントアウトされているのは、ubuntu では dhclient-script が /etc/dhcp3 ディレクトリに置かれていないからです
which dhclient-scrip コマンドを実行すれば分かるように、dhclient-script は /sbin ディレクトリに配されています
この /sbin/dhclient-script の中で run_hookdir /etc/dhclient-enter-hooks.d "$@" のようにして、/etc/dhclient-enter-hooks.d と /etc/dhclient-exit-hooks.d ディレクトリのスクリプトを呼び出しています
このあたりも合わせて調査されてはいかがでしょう
オフライン