IT pass HikiWiki - [ITPASS2022]サーバ交換作業 (DNS) Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

{{toc_here}}

[((<[ITPASS2022]2022年度サーバ構築マニュアル>)) へ戻る]

= 作業内容

== phase 0
#準備

* サーバ交換中は Hiki 上のマニュアルを参照できなくなるため,
  作業者は予めサーバ交換マニュアルを手元に保存しておく.
  * サーバ交換マニュアルから引用されているページについても忘れないこと.
  * Hiki ページの印刷は推奨されない. 長いコマンドなどが切れてしまうため.


== phase 1

特に作業を行わない.


== phase 2

特に作業を行わない.


== phase 3

特に作業を行わない.


== phase 4

特に作業を行わない.

== phase 5
#tako, ika の交換: 設定ファイルの変更

=== ホスト名と IP アドレスの変更

各種設定ファイルに存在する,
ika と tako のホスト名と IP アドレスを入れ替える.
編集の際は元のファイルを hoge_old としてバックアップを取る.

* 担当
  * /usr: DNS 班

* ika と tako のホスト名を交換 (新 ika には ika, 新 tako には takoと書く)
  * /usr/local/bind/etc/namedb/localhost.zone
  * /usr/local/bind/etc/namedb/localhost.rev

  上記の場所以外にも古い名前が残っているかどうかを grep で確認する.
    # grep tako (または ika) /usr/*
    # grep tako (または ika) /usr/*/*
    # grep tako (または ika) /usr/*/*/*
    ...
  など.
  ファイルの編集をするときはエディタの検索機能を活用すると早く作業できる.
  ただし一括置換はホスト名とは関係ない文字列も置換してしまう恐れがあるので使わないこと.

  下記のようなコマンドを打つとディレクトリやバイナリファイルが表示されないため作業しやすい

    # export LC_ALL=C
    # grep -dskip tako (または ika) /usr/*/*/*/*/*/* |& grep -v "Is a directory"|& grep -v "matches"

  下記のコマンドを実行すると、ika を含む一般名詞の文字列も検索に上がったが, 本作業には無関係のため無視をした.

    # grep ika /usr/*/*/* |& grep -v "Is a directory"|& grep -v "matches"


  また, 以下のコマンドを実行すると、検索結果に先ほど localhost.* 編集した際に作られたlocalhost.*~ も含まれていた.
    # grep ika /usr/local/*/* |& grep -v "Is a directory"|& grep -v "matches"

* /usr/local/bind/etc/namedb/localhost.zone~
* /usr/local/bind/etc/namedb/localhost.rev~

これは一時ファイルなのでrm コマンドで削除した.


== phase 6

特に作業を行わない.


== phase 7
#サービスの設定変更

((*ここからホスト名が入れ替わっているので注意すること*)).
新, 旧はそれぞれ現構築メンバー, 昨年度の構築メンバーを意味する.


=== ika の DNS 関連の設定変更 (担当: 新 DNS 班)

* bind の設定変更

  * namedb のバックアップを作成する. (日付は適宜変更)
    * ((<[TEBIKI]サービスの開始・停止>)) を参考にする.

       root@ika-itpass:/usr/local/bind/etc
       $sudo cp -r namedb namedb-20221201

  * 以下のサービスが永続的に立ち上がるように設定する.
    * bind

       # systemctl enable bind9.service

  * /etc/resolv.conf の確認作業

    * /etc/resolv.conf を以下のようであることを確認する.

       nameserver 133.30.109.22
       search scitec.kobe-u.ac.jp

      これにより ika はフルサービスリゾルバになる.


== phase 8

特に作業を行わない.


== phase 9
#再起動後の動作確認

=== サービスの起動確認

ps aux コマンドで以下の確認作業を行う.

  $ ps aux | grep bind

* ika
  * bind が起動していることを確認.

     bind         686  0.0  0.3 1158704 116508 ?      Ssl  15:14   0:00
     /usr/local/bind/sbin/named -4 -f -u bind -c
     /usr/local/bind/etc/namedb/named.conf
     chikuwa3    8889  0.0  0.0   6356   640 pts/1    S+   15:41   0:00 grep bind


* tako
  * bind が起動して((*いない*))ことを確認.

     ichida21  3609  0.0  0.0   5408   704 pts/3    S+   15:44   0:00 grep bind

=== サービスの動作確認

==== ika

* ((*ssh*)): root ログインが禁止されているかを確認

tako から ika に root ログインを試みて, 拒否されることを確認する.



* ((*bind*)):問い合わせに応じるか, 正しいデータを返すかを確認

例えば, 下のコマンド

  $ ping dennou-k.gfd-dennou.org

に応答が返ってくれば良い.

   64 bytes from studenno.kugi.kyoto-u.ac.jp (130.54.59.159): icmp_seq=1 ttl=57 time=2.53 ms
   64 bytes from studenno.kugi.kyoto-u.ac.jp (130.54.59.159): icmp_seq=2 ttl=57 time=2.50 ms
   64 bytes from studenno.kugi.kyoto-u.ac.jp (130.54.59.159): icmp_seq=3 ttl=57 time=2.55 ms
ms ……

また,

  $ /usr/local/bind/bin/dig @133.30.109.22 www.google.com

でアドレスを引いてみると良い.

   ; <<>> DiG 9.16.34 <<>> @133.30.109.22 www.google.com
   ; (1 server found)
   ;; global options: +cmd
   ;; Got answer:
   ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23556
   ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

   ;; OPT PSEUDOSECTION:
   ; EDNS: version: 0, flags:; udp: 1232
   ; COOKIE: 9710e658935efcfe0100000063884bf295e13f2d40be5b98 (good)
   ;; QUESTION SECTION:
   ;www.google.com.                        IN      A

   ;; ANSWER SECTION:
   www.google.com.         265     IN      A       142.250.206.228

   ;; Query time: 0 msec
   ;; SERVER: 133.30.109.22#53(133.30.109.22)
   ;; WHEN: Thu Dec 01 15:38:42 JST 2022
   ;; MSG SIZE  rcvd: 87

==== tako

* ((*ssh*)): root ログインが禁止されているかを確認

ika から tako に root ログインを試みて, 拒否されることを確認する.

* ((*DNS*)) (bind は立ち上がっていないが, 他の DNS サーバとの仲介として): 問い合わせに応じるか, 正しいデータを返すかを確認

以下のコマンドを打ち、

  $ dig www.google.com

以下のようにアドレスを引くことができれば良い.

   ; <<>> DiG 9.16.21 <<>> www.google.com
   ;; global options: +cmd
   ;; Got answer:
   ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58697
   ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

   ;; OPT PSEUDOSECTION:
   ; EDNS: version: 0, flags:; udp: 1232
   ; COOKIE: 5011abbbd5b4fea90100000063884dc1b1b9245b93c09ff6 (good)
   ;; QUESTION SECTION:
   ;www.google.com.                        IN      A

   ;; ANSWER SECTION:
   www.google.com.         300     IN      A       142.250.206.228

   ;; Query time: 40 msec
   ;; SERVER: 133.30.109.22#53(133.30.109.22)
   ;; WHEN: Thu Dec 01 15:46:25 JST 2022
   ;; MSG SIZE  rcvd: 87


== phase 10

特に作業を行わない.