#stub

設定がイマイチよくわからないネームサーバ(bind).設定した先輩はとうの昔に卒業していて,でももう古いサーバはリプレースした.
これを機に新しいドメイン名に変更したい
そうやって安易にネームサーバを変更すると,ドツボにハマります.個人的にハマった経歴を晒すページ
あと,大学の研究室向けの情報って意外にないもので,一般的なサーバに対する情報が殆ど
それを大学の研究室の場合に置き換えて読もうとしても,「うちの研究室の場合,ここどうするの!?」と訳が分からなくなる場合が多々あった.

概要

  • ネームサーバは研究室で勝手に変更すると,大体大問題になる
  • ネームサーバってのは免許みたいなもので,
    • 免許を持ってる(ネームサーバを有している) のと
    • 本当に運転できる(ネームサーバの設定を変更する) のとでは
    • わけが全然違う
  • 殆どの場合,ネームサーバの変更とは,崖の上の雪道を免許取りたてのドライバーが運転してるようなもの

前提

  • ネームサーバは公開してる情報とは言え,むやみにネットワーク情報を晒すのもよくないと思うので,
  • 研究室のドメイン名 lab.department.university.ac.jp
  • 研究室のネームサーバ ns.lab.department.university.ac.jp
  • IPレンジ 333.222.111.0/24 *1
  • とするので,読む人は自分の環境に合わせてIPアドレスや名前を置き換えて下さい

正引き

正引きとは

  • www.lab.department.university.ac.jp -> 333.222.111.2 という具合にFQDNをIPアドレスに変換する作業
  • この対応付けの表をもってるのがネームサーバ.
  • 古いネームサーバから新しいネームサーバに移行する際,新旧両方のネームサーバを生かしてると大体の場合よいことにならない

勝手に古いネームサーバを落とすと……

  • 何個か大学のネットワーク管理を見てきたけれど,
    • 大学全体のNS
    • 学部/学科単位のNS
    • 研究室単位のNS
  • と階層構造で管理を区切られてる場合が殆ど
  • この場合,上位のNS,つまり学部/学科で管理してるNSには,自研究室のネームサーバが登録されている
  • これを勝手に変えると,正しいクエリが新サーバに届かずに,旧サーバへ問い合わせが行き,ネットワーク上から研究室が消える
  • 一度消えると,メールのやり取りもできなくなるので,復旧に時間がかかって大変な事故になったりする.
  • (詳細を後日追記予定)

設定確認用スクリプト

  • 上位のサーバが分からなくても,大学の大本からたどればすぐに分かる
  • 辿るためのスクリプトを書いてみた
  • ファイル2つあるので,両方共同じフォルダに置くこと
  • それから各プログラムへのパスは適宜書き換えること
  • labdig.sh
    1. #!/bin/bash
    2. DIG=/usr/bin/dig
    3. GREP=/bin/grep
    4. CUT=/usr/bin/cut
    5. SED=/bin/sed
    6. ECHO=/bin/echo
    7. XARGS=/usr/bin/xargs
    8.  
    9. if [ $# -lt 2 ] ;
    10. then
    11.         $ECHO "Use as " $0 " domain school-domain"
    12.         exit
    13. fi
    14.  
    15. listNS(){
    16.         if [ $# -lt 2 ] ;
    17.         then
    18.                 exit
    19.         fi
    20.  
    21.         UPDOMAIN=`$ECHO $1 | $CUT -f 2- -d .`
    22.  
    23.         if [ -z "$UPDOMAIN" ] ;
    24.         then
    25.                 exit
    26.         fi
    27.  
    28.         if [ $1 != $2 ] ;
    29.         then
    30.                 listNS $UPDOMAIN $2
    31.                 UPDOMAIN=`$ECHO $1 | $CUT -f 2- -d .`
    32.                 $DIG $UPDOMAIN -t NS | $GREP ^$UPDOMAIN.*IN.NS | $SED -e s/\\t\\+/\\t/g | $SED -e s/\ /\\t/g | $CUT -f 5 | $SED -e s/^/@/g  | $XARGS -l1 ./mydig.sh $1
    33.         else
    34.                 $ECHO $2
    35.                 $DIG $1 -t NS        | $GREP ^$1.*IN.NS        | $SED -e s/\\t\\+/\\t/g | $SED -e s/\ /\\t/g | $CUT -f 5 | $SED -e s/^/\ /g
    36.         fi
    37. }
    38.  
    39. checkLastPeriod(){
    40.         if [ $# -lt 2 ] ;
    41.         then
    42.                 exit
    43.         fi
    44.  
    45.         CHECK=`$ECHO $1 | $GREP \\\.$`
    46.  
    47.         if [ -z "$CHECK" ] ;
    48.         then
    49.                 eval $2="${1}."
    50.         else
    51.                 eval $2="$1"
    52.         fi
    53. }
    54.  
    55. checkLastPeriod $1 A
    56. checkLastPeriod $2 B
    57.  
    58. listNS $A $B
  • mydig.sh
    1. #!/bin/bash
    2. DIG=/usr/bin/dig
    3. GREP=/bin/grep
    4. CUT=/usr/bin/cut
    5. SED=/bin/sed
    6. ECHO=/bin/echo
    7.  
    8. if [ $# -lt 2 ] ;
    9. then
    10.         $ECHO "Use as " $0 " domain nameserver"
    11.         exit
    12. fi
    13.  
    14. $ECHO $1 $2
    15. $DIG $1 -t NS $2 | $GREP ^$1.*IN.NS | $SED -e s/\\t\\+/\\t/g | $SED -e s/\ /\\t/g | $CUT -f 5 | $SED -e s/^/\ /g

使い方

  • 研究室のドメイン名と大学のドメイン名の2つを指定する
    ./labdig.sh lab.department.university.ac.jp university.ac.jp
  • こんな感じの出力が帰ってくる
    university.ac.jp.                                                 <--以下大学のドメインに関する情報
     ns0.university.ac.jp.                                            <--大学のネームサーバ1
     ns1.university.ac.jp.                                            <--大学のネームサーバ2
     ns2.university.ac.jp.                                            <--大学のネームサーバ3
    department.university.ac.jp. @ns0.university.ac.jp.               <--以下学科のドメインに関する情報
     ns.department.university.ac.jp.                                  <--学部/学科のネームサーバ1(大学のネームサーバ1からの返答)
     zeus.department.university.ac.jp.                                <--学部/学科のネームサーバ2(大学のネームサーバ1からの返答)
    department.university.ac.jp. @ns1.university.ac.jp.
     ns.department.university.ac.jp.                                  <--学部/学科のネームサーバ1(大学のネームサーバ2からの返答)
     zeus.department.university.ac.jp.                                <--学部/学科のネームサーバ2(大学のネームサーバ2からの返答)
    department.university.ac.jp. @ns2.university.ac.jp.
     ns.department.university.ac.jp.                                  <--学部/学科のネームサーバ1(大学のネームサーバ3からの返答)
     zeus.department.university.ac.jp.                                <--学部/学科のネームサーバ2(大学のネームサーバ3からの返答)
    lab.department.university.ac.jp. @ns.department.university.ac.jp. <--以下研究室のドメインに関する情報
     ns.lab.department.university.ac.jp.                              <--研究室のネームサーバ(学部/学科のネームサーバ1からの返答)
    lab.department.university.ac.jp. @zeus.department.university.ac.jp.
     ns.lab.department.university.ac.jp.                              <--研究室のネームサーバ(学部/学科のネームサーバ2からの返答)
  • 可視化してみるとこんな感じ
    ns-list.png
  • 下の方で,ns.lab.department.university.ac.jp.と返答してるサーバが上位のサーバ(この場合はns.department.university.ac.jp)
  • このリストにおいて,同じドメインに関する返答が,ドメイン内の全てのネームサーバから同じ返答が変えて来ないと事故のもと*2
  • (詳細を後日追記予定)

逆引き

  • 333.222.111.1 -> www.lab.department.university.ac.jp という具合にIPアドレスに対応するFQDNを返してくれるサーバ
  • 正引きは同じ名前に対して複数の番号をつけることができるが,逆引きは1つのアドレスに対して1つの名前しか着けられない
  • イメージとして,携帯電話の電話帳に近い
    • 携帯電話で同じ電話番号を複数の人に割り当てることが可能 (正引きの動作)
    • だが,実際電話がかかってきた場合画面に着信表示されるのは1人の名前だけ (逆引きの動作)
  • 正引きの設定で力尽きて逆引きの設定をおろそかにすると,やっぱり事故が起きる
  • (詳細を後日追記予定)

*1 当然こんなIPアドレスは存在しない
*2 こっそりいろんな研究室を覗いてみると,まぁ設定が合ってないこと合ってないこと

添付ファイル: filens-list.png 324件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-05-11 (金) 22:35:19 (2688d)