このドキュメントは Mail サーバへ gate-toroku-system をインストールする際の手順を書いたものである. サーバ再構築の際にサーバ機の入れ換えを行うことを前提にしている. (サーバ機の入れ換えとはネットワークパラメータを付けかえるということを意味している) また, EP サーバ再構築時の gate 登録システムのインストール手引き を参考にしている.
gate-toroku-system をインストールするために以下のパッケージが必要になるのでインストールしておく.
# dpkg -i htroff_2.0-1_all.deb
」
としてインストールする必要がある)
# apt install perl # apt install libperl4-corelibs-perl # apt install libjcode-pm-perl # apt install libjcode-perl # apt install inetutils-inetd
htroff_2.0-1 を取得して展開する.
# wget http://www.gfd-dennou.org/arch/cc-env/htroff/htroff_2.0-1_all.deb # dpkg -i htroff_2.0-1_all.deb
作業用アカウント gate を作成する.ユーザ ID は 1 -- 999 の間(システムユーザ領域)に設定する.
# adduser --uid 500 --disabled-password gate
この時, フルネームは「Administrator of gate-toroku-system」とした.
gate グループに gate 管理者を加える. http://www.ep.sci.hokudai.ac.jp/~gate/hyousi.html のメンバーを参照のこと. とのことだが,2011 年から更新されていないため, とりあえず netcom の住民を追加した.
# vim /etc/group
今回は以下のようであった.
gate:x:500:keikei,momoko,seiko,kamata,msato |
/home/gate/.qmail を編集する.
# su gate gate@usuzumi:$ vim ~gate/.qmail
以下を記入する.
&keikei &momoko &seiko &kamata &msato |
gate@usuzumi:$ chmod 600 /home/gate/.qmail
gate-daily が走った際に,自動的に gate@orange のデータベースを gate@usuzumi (サーバ入れ替え後 usuzumi -> grey) に 同期させるため,ノンパスワードログインの設定が必要.
昨年度までは ~/.shosts を用いたホストベース認証を行っていた. しかし,セキュリティ的にホストベース認証より 公開鍵認証が優れていると思われるため, 今年度は公開鍵認証を目指す.
ドキュメントを書き換え,公開鍵認証のための設定を していく. gate@orange と gate@usuzumi のみのやりとりであれば 問題ないはずである.
.shosts 認証のために書き換えていた sshd_config を 戻す.公開鍵認証はデフォルトで有効である.
# vim /etc/ssh/sshd_config
IgnoreRhosts no
HostbasedAuthentication yes
上記の赤字部分を以下のように変更する.
IgnoreRhosts yes HostbasedAuthentication no |
ファイル編集後, ssh を再起動する.
# systemctl restart ssh
gate@usuzumi の公開鍵を作成する.
gate@usuzumi:~$ mkdir ~/.ssh gate@usuzumi:~$ chmod 700 ~/.ssh gate@usuzumi:~$ cd ~/.ssh gate@usuzumi:~/.ssh$ ssh-keygen -t ed25519 -f ed25519_usuzumi
鍵のタイプは ed25519,鍵の名前は ed25519_usuzumi に した. パスフレーズは設定していない. これを gate@orange に置く.
gate@usuzumi:~/.ssh$ sftp hoge@orange.ep.sci.hokudai.ac.jp # hoge はメール管理者のアカウント名. sftp> put ed25519_usuzumi.pub sftp> exit
また,公開鍵認証で使う鍵を config ファイルで 設定しておく.
gate@usuzumi:~/.ssh$ vim config Host orange.ep.sci.hokudai.ac.jp IdentityFile /home/gate/.ssh/ed25519_usuzumiここから orange での作業.
以下の作業は www 以外の管理者では行うことができない.よって, gate 管理者グループの人 (もしくは www 管理者) に以下の作業を行ってもらう.
root@orange:# cat ~hoge/ed25519_usuzumi.pub >> ~gate/.ssh/authorized_keys # 新たに authorized_keys を作成する場合は,所有者とパーミッションを gate,600 に変えること root@orange:# chown gate:gate ed25519_usuzumi.pub root@orange:# mv ~hoge/ed25519_usuzumi.pub ~gate/.ssh
これで usuzumi -> orange の公開鍵認証が可能になった. 続いて逆方向の公開鍵認証も設定していこう.
gate@usuzumi:$ sftp orange.ep.sci.hokudai.ac.jp # 正しく設定できていれば,パスワードの入力を求められずにログインできるはず sftp> get .ssh/id_ed25519.pub sftp> exit gate@usuzumi:$ cat id_ed25519.pub >> ~/.ssh/authorized_keys
orange から usuzumi にユーザ gate でログインしてみて, パスワードを求められてしまうときは .ssh/config を usuzumi と同じように orange にも 作って対処すること.
以上で, サーバ入れ換え前の ssh のノンパスワードログインに関する設定は終了である.
予備機と本務機の入れ換え後に www サーバ (orange) の .ssh/known_hosts 内のホスト名を予備機名から本務機名に変更する必要がある. それに関しては[3-1]. 公開鍵作り直しで述べる.
ここから先の作業は gate-toroku-system の修正後に なるであろう ...
gate 修正した (2025/07/27). defined コマンドの修正,zone.head の修正,dhcpd.conf の修正を行った. gate@orange の gate-arch 以下に gate-toroku-system_2025-07-26.tar.gz として置いた.
この作業は gate を試しに動かすために行う, 途中で password を変えた人がいるかもしれないので入れ替え当日も同じ作業を行う.
旧サーバの /etc/shadow ファイルのユーザ部分 (/etc/passwd の UID 1000 - 29999 のユーザ. つまり, gate から下のユーザ) のみを新サーバの /etc/shadow に張り付ける作業を行う.
(何故この作業が必要なのだろうか...?)
grey から /etc/shadow を持ってくる(途中で hoge のホーム領域に作った shadowkari は後でしっかり削除しておく).
mondohoge@usuzumi:$ ssh hoge@grey.ep.sci.hokudai.ac.jp hoge@grey:$ sudo cp /etc/shadow ~/shadowkari hoge@grey:$ sudo chown hoge:hoge shadowkari hoge@grey:$ exit mondohoge@usuzumi:$ sftp hoge@grey.ep.sci.hokudai.ac.jp sftp> get shadowkari sftp> rm shadowkari sftp> exit
shadowkari の中の grey の /etc/passwd での UID 1000 - 29999 のユーザ情報を usuzumi の /etc/shadow に追加する.
$ sudo cp /etc/shadow /etc/shadow.bk $ less /etc/passed # UID 1000 のユーザ名を確認 $ vim shadowkari # UID 1000 のユーザの行にカーソルを合わせ,Shift + V でヴィジュアル行モードに入る. # Shift + g で以降全範囲を選択し y でヤンク. # :e shadowuser で shadowuser ファイルの編集画面に入り,p でペースト. # w で保存し,q で退出. $ sudo vipw -s # Shift + g で最終行へ移動. # :r !cat shadowuser でコピー. # 空行などが無いか確認し,:wq で保存して出る. # もっと良い方法があるかも ...
www.ep.sci.hokudai.ac.jp からインストール中のホストに /home/gate/gate-toroku-system.tar.gz をコピーする. コピー先のディレクトリは /home/gate とする.
mondohoge@usuzumi:$ sudo -u gate -s -H gate@usuzumi:$ cd /home/gate gate@usuzumi:$ sftp orange.ep.sci.hokudai.ac.jp sftp> get gate-arch/gate-toroku-system_2025-07-26.tar.gz . sftp> exit
コピーして来た gate-toroku-system_2025-07-26.tar.gz を展開する.
gate@usuzumi:~$ tar xvfz gate-toroku-system_2025-07-26.tar.gz
作成された gate-toroku-system ディレクトリに移動.
gate@usuzumi:$ cd gate-toroku-system_2025-07-26
昨年度までは gate.conf を www サーバから取ってきていたが, gate-toroku-system_2025-07-26/include に最初から入っているため この作業は必要ない.
Config.mk の生成
gate@usuzumi:~/gate-toroku-system_2025-07-26 $ perl ./config.pl
make によるコンパイル
gate@usuzumi:~/gate-toroku-system_2025-07-26 $ make
ほんとうにインストールする
gate@usuzumi:$ exit (一般ユーザに戻る) mondohoge@usuzumi:$ sudo -s (root ユーザになる) # cd /home/gate/gate-toroku-system_2025-07-26 # cp ./include/gate.conf /etc/gate.conf # make install
インストール終了後, プログラムファイル (gate-ip-accept 等)が /usr/local/bin, /usr/local/sbin, /usr/local/lib/gate にインストールされていることを確認する. また, /etc/passwd, /etc/shadow, /etc/group, /etc/sudoers が /ETC に存在していることを確認する.
mondohoge@usuzumi:$ ls /usr/local/bin/gate-* mondohoge@usuzumi:$ ls /usr/local/sbin/gate-* mondohoge@usuzumi:$ sudo -s # less /ETC/shadow
デーモンモードで起動するため /etc/gate.conf での確認
# less /etc/gate.conf | grep "USE_DAEMON"
以下のように表示されればよい.
$USE_DAEMON = 1 ; |
/etc/inetd.conf を編集する
# vim /etc/inetd.conf
以下の一行を追加
gate stream tcp nowait root /usr/sbin/tcpd /usr/local/lib/gate/gate-daily -N |
gate 用に 8888 番 ポートを割り当てる. /etc/services を編集する.
# vim /etc/services
以下の行を追加する (空行はスペースキーではなく tab キーで).
gate 8888/tcp # gate-toroku-system |
inetd を再起動する.
# service inetutils-inetd restart
gate のポートには登録サーバである orange 以外のホストはアクセスできないようにする. /etc/hosts.deny を以下のように編集して全てのホストに対して gate ポートへのアクセスを禁止する.
# vim /etc/hosts.deny
gate-daily: ALL [改行] |
/etc/hosts.allow を編集する.
# vim /etc/hosts.allow
orange に対して gate ポートへのアクセスを許可する.
gate-daily: orange.ep.sci.hokudai.ac.jp [改行] |
以下のコマンドで確認する
# tcpdmatch gate-daily grey.ep.sci.hokudai.ac.jp
以下のように表示されればよい.
access: denied |
以下も打つ.
# tcpdmatch gate-daily orange.ep.sci.hokudai.ac.jp
以下のように表示されればよい
access: granted |
本格運用を開始するにあたり万一の場合に備え以下の作業を行う.
/etc/passwd, /etc/shadow, /etc/group, /etc/sudoers ファイルのバックアップをホームディレクトリ以下に作成しておく.
※pr オプションを付けるとファイルの所有者・グループを保ったままコピーできる
# mkdir ~mondohoge/bak # cp -pr /etc/passwd ~mondohoge/bak/ # cp -pr /etc/shadow ~mondohoge/bak/ # cp -pr /etc/group ~mondohoge/bak/ # cp -pr /etc/sudoers ~mondohoge/bak/
コピーしたファイルのパーミッションを設定して外部から見れないようにする.
# chmod 400 ~mondohoge/bak/*
確認のために gate.conf を編集する
# vim /etc/gate.conf
$DEBUG_CONFIG = 1 を 0に書き換える
$DEBUG_CONFIG = 0 |
www サーバ (orange) から usuzumi の gate ポートに接続する.
mondohoge@usuzumi:$ ssh hoge@orange.ep.sci.hokudai.ac.jp hoge@orange:$ telnet usuzumi.ep.sci.hokudai.ac.jp 8888
正常に接続できたかを確認するには /etc/passwd, /etc/shadow などのファイルのタイムスタンプを確認する.
hoge@orange:$ exit mondo1@usuzumi:$ date (現在時刻の確認) mondo1@usuzumi:$ ls -l /etc/passwd /etc/shadow
/etc/passwd と /etc/shadow の更新時間が date の時間になっていればよい.
また, /etc/passwd の中身がユーザ ID の順番に並び変えられていればよい.
安全のためにデバッグモードに直しておく
# vim /etc/gate.conf
$DEBUG_CONFIG = 0 を 1 に書き換える
$DEBUG_CONFIG = 1 |
以下の作業も www 以外の管理者では行うことができない.よって, gate 管理者グループの人 (もしくは www 管理者) に以下の作業を行ってもらう.
サーバを入れ換えたため www サーバ (orange) 内の .ssh/known_hosts 内のホスト名と IP アドレスが実際のサーバ名が合わなくなっている. 従って, 公開鍵を再び取り直す.
公開鍵を新たに取得しなおすために, www サーバ (orange) から ホスト名と IP アドレスを変更後のサーバへ ssh 接続してみる. (アドレスはフルドメインで入力する). 以下の例では, 変更後のサーバのホスト名が grey.ep.sci.hokudai.ac.jp である.
gate@orange:$ ssh grey.ep.sci.hokudai.ac.jp
ここで公開鍵を作りますかと聞かれるので yes を入力する. 設定が正しければ, パスワードを聞かれることなく にログインできる.
以上で, ssh のノンパスワードログインに関する設定は完全に終了である.
orange.ep.sci.hokudai.ac.jp の /etc/gate.conf の %DB_SHARE_HOSTS にこのサーバののホスト名が書き込まれているかを確認する.
登録サーバで gate ポートにアクセスすることによって gate-daily を動かす. これにより, データベースの転送が行われる. 転送には 1,2 分程度かかる.
hoge@orange$ telnet localhost 8888
転送完了の確認には ps aux コマンドを実行する. gate-daily が動いていなければ, 転送は完了している.
mondo1@grey:$ ps aux | grep gate
また, /etc/passwd が gate-daily によって更新されているかを確認する. 確認するためには以下を実行する.
mondo1@grey:$ ls -lt /etc/passwd
このとき表示される時間が数分前であればよい.
なお, データベースは /home/gate/userdb や /home/gate/ipdb 以下にあるので, その中にそれなりにデータファイル (3桁くらい) あれば転送が完了していると思って良い.
root@grey:# ls /home/gate/userdb/stable /home/gate/ipdb/stable
ファイルが全く存在しない場合は転送が失敗しているので注意.
安全に動作していれば /ETC , /HOME を削除する.
root@grey:# rm -r /ETC /HOME
また, mondo ユーザも削除する.
root@grey:# userdel -r mondo4
最終更新日 : 2025/05/20 (山本 峻大) | Copyright © 2000-2025 EPCore |