投稿日:2003年04月21日 作成鷹の巣

No.9729 BIND9のLAN内用DNSサーバーで、一つのホスト名が名前解決できない。



BIND9のLAN内用DNSサーバーで、一つのホスト名が名前解決できない。

No.9729 投稿時間:2003年04月21日(Mon) 17:32 投稿者名:chisato URL:

よろしくお願い致します。

RedHat8でbind-9.2.1-9を使用しています。
DDNSでhoge.dyndns.netというドメインを取得しました。

ADSLモ
|
(ppp0)
RH8(eth2 192.168.1.1)─(eth0 192.168.1.105)vine2.5
(eth0)
|
|─(eth0 192.168.0.33)TurboLinuxW8
|
(192.168.0.89)
Win2k

という風にしています。
RH8のeth2…host2.hoge.dyndns.net
RH8のeth0…host0.hoge.dyndns.net
vine2.5のeth0…foo.hoge.dyndns.net
Win2k…hoe.hoge.dyndns.net
TurboLinuxW8のeth0…some.hoge.dyndns.net

にしています。

/var/named/hoge.dyndns.net.hostsには
$ttl 38400
hoge.dyndns.net. IN SOA hoge.dyndns.net. root.hoge.dyndns.net (
1049359658
10800
3600
604800
38400 )
hoge.dyndns.net. IN NS hoge.dyndns.net.
host0.hoge.dyndns.net. IN A 192.168.0.1
hoe.hoge.dyndns.net. IN A 192.168.0.89
host2.hoge.dyndns.net. IN A 192.168.1.1
foo.hoge.dyndns.net. IN A 192.168.1.105
some.hoge.dyndns.net. IN A 192.168.0.33

と記述していまして、内部ホストから
$ nslookup host0.hoge.dyndns.net
$ nslookup foo.hoge.dyndns.net
$ nslookup hoe.hoge.dyndns.net
とかして各ホストの正引きできます。逆引きもできます。勿論、外部ホストの名前解決もできます。

ただ、hoge.dyndns.netの名前解決をしようとすると

$ nslookup hoge.dyndns.net
Server: 127.0.0.1
Address: 127.0.0.1#53
*** Can't find hoge.dyndns.net: No answer

となってしまいます。

因に
/var/named/192.168.revには
$ttl 38400
168.192.in-addr.arpa. IN SOA localhost. root.hoge.dyndns.net (
1049368246
10800
3600
604800
38400 )
168.192.in-addr.arpa. IN NS localhost.
1.0.168.192.in-addr.arpa. IN PTR host0.hoge.dyndns.net.
89.0.168.192.in-addr.arpa. IN PTR hoe.hoge.dyndns.net.
1.1.168.192.in-addr.arpa. IN PTR host2.hoge.dyndns.net.
105.1.168.192.in-addr.arpa. IN PTR foo.hoge.dyndns.net.
33.0.168.192.in-addr.arpa. IN PTR some.hoge.dyndns.net.

/var/named/localhost.zoneには
$TTL 86400
$ORIGIN localhost.
@ 1D IN SOA @ root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum

1D IN NS @
1D IN A 127.0.0.1

/etc/resolve.confには
nameserver 127.0.0.1

/etc/sysconfig/networkには
NETWORKING=yes
GATEWAY=""
GATEWAYDEV=eth1
HOSTNAME=hoge.dyndns.net

と記述しています。

色々と考えた挙句、
Can't findになるのならと思いまして、DDNSのドメインdyndns.netの
IPアドレスxxx.xxx.xxx.xxxを
/etc/named.confに
forward first;forwarders {xxx.xxx.xxx.xxx;};

と記述してリブートして上手くいくかと期待したのですが相変わらず
Can't findになってしまいます。

どうすればppp0(hoge.dyndns.net)の名前解決を内部ホストから行なう事が出来るように
する事ができるのでしょうか?


DDNSのサブドメイン名でアクセスしたいという事でしょうか?

No.9733 投稿時間:2003年04月21日(Mon) 19:26 投稿者名:wallabyss URL:http://www.kolinahr.net/

		; Name Server
		IN     NS     ns.hogehoge.com.

		; Address
@		IN	A	123.456.0.2 <- hogehoge.comでのアクセス

ns		IN	A	123.456.0.1
www		IN	A	123.456.0.2
ftp		IN	A	123.456.0.3

で、hogehoge.comで、123.456.0.2にアクセスしたいという事でしょうか?


グローバルアドレスを求めたいのですか

No.9737 投稿時間:2003年04月21日(Mon) 19:57 投稿者名:OAK URL:

> どうすればppp0(hoge.dyndns.net)の名前解決を内部ホストから行なう事が出来るように
> する事ができるのでしょうか?

hoge.dyndns.net のグローバルアドレス解決をしたいと言う事でしょうか

方法1.
@ IN A でアドレスを書く。これをdyndnsのアドレス更新と同時にBINDのDDNS機能を使って更新する

方法2.
zone を4thドメイン(こう言う言い方は正しくないでしょうが)ごとに作る
hoge.dyndnsでまとめて作らず
host0.hoge.dyndns host1.hoge.dyndns host2.hoge.dyndns
をそれぞれ別ファイルで作る(それぞれにSOAをつくる)


OAKさんの方法でできますね。

No.9805 投稿時間:2003年04月24日(Thu) 10:14 投稿者名:wallabyss URL:http://www.kolinahr.net/

なるほど、OAKさんの方法でできますね。
中と外が混在している感じでヘンな感じがしますが。


ネームサーバーのIPアドレスがAレコードで未定義。

No.9741 投稿時間:2003年04月21日(Mon) 21:28 投稿者名:鷹の巣 URL:http://sakaguch.com/

> RedHat8でbind-9.2.1-9を使用しています。
> DDNSでhoge.dyndns.netというドメインを取得しました。
> 
> /var/named/hoge.dyndns.net.hostsには
> $ttl 38400
> hoge.dyndns.net. IN SOA hoge.dyndns.net. root.hoge.dyndns.net (
>    1049359658
>    10800
>    3600
>    604800
>    38400 )
> hoge.dyndns.net. IN NS hoge.dyndns.net.

hoge.dyndns.net. IN A (BIND9の入っているプライベートアドレス)
の行を追加して下さい。

> host0.hoge.dyndns.net. IN A 192.168.0.1
> hoe.hoge.dyndns.net. IN A 192.168.0.89
> host2.hoge.dyndns.net. IN A 192.168.1.1
> foo.hoge.dyndns.net. IN A 192.168.1.105
> some.hoge.dyndns.net. IN A 192.168.0.33

> 勿論、外部ホストの名前解決もできます。

そのように見えているだけで、これはLAN内だけです。
LAN内だけですから、試しにhoge.dyndns.net.をchisato.jp.に文字列を置換しても結果は同じになります。
ただし、インターネット上で使用されているchisato.jpのサイトにアクセスしようとすると自サイトにアクセスします。

> ただ、hoge.dyndns.netの名前解決をしようとすると
> *** Can't find hoge.dyndns.net: No answer

一番肝心のネームサーバー(hoge.dyndns.net.)のIPアドレスがAレコードで定義されていませんね。

> Can't findになるのならと思いまして、DDNSのドメインdyndns.netの
> IPアドレスxxx.xxx.xxx.xxxを
> /etc/named.confに
> forward first;forwarders {xxx.xxx.xxx.xxx;};

LAN内用のDNSサーバーで名前がプライベートアドレスに解決できない場合は、
インターネット上のDNSサーバーへ名前解決をforward(振向け)しても解決できません。

> どうすればppp0(hoge.dyndns.net)の名前解決を内部ホストから行なう事が出来るように
> する事ができるのでしょうか?

基本的には、Aレコードでの定義で解決します。
LAN内用ですから、RH8(eth2 192.168.1.1)でTCP/UDP53番ポートは、しっかり閉めておいて下さい。

ダイナミックDNSのdyndns.netでは、サブドメインは、ホスト名であると考えた方が良さそうです。
インターネット用のDNSサーバーとするためには、
1.dyndns.netのNSレコードで、自サイトのDNSサーバーのhoge.dyndns.netが定義できること。
2.dyndns.netのAレコードで、自サイトのDNSサーバーのhoge.dyndns.netのグローバルアドレスが定義できること。
が最低でも必要になります。
あまり意味はないのですが、非固定IPアドレスの独自ドメイン名であれば、
HAMMERNODEやzoneeditでは、出来るかもしれません。


動的なIPアドレスなので直接NSレコードにグローバルアドレスが書けない。

No.9803 投稿時間:2003年04月24日(Thu) 01:42 投稿者名:chisato URL:

皆様、ご回答大変ありがとうございました。

> hoge.dyndns.net のグローバルアドレス解決をしたいと言う事でしょうか
はい、そうです。でも動的なIPアドレスなので直接
/var/named/hoge.dyndns.net.hostsに
「hoge.dyndns.net. IN NS xxx.xxx.xxx.xxx」
という形に記述できずにどう記述するのかわからずにいるのです。

> 方法1.
> @ IN A でアドレスを書く。これをdyndnsのアドレス更新と同時にBINDのDDNS機能を
> 使って更新する
えーと、これはDHCPクライアントのIPアドレスを動的に更新する機能の事ですね。

/etc/nsupdate.shというスクリプトを作成してみました。内容は
export LANG=C;export LC_ALL=C;ADDRS=`/sbin/ifconfig -a | awk '/^ppp0/{f=1}f==1 &&/inet addr/{sub(".*:","",$2);print $2;f=0;exit}'`;echo $ADDRS
prereq yxrrset hoge.dyndns.net. IN A
update delete hoge.dyndns.net. IN A
update add hoge.dyndns.net. 600 IN $ADDS

という風に記述して(最初はppp0のグロアドをADDRSという変数に代入している)、最後に空行を入れる、
/etc/named.confに
zone "hoge.dyndns.net" {
type master;
file "hoge.dyndns.net";
allow-update {
???.???.???.???;
};
};

を記述すればいいのですかね。でも最後のアドレス???.???.???.???は
どう記述したらいいのでしょうか?
0.0.0.0/0とするのはまずいですよね。
今、ppp0(hoge.dyndns.net)のアドレスはifconfigで見たら43.244.xxx.xxx
dyndns.netはnslookupでは66.151.yyy.yyy
というアドレスになっているのですが。

>> RedHat8でbind-9.2.1-9を使用しています。
>> DDNSでhoge.dyndns.netというドメインを取得しました。
>> /var/named/hoge.dyndns.net.hostsには
>> $ttl 38400
>> hoge.dyndns.net. IN SOA hoge.dyndns.net. root.hoge.dyndns.net (
>> 1049359658
>> 10800
>> 3600
>> 604800
>> 38400 )
>> hoge.dyndns.net. IN NS hoge.dyndns.net.
> hoge.dyndns.net. IN A (BIND9の入っているプライベートアドレス)
> の行を追加して下さい。
このプライベートアドレスは
192.168.0.1(host0.hoge.dyndns.netと同じ)を指定すればいいのか、192.168.1.1(host2.hoge.dyndns.netと同じ)を指定すればを悩むのですがどちらでもいいのでしょうか?

>> host0.hoge.dyndns.net. IN A 192.168.0.1
>> hoe.hoge.dyndns.net. IN A 192.168.0.89
>> host2.hoge.dyndns.net. IN A 192.168.1.1
>> foo.hoge.dyndns.net. IN A 192.168.1.105
>> some.hoge.dyndns.net. IN A 192.168.0.33
>> 勿論、外部ホストの名前解決もできます。
> そのように見えているだけで、これはLAN内だけです。
ん? これはどういう意味ですか。
外部ホストの名前解決が出来ているようで実は出来ていないという事ですか。

>> ただ、hoge.dyndns.netの名前解決をしようとすると
>> *** Can't find hoge.dyndns.net: No answer
> 一番肝心のネームサーバー(hoge.dyndns.net.)のIPアドレスがAレコードで定義され
> ていませんね。
そうですね。上述しました通り、どちらのプライベートアドレスを指定すればいいのか分からなかったのです。

>> Can't findになるのならと思いまして、DDNSのドメインdyndns.netの
>> IPアドレスxxx.xxx.xxx.xxxを
>> /etc/named.confに
>> forward first;forwarders {xxx.xxx.xxx.xxx;};
> LAN内用のDNSサーバーで名前がプライベートアドレスに解決できない場合は、
> インターネット上のDNSサーバーへ名前解決をforward(振向け)しても解決できませ
> ん。
これはどうしてなのですか。forwardを許可しないという事なのでしょうか?

>> どうすればppp0(hoge.dyndns.net)の名前解決を内部ホストから行なう事が出来るように
>> する事ができるのでしょうか?
> 基本的には、Aレコードでの定義で解決します。
> LAN内用ですから、RH8(eth2 192.168.1.1)でTCP/UDP53番ポートは、しっかり閉めて
> おいて下さい。
そうしますと、foo.hoge.dyndns.netはRH8のDNSサーバを利用できなくなってしまうのではないですか?

> ダイナミックDNSのdyndns.netでは、サブドメインは、ホスト名であると考えた方が
> 良さそうです。
hoge.dyndns.netの事ですね。


分からない事ばかりでお手数をお掛けしてすいません。


キーワードは「中と外を別に考える」という事じゃないかと思います。

No.9804 投稿時間:2003年04月24日(Thu) 10:03 投稿者名:wallabyss URL:http://www.kolinahr.net/

問題がわかってきました。
キーワードは「中と外を別に考える」という事じゃないかと思います。

・このDNSサーバは内部用のDNS

みんな、の一致した意見は、hoge.dyndns.netを解決したいのに、「hoge.dyndns.net. IN A XXX.XXX.XXX.XXX」が書かれていない。これを書いてください。というところです。
それに対して、chisatoさんは、hoge.dyndns.netはDYNDNS社で行っているから何もしない。forwadで外に解決を向けた。(何故forwadしようとしたのか、なかなか気づけなかったです。)
ここで、中から見るのと外から見るのを別に考えてください。という事です。
いろいろありそうなので、1つづつステップを踏むのが良さそうですね。とりあえず、

>> hoge.dyndns.net. IN A (BIND9の入っているプライベートアドレス)
>> の行を追加して下さい。
>このプライベートアドレスは
>192.168.0.1(host0.hoge.dyndns.netと同じ)を指定すればいいのか、192.168.1.1(host2.hoge.dyndns.netと同じ)を指定すればを悩むのですがどちらでもいいのでしょうか

どちらでも良いので(IPが届けば、同じサーバを指していますし)、やってみるとどうなりますか。期待通りに動けば問題ありです。


「hoge.dyndns.net. IN NS 192.168.0.1」と書換えnamedデーモンをリスタートしてみましたが...。

No.9807 投稿時間:2003年04月24日(Thu) 11:39 投稿者名:chisato URL:

おはようゴザイマス。ご回答ありがとうございます。

> みんな、の一致した意見は、hoge.dyndns.netを解決したいのに、
> 「hoge.dyndns.net. IN A XXX.XXX.XXX.XXX」が書かれていない。これを書いてくだ
> さい。というところです。
XXX.XXX.XXX.XXXをプラアドで記述すればhoge.dyndns.netをグロアドで解決できるのですかね。

>>> hoge.dyndns.net. IN A (BIND9の入っているプライベートアドレス)
>>> の行を追加して下さい。
>>このプライベートアドレスは
>>192.168.0.1(host0.hoge.dyndns.netと同じ)を指定すればいいのか、
> 192.168.1.1(host2.hoge.dyndns.netと同じ)を指定すればを悩むのですがどちらでも
> いいのでしょうか
> どちらでも良いので(IPが届けば、同じサーバを指していますし)、やってみるとどう
> なりますか。期待通りに動けば問題ありです。
早速、/var/named/hoge.dyndns.net.hostsを
「hoge.dyndns.net. IN NS hoge.dyndns.net.」

「hoge.dyndns.net. IN NS 192.168.0.1」

と書換えnamedデーモンをリスタートしてみましたが
$ nslookup hoge.dyndns.net
Can't find hoge.dyndns.net to answer

となってしまいます。

$ nslookup dyndns.net
はNon-authoritive answerでの名前解決です。

更に/etc/named.confに
forward first;forwarders {xxx.xxx.xxx.xxx;};
を記述してリスタートした場合にも、

$ nslookup hoge.dyndns.net
Can't find hoge.dyndns.net to answer

となってしまいました。
うーん、如何でしょうか?


NSはネームサーバの意味で、Aはアドレスの意味です。

No.9808 投稿時間:2003年04月24日(Thu) 12:27 投稿者名:wallabyss URL:http://www.kolinahr.net/

>「hoge.dyndns.net. IN NS 192.168.0.1」

NS でなく A です。
NSはネームサーバの意味で、Aはアドレスの意味です。

例えば、wwwを指定しないでも飛べるように、

yapoo.com. IN A 256.168.0.1
www.yapoo.com. IN A 256.168.0.1

みたいに両方アドレスを指定することも最近のはやりだったりしました。


結果はグローバルアドレスではなく、プライベートアドレスになってしまいます。

No.9809 投稿時間:2003年04月24日(Thu) 15:23 投稿者名:chisato URL:

ご回答ありがとうございます。

>>「hoge.dyndns.net. IN NS 192.168.0.1」
> NS でなく A です。
> NSはネームサーバの意味で、Aはアドレスの意味です。
> 例えば、wwwを指定しないでも飛べるように、
> yapoo.com. IN A 256.168.0.1
> www.yapoo.com. IN A 256.168.0.1
> みたいに両方アドレスを指定することも最近のはやりだったりしました。
そうしますと、

/var/named/hoge.dyndns.net.hostsを
$ttl 38400
hoge.dyndns.net. IN SOA hoge.dyndns.net. root.hoge.dyndns.net (
1049359658
10800
3600
604800
38400 )
hoge.dyndns.net. IN NS hoge.dyndns.net.
hoge.dyndns.net. IN A 192.168.0.1
host0.hoge.dyndns.net. IN A 192.168.0.1
hoe.hoge.dyndns.net. IN A 192.168.0.89
host2.hoge.dyndns.net. IN A 192.168.1.1
foo.hoge.dyndns.net. IN A 192.168.1.105
some.hoge.dyndns.net. IN A 192.168.0.33

とすればよいという事ですか。
そうしますと
$ nslookup hoge.dyndns.net
の結果はグロアドではなく、192.168.0.1になってしまいますが。。。



繰返しかもしれませんが
$ nslookup hoge.dyndns.net
の結果がppp0と同じIPアドレスになるようにしたいのです。


外部から見たのと同じように内部からも見えるようにDNSで名前解決をしたいのですか。

No.9810 投稿時間:2003年04月24日(Thu) 16:12 投稿者名:wallabyss URL:http://www.kolinahr.net/

>繰返しかもしれませんが
>$ nslookup hoge.dyndns.net
>の結果がppp0と同じIPアドレスになるようにしたいのです。

すみません。
「$ nslookup hoge.dyndns.netの結果をグローバルアドレスにしたい」という結果を期待しているのならOAKさんが書かれた方法でできると思いますよ。

「hoge.dyndns.netを外部から見たのと同じように内部からも見えるようにDNSで名前解決をしたい。」という事と読んでステップを踏もうと思ったのですが・・(仮想IPを割り当てるか、別名か・・)。これは一見同じようで少し違う。グローバルIPをDNSに設定する方法は、ローカルのためのDNSが外部から参照される事になり、セキュリティーホールにならないかな?と心配したのです。それでは、OAKさんの方法を試してみてください。


まずはLAN内用のDNSサーバーを稼動させて下さい。

No.9816 投稿時間:2003年04月24日(Thu) 23:54 投稿者名:鷹の巣 URL:http://sakaguch.com/

> RedHat8でbind-9.2.1-9を使用しています。
> DDNSでhoge.dyndns.netというドメインを取得しました。

chisatoさん、この内容からして、非固定のグローバルアドレスですよね。
非固定のグローバルアドレスでは、LAN内用のDNSサーバーしか稼動させてはいけません。

2003年04月24日に「レジストラGKGでのドメイン名の継続延長手続き」
http://sakaguch.com/SetGKGrenew.html <--- 読む必要はありません。
を作成したついでに「レジストラGKGでの自前DNSサーバーの新規登録方法」
http://sakaguch.com/SetGKGdnsReg.html <--- 一度、読んで下さい。
を作成しました。

インターネット用のDNSサーバーを稼動されるのでしたら、独自ドメインの固定のグローバルアドレスとして下さい。
そして、インターネット上でドメイン名の名前が解決される仕組みをご理解して下さい。
http://sakaguch.com/DNSseibiki.html
http://sakaguch.com/nslookupNor.html

そして、まずはLAN内用のDNSサーバーを下記のサイトをご参考に稼動させて下さい。
http://www.kkoba.com/dns/


固定IPアドレスが必要なのですね。

No.9949 投稿時間:2003年05月05日(Mon) 14:02 投稿者名:chisato URL:

返答が遅くなりまして申し訳有りません。

> 「$ nslookup hoge.dyndns.netの結果をグローバルアドレスにしたい」という結果を
> 期待しているのならOAKさんが書かれた方法でできると思いますよ。

試行錯誤していますがなかなか上手く行きません。

> chisatoさん、この内容からして、非固定のグローバルアドレスですよね。
> 非固定のグローバルアドレスでは、LAN内用のDNSサーバーしか稼動させてはいけませ
> ん。
そうでしたか。

> 2003年04月24日に「レジストラGKGでのドメイン名の継続延長手続き」
> http://sakaguch.com/SetGKGrenew.html <--- 読む必要はありません。
> を作成したついでに「レジストラGKGでの自前DNSサーバーの新規登録方法」
> http://sakaguch.com/SetGKGdnsReg.html <--- 一度、読んで下さい。
> を作成しました。
固定IPが必要なのですね。
安いところがあれば取得してみたいと思います。


|目次|掲示板|過去ログ目次|▲頁先頭|