DNS,メールサーバの移行手順
DNS, メール, POP サーバが動いているマシン(以下「旧マシン」)を、 新しいマシン(以下「新マシン」)に移行する手順である。
稼働中のマシンで OS のアップグレードやパッチ適用を行うと、サービスの停止時間が長くなる。 新しいマシンを用意して移行する方法では、事前に設定とテストを済ませられる。 また、問題が起きたときに旧マシンでの稼働に戻せる。
準備
新マシンの準備を行う。
- 移行の手順、スケジュール、分担を前もって打ち合わせする
- Solaris をインストールする
マシン名は旧マシンとは別の名前にする。IPアドレスも旧マシンとは別のアドレスを仮に付ける(最終的にはIPアドレスを付け替える)。旧マシンと新マシンで同じ OS バージョンが動いていると、設定ファイルをそのまま流用しやすい。
作業中は旧マシンの設定を変更しない。旧マシンの稼働に戻せる状態を保つためである。
【関連する外部ページ】
- Solaris インストール手順
インストールメディアを使ってインストールする手順 - Solaris 各種設定とソフトウェアのインストール
各種の設定、gcc のインストール、BIND、OpenSSH、TCP Wrapper、am-utils のインストールとカスタマイズ - Solaris 各種のソフトのインストール
GNU のツール類のインストール(ソースとインストール用スクリプトを掲載) - Solaris 各種設定
- Solaris インストール手順
- DNS サーバソフト(BIND)をインストールし、設定を行う
設定ファイルは旧マシンから持ってきて、次のように書き換える。BIND のバージョンによって設定項目や起動オプションが変わることがあるため、新マシンの BIND のバージョンに合わせて確認する。
- db.zone の SOA レコードのプライマリサーバ名: 旧マシン名 → 新マシン名
- dbrev.rev の SOA レコードのプライマリサーバ名: 旧マシン名 → 新マシン名
- localhost.zone の SOA レコードのプライマリサーバ名: 旧マシン名 → 新マシン名
- localhost.rev の SOA レコードのプライマリサーバ名: 旧マシン名 → 新マシン名
- localhost.rev の NS レコード: 旧マシン名 → 新マシン名
参考 Web ページ
- POP サーバ(qpopper)をインストールし、設定を行う
qpopper は最終版 4.1.0 (2011 年)で開発が終了しており、セキュリティ修正が提供されない。移行が完了した後に、保守が継続している Dovecot(現在の安定版は 2.4 系)への置き換えを検討する。移行作業そのものは、下記のとおり qpopper のまま行う。
参考 Web ページ
- sendmail をインストールし、設定を行う
移行時に sendmail や DNS の設定内容を変更しない。移行と設定変更を同時に行うと、障害が起きたときに原因の切り分けが難しくなる。バージョンアップや設定変更は移行後に別の作業として行う。
- この時点で動作テストを行う
移行作業
移行作業で問題が起きたときは、新マシンへの移行を取りやめて旧マシンの稼働に戻す。 そのため、旧マシンの設定は変更しない(実際、旧マシン側の設定変更は必要ない)。
旧マシンをシャットダウンし、その後に必要なファイル(pop.auth, /var/spool/mail)を 新マシンに移す(オーナーとタイムスタンプを保ったまま移す)。 同時に、新マシンのIPアドレスを旧マシンのIPアドレスに付け替える。 その後に動作チェックを行い、正常に動作しないときは元の状態に戻す。
POP サーバの移行では、pop.auth(POP のパスワードが入ったファイル)をそのまま使い続けられる。 ただし、旧マシンと新マシンで、qpopper の make 時のオプション(GNU gdbm を使う/使わない)を 一致させておく必要がある。オプションが違うと pop.auth が読めない。
同じIPアドレスのマシンを同時に稼働させない。 旧マシンのシャットダウンを確認してから、新マシンのIPアドレスを付け替える。 サービスの停止時間を短くするため、事前に数回の練習を行う。
sendmail の起動設定
Solaris 10 以降では、sendmail は SMF のサービス svc:/network/smtp:sendmail として管理する。起動、停止、状態確認は次のコマンドで行う。
svcadm enable smtp:sendmail svcadm disable smtp:sendmail svcs smtp:sendmail
Solaris 9 以前では、起動スクリプト /etc/rc2.d/S88sendmail を使う。 旧マシンからコピーする。
新マシンにおけるバックアップ
sendmail に関する設定ファイル(下記)は、事前に設定とテストが済んでいれば、 バックアップしておく。以降の手順で上書きされる可能性があるためである。
- /etc/mail/cf/cf/sendmail.mc
- /etc/mail/cf/cf/submit.mc
- /etc/mail/aliases
- /etc/mail/local-host-names
sendmail, POP 関係のファイルの移行
sendmail, POP 関係のファイルを、旧マシンから新マシンに移行する。
[旧マシンでの作業] cd /var/spool/mail tar -cvpf /var/spool/all.tar ./* chown root /var/spool/all.tar chmod 700 /var/spool/all.tar # sftp で /var/spool/all.tar と /etc/pop.auth を新マシンへ転送 sftp 「新マシン」 password **** cd /etc/ lcd /etc/ put pop.auth cd /var/spool/ lcd /var/spool/ put all.tar quit # 旧マシンのシャットダウン # シャットダウンの前に、sendmail が停止したことを確認 ps -e | grep sendmail
[新マシンでの作業] chown pop /etc/pop.auth chmod 600 /etc/pop.auth chown root /var/spool/all.tar chmod 700 /var/spool/all.tar cd /var/spool/mail tar -xvpf /var/spool/all.tar
この時点で、新マシンにおいて次の確認を行う。
- メールのエイリアスファイル /etc/mail/aliases が正しいファイルか
- sendmail.mc が正しいファイルか
- POP3 のサービスが有効か(Solaris 10 以降は「inetadm | grep pop3」、Solaris 9 以前は /etc/inetd.conf のエントリ)
- sendmail.mc を変更したときは、次のコマンドで sendmail.cf を作り直し、sendmail に設定を読み込ませる
cd /etc/mail/cf/cf m4 ../m4/cf.m4 sendmail.mc > /etc/mail/sendmail.cf svcadm refresh smtp:sendmail
DNS 関係
DNS に関する設定ファイル(下記)は、事前に設定(あるいは移行)とテストが済んでいるものとして説明する。
- /etc/named.conf
- /usr/named/db.zone
- /usr/named/dbrev.rev
- /usr/named/localhost.rev
- /usr/named/localhost.zone
- /usr/named/root.cache (ルートヒントファイル。内容が古いときは最新版を取得して置き換える)
Solaris 10 以降では、named は SMF のサービス svc:/network/dns/server として管理する。
svcadm enable dns/server svcs dns/server
IPアドレス関係
新マシンのIPアドレスだけを、旧マシンが使っていたIPアドレスに変更する。マシン名は変更しない。
Solaris 11 では ipadm コマンドを使う。net0 は実際のインタフェース名に読み替える。
ipadm show-addr ipadm delete-addr net0/v4 ipadm create-addr -T static -a 「IPアドレス」/「プレフィックス長」 net0/v4
新マシンの /usr/named/db.zone
次のように変更する。
変更前
「旧マシン名」 IN A 「IPアドレス」 「新マシン名」 IN A 「仮のIPアドレス」
変更後
「新マシン名」 IN A 「IPアドレス」
同時に、次の1行を追加する。
「旧マシン名」 IN CNAME 「新マシン名」
db.zone の中に旧マシン名が残っていたら、1つずつ確認しながら新マシン名で置き換える。 シリアル番号の更新も必要である。
変更例は次の通り。
2c2 < 2004031712 ; Serial --- > 2004032301 ; Serial 51c51 < oldmachine IN A 133.5.18.160 --- > newmachine IN A 133.5.18.160 55c55 < newmachine IN A 133.5.18.163 --- > ;newmachine IN A 133.5.18.163 85c85 < ; oldmachine IN CNAME newmachine --- > oldmachine IN CNAME newmachine
新マシンの /usr/named/dbrev.rev
次のように変更する。
変更前
「アドレス」 IN PTR 「旧マシン名」 「仮のアドレス」 IN PTR 「新マシン名」
変更後
「アドレス」 IN PTR 「新マシン名」
dbrev.rev の中に旧マシン名が残っていたら、1つずつ確認しながら新マシン名で置き換える。 シリアル番号の更新も必要である。
2c2 < 2004031702 ; Serial --- > 2004032301 ; Serial 18c18 < 160 IN PTR oldmachine.domainname.jp. --- > 160 IN PTR newmachine.domainname.jp. 22c22 < 163 IN PTR newmachine.domainname.jp. --- > ;163 IN PTR newmachine.domainname.jp.
新マシンの /etc/hosts に書かれたIPアドレス
/etc/hosts のIPアドレスを書き換える。
テスト
書き換えが終わったら、named と sendmail に設定を読み込ませて、名前解決を確認する。
rndc reload svcadm restart smtp:sendmail dig 「新マシン名」 dig -x 「IPアドレス」
Solaris 9 以前では、次のコマンドを使う。
kill -HUP `cat /var/run/named.pid` /etc/rc2.d/S88sendmail stop /etc/rc2.d/S88sendmail start nslookup 「新マシン名」 nslookup 「IPアドレス」
NIS サーバ
NIS を使っていて、移行作業のために仮のマシン名を NIS サーバに登録していたときは、その登録を削除する。 NIS サーバの hosts ファイル(/var/yp/nis.inputs/hosts)を書き換えて make を実行し、その後に動作チェックを行う。
NIS は Oracle Solaris 11.4 で削除された。Solaris 11.4 以降では、ホスト名の解決は DNS または LDAP で行う。