| 
       | 
       | 
    
    
       | 
      
       クラスレスネットワークにおけるdjbdnsの正しい使い方 その2 
       | 
       | 
    
    
       | 
       | 
       | 
    
    
       | 
      
       前準備 
       | 
       | 
    
    
       | 
       | 
       | 
    
    
       | 
      
        まず、dnsというユーザーグループを追加する。 
      groupadd dns 
      pw groupadd dns(FreeBSDの場合) 
      などで作る。 
      次に、ユーザーアカウントを3つ作る。 
      useradd -g dns Gtinydns 
      useradd -g dns Gdnslog 
      useradd -g dns Gdnscache 
      (FreeBSDの場合は、pw ......) 
      最後に、設定の入ったディレクトリーを作成する。 
      tinydns-conf Gtinydns Gdnslog /etc/tinydns IPアドレス1 
      dnscache-conf Gdnscache Gdnslog /etc/dnscache IPアドレス2 
      ここで、IPアドレス1、IPアドレス2は、絶対に同じにしないこと! 
      エラーなしで、暴走するのだ!私は、これで、元旦を(爆笑・・・殺されるかな?) 
      どちらかのIPをローカルにすることをお勧めする。 
      もっとも、IP公開が目的なら、IPアドレス1を、公開IPにしないとだめですね。 
      まあ、プロバイダーでもなければ、DNSキャッシュを外に出す必要は無いでしょう! 
      それから、1台のサーバーの中にいっぱいIPを持っている人は、 
      tinydns-conf Gtinydns Gdnslog /etc/tinydns2 IPアドレス3 
      dnscache-conf Gdnscache Gdnslog /etc/dnscache2 IPアドレス4 
      などで設定ディレクトリーを増やして、さらに起動するデーモンを増やせば、幾らでもできる。 
      注意:BINDの様に1プロセスで、複数IPは出来ない。(data.cdbの共有は、出来るらしいが) 
       
       | 
       | 
    
    
       | 
       | 
       | 
    
    
       | 
      
       起動する 
       | 
       | 
    
    
       | 
       | 
       | 
    
    
       | 
      
        その前に、BINDを動かしてる人は、速やかに、止める!起動しなくする。(これが、賢明だ!) 
      Linux は、/etc/rc.d/rcX.dの中のSXXnamed、KXXnamedを消す。 
      Solarisは、/etc/named.conf を消す。 
      FreeBSDは、/etc/rc.conf のnamed_enable="NO" 
      念のためリブート。 
      ps -ax|grep named 
      などで見て、namedが、無ければ成功。 
      (ここで、注意:dnscacheの rootキャッシュファイルが古いので、更新する。 
      2017年10月24日版は、ここ。 
      これを、/etc/dnscache/root/servers の@と取り替える) 
       起動の仕方、これが、また変わっている。 
      /service 
      に、シンボリックリンクを作って、5秒待つ! 
      ln -s /etc/tinydns /service/. 
      ln -s /etc/dnscache /service/. 
      sleep 5 
      これで、起動する。 
      svstat /service/tinydns 
      svstat /service/dnscache 
      で、何れも "up" と出ていれば成功! 
      DNSキャッシュの方で、 
      cd /etc/dnscache/root/ip 
      と入って、使用を許可するIPアドレスの名前のファイルを作成する。 
      touch 127.0.0.1 
      touch 192.168.0 
      touch 192.168.1 
      touch 219.166.53.194 
      などとする。 
      これで、キャッシュは、十分動く。 
      /etc/resolv.confに nameserver IPアドレス2 と書けば、もう使える。 
      注意:nslookupは、このままでは、使えない。どうしても使いたい場合は、IPアドレス2を 
          正引き、逆引きともに、DNSに登録すること。(以下参照) 
      そうそう、resolv.conf には、扱うドメイン名も書く。 
      こんな風に。 
      search hasiru.net lenin.jp 
      ここで、dnscacheの便利な使い方として、 
      cd /etc/dnscache/servers 
      に入って、ドメイン名、マシン名、逆引き名、などでファイルを作り、内容に、参照するDNSのIPアドレスを 
      記述することで、独自の名称解決を追加できる。 
      これで、ローカルマシンの名称解決を外に公開することなく、同じキャッシュに追加できる。 
      例: 
      0.168.192.in-addr.arpa 内容 127.0.0.1 
      (127.0.0.1にローカルマシン用逆引きのDNSサーバーを作ったとき) 
      local.net 内容 192.168.0.2 
      (local.net というドメイン名は、192.168.0.2のDNSサーバーを参照する) 
       | 
       | 
    
    
       | 
       | 
       | 
    
    
       | 
      
       tinydnsの設定 
       | 
       | 
    
    
       | 
       | 
       | 
    
    
       | 
      
        いよいよ、これからが、本番だ! 
      クラスレスでアドレスを公開するための設定を行おう! 
      まず、 
      cd /etc/tinydns/root 
      で中に入る。 
      ここで、多くのdjbdnsの解説書では、./add-ns ./add-host ・・・・・などを使えとあるが、 
      私は、断言する!(小さめの声で)それらは、バグってるから使えない・・・・・(し、死ぬのか) 
      vi data 
      などとやって、dataファイルの内容を手動で書こう!(後日、自動化スクリプトを作成したいが) 
       
      1)まず、上位のDNSに登録したネームサーバの設定を書く。 
      Z で始まるのが、SOAの定義、&で始まるのがネームサーバの定義だ。 
      注意:多くの解説書で、推奨されている、. から始まる行は、使わない。(djbにRIPEと言われた人がいた?) 
          これを、使うと逆引きで、大変みょーーーーーーーな連絡先を作ってくれるのだ! 
      まず、SOAの定義は、 
      Zhasiru.net:ns.hasiru.net:admin.hasiru.net:2002031501:7200::::2560 
      の様に書く。 
      複数のドメインを扱う場合は、その数だけ書く、 
      Zlenin.jp:ns.hasiru.net:admin.lenin.jp:2002031501:7200::::2560 
      の様に。 
      Zに続いて、ドメイン名、プライマリーネームサーバー名、連絡先アドレスの@を.に変えたもの、 
      シリアル番号、リフレッシュ秒数、リトライ回数、有効期間、最低有効期間、TTLの値。 
      シリアル番号以下は、省略でき、適当なデフォルト値になる。 
      注意:シリアル番号を省略しない場合は、設定を変更するごとに、値を増やすこと、 
          通常 年月日XX にするらしいが、カウントアップされていれば良い。(ただし10桁以内) 
      次にネームサーバーの定義は、 
      &hasiru.net:219.166.53.194:ns.hasiru.net:259200 
      &hasiru.net:219.166.53.195:ns2.hasiru.net:259200 
      という具合に書く。 
      説明すると、初めのが、ドメイン名、次がDNSのIPアドレス、 
      それから、登録してあるDNSの名前(注意:ちゃんと届けた名前にする)、TTL(有効期限の秒数) 
      TTLは、省略して良い。(自動的に適当な値が設定される) 
       
      ここで、注意! 
      プロバイダーなどの外のDNSを書く場合は、IPアドレスを書かない(書くとさらし者に・・・・怖い)。 
      &hasiru.net::dns1.ocn.ne.jp:259200 
      なんて、具合に。 
      また、1つのDNSに複数のドメインを持たせるときも、2つ目からは、IPアドレスを書いてはいけない。 
      &lenin.jp::ns.hasiru.net:259200 
      の様に(これも、間違えると某団体のさらし者に・・・・・・間違えやすいんだけど・・トラップ1)。 
       
      2)貰ったIPアドレスの逆引きのDNSの設定を書く。 
      Z192.53.166.219.in-addr.arpa:ns.hasiru.net:admin.hasiru.net:2002031501:7200::::2560 
&192.53.166.219.in-addr.arpa::ns.hasiru.net:259200 
&192.53.166.219.in-addr.arpa::ns2.hasiru.net:259200 
      の様に書く。1)とほば同様。IPアドレスは、書かない。 
      初めの部分は、本当はプロバイダーによって違うんだけれど、ネットワークアドレスを逆に書くのが 
      殆どらしい。 
      (中には、192-199.53.166.219.in-addr.arpaというのもあるらしい) 
      これを調べるには、 
      dnsqr any 194.53.166.219.in-addr.arpa 
      などと、打ってみる。 
      answer: 194.53.166.219.in-addr.arpa 73980 CNAME 194.192.53.166.219.in-addr.arpa 
      などと、返ってきたら、ネットワークアドレスの逆書きで、登録されている。 
      ネットワークアドレスとは、早い話、貰ったIPアドレスの一番初めのアドレス。 
      これを逆に書いて、.in-addr.arpaを付ける。 
      そしてIPの部分は書かない。あとは、1)と同様。 
      ところで、djbdnsで、逆引きを委譲されている場合は、書き方が違うのだが、 
      ユーザーにdjbdnsを使うことを強要するようなものなので、まずはやっていない・・・と思うよ。 
       
      3)自分の管理しているIPアドレスの名前を定義する。 
      +ip1.hasiru.net:219.166.53.192:86400 
      +srv1.hasiru.net:219.166.53.194:86400 
      +www.hasiru.net:219.166.53.194:86400 
      +lenin.jp:219.166.53.194:86400 
      +srv2.hasiru.net:219.166.53.195:86400 
      +www2.hasiru.net:219.166.53.195:86400 
      +srv2.lenin.jp:219.166.53.195:86400 
      などと、書いていく。 
      +に続いて、ホストの名前、IPアドレス、TTLの値。 
      ここで、先ほど使ったDNSは、書いてはいけない。(トラップ2 爆笑) 
      また、djbを初め、多くの人が、間違っているが、 
      クラスレスでは、 
      ./add-host 
      を使って生成される、 
      =から始まる行は、書いてはいけない。(大山オリジナル) 
      クラスC相当の嘘の逆引きが、自動的に出来てしまうから! 
      おっと、djbdnsで委譲されているときは、それで良いのだからまんざら嘘でもないのか。 
      もちろん同一の行があっては、いけないが、同じIPアドレスは、何度でも使える。 
       
      4)自分が管理しているIPアドレスの逆引きを定義する。 
      ^194.192.53.166.219.in-addr.arpa:ns.hasiru.net:86400 
      ^195.192.53.166.219.in-addr.arpa:ns2.hasiru.net:86400 
      ^196.192.53.166.219.in-addr.arpa:srv3.hasiru.net:86400 
      の様に書く。 
      ^に続いて、IPアドレスの最後の部分、さっきDNSで定義したネットワークアドレスを逆にしたものなど、 
      .in-addr.arpa、逆引きを設定したい名前、TTLの値。 
      逆引きは、必ずしも付ける必要は無いが、登録したDNSの位は、付けよう。 
      また、各IPに1つ位は、付けてやろう。(さっき名前を定義したものだけですが) 
      ここで、これは、ちょっと自信がないのだが、 
      次説明するMXレコードで定義した名前も逆引きを定義しないと、一部で文句を言われるらしい。 
      PTRが、重複してしまうが、 
      ^194.192.53.166.219.in-addr.arpa:ml.hasiru.net:86400 
      ^195.192.53.166.219.in-addr.arpa:ml2.hasiru.net:86400 
      私は、こんな感じで、書いている。 
      !ここで、IP1個だけを、貰っている人、または、NAT、マスカレードなどで、全てのIPを使いたい人へ、 
      初めの1つ目のアドレスの逆引きだけは、 
      ^192.53.166.219.in-addr.arpa:ip1.hasiru.net:86400 
      の様に書くこと! 
       
      5)MXレコードを定義する。 
      MXレコードとは、メールを送受信するアドレスを指定するための定義だ。 
      @hasiru.net:219.166.53.194:ml.hasiru.net::86400 
      @srv1.hasiru.net::ml.hasiru.net::86400 
      @lenin.jp:219.166.53.194:ml1.lenin.jp::86400 
      @srv1.lenin.jp::ml1.lenin.jp::86400 
      @srv2.hasiru.net:219.166.53.195:ml2.hasiru.net:10:86400 
      @www2.hasiru.net::ml2.hasiru.net:10:86400 
      @srv2.lenin.jp:219.166.53.195:ml2.lenin.jp:10:86400 
      @www2.lenin.jp::ml2.lenin.jp:10:86400 
      の様に書く。 
      @に続いて、メールアドレスの@以下を書き、メールサーバのIPアドレスを書き、メールサーバの名前を 
      書き、優先順位、TTLの値を書く。 
      優先順位は、省略すると0になる。 
      これは、1つのメールアドレスが受信するサーバを複数設定したときに、優先される順番だ。 
      ここで、また注意。(トラップ3 大爆笑) 
      同じメールサーバー名が現れるところでは、IPアドレスを書いてはいけない。(さらし者に・・・・) 
      もっとも、この法則が、分かれば、結構自由に、メールを操れて楽しいが。 
      メールサーバのアドレスは、3)の定義に書いては、いけない。 
      おっと、書いてしまった場合は、IPアドレスを書かなければ良いのか。 
       
      そうか、良いアイデアだ! 
      アドレスのトラップから逃れるために、IPアドレスは、全て 
      + で定義すれば良いんだ! 
       
      以上で、おわり、どうです、簡単でしょう・・・・・・・・・・・・(微妙な苦笑) 
       
       | 
       | 
    
    
       | 
       | 
       | 
    
    
       | 
      
       前へ  次へ 
       | 
       | 
    
    
       | 
       | 
       |