gate-toroku-system | インストールの手引き

登録サーバへのインストール

2014年5月16日
gate-toroku-system 開発チーム
$Id: install-toroku.html,v 1.44 2014/05/16 07:10:55 odakker Exp $

  1. インストール前の準備

  2. パッケージの取得と展開

  3. パッケージの設定 (gate.conf の編集)

  4. インストール

  5. テスト運用 ( ユーザ登録 )

  6. 運用方法の選択

  7. 本格運用


1. インストール前の準備

[1.1] 登録サーバーに必要な他のソフトウェア

事前に以下のようなソフトウェアをインストールしなければならない。 なお、以下では OS として Debian GNU/Linux 7.0 --wheezy-- を利用していることを仮定している。

[ep local] EP サーバでは、登録サーバである orange.ep.sci.hokudai.ac.jp にて gate-toroku-system の開発を行っているので、 開発に必要な 「cvs」「cvs-doc」パッケージをインストールして もらいたい。


[1.2] ユーザアカウントに関する準備

[1.2.1] 注意

gate-toroku-system は adduser のかわりにユーザアカウントの自動割付を行う。 この自動割付はユーザID(UID)が 1000 〜 29999 の範囲で行われる (/etc/gate.conf で変更可能)。 この範囲の UID を用いるユーザアカウントは gate-toroku-system のインストール前にUIDを変更しておかねばならない。

作業用ユーザアカウントは UID が 30000 〜 59999 の範囲(Debian GNU/Linux の予約領域)に作成せよ。

[余談] 念のためいっておくが、UID を変更するには /etc/passwd の UID 欄(3つ目) を変更するだけではいけない。ホームディレクトリのオーナーは UID の数値で記録されているのでこれを変更してやらねばならない。 たとえばあるユーザのUID を 1001 から 30000 に変更するには

# find /home -uid 1001 -exec chown 30000 {} \; -print

というコマンドを発行すればよい。

[1.2.2] 作業用アカウントの作成

gate-toroku-system のデータベースの所有者として用いるため、 gateユーザ gate グループ の設定が必要である (名称は /etc/gate.conf で変更可能であるが、ユーザと同名のグループでなければならない)。 以下のコマンドを発行せよ。

# adduser --uid 500 --disabled-password gate

上の例では UID, GID として 500 を用いたが、システムユ ーザに割り当てられた領域 (Debian GNU/Linux では 1-999) を用いねばならない。


[1.3] メール転送確認

登録サーバでは gate-toroku-system によって gateユーザあてに 電子メールが発送される。 このメールが人間のユーザに転送されることを確認しよう。 たとえばメール配送ソフトとして qmail を用いているサイトでは以下の処置が必要である。

  1. /home/gate/.qmail に電子メールアドレスを列挙する。 qmail では以下のようにメールアドレスの前に & をつける。間に空白を入れたり、 空行を作ったりしないこと。
&username
  1. /home/gate/.qmail が gate ユーザの所有でモード 0600 (所有者にのみ読み書き可能) になっていることを確認
  2. /home/gate が gate ユーザの所有で所有者にのみ書き込み可能 (たとえば 2755) となっていることを確認

[ep local] EP サーバでは、メールサーバである grey.ep.sci.hokudai.ac.jp の /home/gate/.qmail に gate グループの人々が書き込まれていれば 良いだろう。


[1.4] quota の設定

少なくとも Debian GNU/Linux では quota (ユーザごとのディスク使用量上限)の設定を行う場合 edquota コマンドを用いて別のユーザの設定を複写するのが便利である。 そこで gate-toroku-system もこの機能に対応し、 edquotaコマンドが起動可能な場合はホームディレクトリを 新規作成するユーザに gate ユーザ (どのユーザを用いるかは /etc/gate.conf で変更可能) の quota 設定を複写するようになっている。

そこで、quota を利用する場合は gate-toroku-system の本格運用前に gate ユーザに quota の設定を行えばよい。

quota を利用しない場合は edquota をインストールしないものと考えられるが、もし edquota をインストールしているにもかかわらず quota の設定をしない場合は gate ユーザのディスク使用可能量を無限大にしておけばよい。


[1.5] 遠隔起動に関する設定

ユーザ情報を共有する機械が複数ある場合は、 登録サーバのスーパーユーザが ssh を用いて他のホストのスーパーユーザとしてログインできるように 設定しなければならない。この方法については sshを用いたノンパスワードログイン (SSH2 + ssh-keygen) を参照されたい。 なお、もしもssh-keygenコマンドが無い環境であれば sshを用いたノンパスワードログイン (SSH2) を、SSH1を用いているのであれば sshを用いたノンパスワードログイン (SSH1) を参照されたい。

[ep local] 2007 年度以降の EP サーバではSSH2を用いている。

[ep local] orange.ep.sci.hokudai.ac.jp にログインしている gate ユーザが blue, grey yellow, white, green について

gate@orange:~$ ssh blue.ep.sci.hokudai.ac.jp ls -l /home/gate

のようにしてパスワードを投入することなく blue 〜 kurage にてコマンドを実行できればよい。


[1.6] CGI に関する設定

CGI インターフェイスを利用する場合は HTTPサーバに 適切な設定を施す必要があろう。この設定はあとで 「[3.2] CGI 設定との対応」 のところでまとめて行う。


2. パッケージの取得と展開

[2.1] パッケージの取得

gate-toroku-system は gate-toroku-system.tar.gz という(あるいは類似の)ファイル名の gzip で圧縮された tar アーカイブで提供される。 このファイルは現在のところ公開されていない。

[ep local] www.ep.sci.hokudai.ac.jp において /home/gate/gate-toroku-system.tar.gz を探索されたい。 さらに開発者向けに付言するなら、 gate-toroku-system ディレクトリにおいて make tar コマンドを発行することによって 最新版アーカイブを作成することができる。


[2.2] パッケージの展開

パッケージを展開する場所はどこでもよいが、 設定ファイルなどのバックアップをかねて /home/gate 以下がよいであろう。 /usr 以下のシステムディレクトリだと インストールされたものと区別がつきにくいので避けたほうがよい。 (以下、/home/gate/ 以下に gate システムのパッケージを展開すると 仮定して説明する。)

$ sudo -u gate -s
$ cp gate-toroku-system.tar.gz /home/gate/
$ cd /home/gate/

以下のコマンドを使うと、カレントディレクトリに パッケージが展開される。

$ tar xvfz gate-toroku-system.tar.gz

なお、上記のコマンドは GNU tar がインストールされていない場合は 使用できないため、 GNU zip と tar が必要である。

$ zcat gate-toroku-system.tar.gz | tar xvf -

いずれの方式でもカレントディレクトリに gate-toroku-system ディレクトリが作成され、 その中にファイルが展開される。以後の作業は主にこの gate-toroku-system ディレクトリで行われるのでそこに cd しておこう。

$ cd gate-toroku-system

( 以後の作業はこのディレクトリから行うことを仮定しており, コマンドも相対パスで書かれているものがあるので注意 )


3. パッケージの設定 (gate.conf ファイルの編集)

  • gate.conf に使用されている言語
  • パッケージのインストール先、動作詳細などすべての設定は include/gate.conf ファイルを編集することで行う。 このファイルはプログラム言語 perl で書かれているが、 ほとんどは文字列の代入文なので理解することは容易であろう。

  • gate.conf の共有
  • なお、gate.conf の書式は複数のホストでデータベースを共有する場合、 まったく同じファイルを用いることができるように設計されている。 したがって、同じバージョンのgate-toroku-system を使っている場合は どこかで(最初は登録サーバのために作るのがよいだろう) gate.conf を作成したら他のホストはそのファイルをコピーすればよい。


    [3.1] インストール先

    [3.1.1] インストール先

    gate.conf には以下のような記述 (perl の代入文) が存在する。 Debian GNU/Linux を普通に使っている分には変更する必要はないが、 サイトの方針によっては /home に余計なものを置きたくないということは充分考えられる。 インストール先は必ず最初に確認されたい。 なお、データベースを共有するホスト間ではこれらの設定が 共通でなければならない。

    [ep local] EP サーバにおいては以下の設定を変更してはならない。


    [3.1.2] システムファイルの設定

    gate.conf では、(おそらく変更の必要が無いであろう) ユーザ管理システムファイルの変更も可能である。 原則的にはこれらは変更の必要は無い (というかむしろ変更してはいけない)。

    [ep local] EP サーバにおいては以下の設定を変更してはならない。


    [3.2] CGI 設定との対応

    以下では apache2 (ver 2.2.16) を Debian パッケージによってインストールした場合を仮定して 設定を確認すべき点を挙げる。場合によっては gate.conf ファイルを編集せねばならない。 apache を自分でコンパイルする場合は、例えば /etc/apache2 のかわりに /usr/local/apache/etc に設定ファイルが置かれるなどの相違がある。

    [3.2.1] 設定ファイル

  • apache を動作させるユーザ, グループ (/etc/apache2/envvars)
  • apache がどのユーザ, グループの権限で動作するかは /etc/apache2/envvars 内の環境変数「APACHE_RUN_USER」および「APACHE_RUN_GROUP」で指定される。

    export APACHE_RUN_USER=www-data
    export APACHE_RUN_GROUP=www-data

    この「User」, 「Group」に指定されているユーザ, グループが gate.conf における $CGIUSER に指定されているユーザと 一致しなくてはならない。 相違している場合はどちらかを変更すること。

    $CGIUSER = "www-data";

    [ep local] 現在 (2011/09/27) は「www-data」が apache を 動作させているユーザである。

  • gate システム用 CGI 置き場 (/etc/apache2/site-available/default)
  • httpd.conf 内の「ScriptAlias」において以下のように指定されると、 /home/cgi-bin/ に置かれた CGI が HTTP的に /cgi-bin/ とすることで呼び出されることを示す。

    ScriptAlias /cgi-bin/ "/home/cgi-bin/"

    この「ScriptAlias」の下線部分と gate.conf における $CGIBINDIR にて指定されるディレクトリが一致しなければならない。

    $CGIBINDIR = '/home/cgi-bin';

    なお、gate システムの現在の仕様では CGI のインストール場所は /home/cgi-bin に固定されている。 また、gate システム用 CGI も /cgi-bin/ から呼び出されるように 固定に設定されている。

    このため、/etc/apache2/site-available/default においては必ず以下のように 「ScriptAlias」を設定すること!!

    ScriptAlias /cgi-bin/ "/home/cgi-bin/"
  • /home/cgi-bin/ の CGI が動作するために
  • /home/cgi-bin/ 以下の CGI が動作するために, /etc/apache2/site-available/default で以下のように記述する。

    <Directory "/home/cgi-bin">
        AllowOverride AuthConfig Limit
        Options ExecCGI FollowSymLinks IncludesNoExec
    </Directory>

    [3.3] root になれるグループ名の予約

    gate-toroku-system ではあるグループのメンバがスーパーユーザになれるように 設定することができる。設定を変更しなければその名前は wheel である。後に説明する手順で epcore というグループユーザを作成すると、 /etc/sudoers ファイル生成時に特別扱いが行われ、epcore のメンバが sudo コマンドによってスーパーユーザになれる、といった設定が行われる。

    この名前は epcore でよいか確認せよ。 たとえば wheel に変更する場合は

    $WHEELUSER = 'epcore';

    という記述を

    $WHEELUSER = 'wheel';

    のように変更せよ。また、このような特別扱いを禁止するためには

    $WHEELUSER = undef;

    のように指定する。

    [ep local] EP サーバでは変更の必要がない。


    [3.4] ログイン名のハイフンの許可

    UNIX 的にはハイフンのついた名前は O.K. であるが、 mail サーバの仕様によってはハイフンがつくとまずい場合がある (メーリングリストしよう時など)。 そこでハイフンのついたアカウントを許可するかシステムによって選択する。

    $USE_HYPHEN_NAME = 0 or 1;     # 0 にすると不可, 1 にすると許可

    [注意] qmail の場合アカウント登録で hoge-ml などのハイフンを含むアカウントが承認されてしまうとまずい。 なぜならアカウント hoge がホームディレクトリに.qmail-ml というファイルを作成したとすると hoge-ml@ep.sci.hokudai.ac.jp 宛のメールは アカウント hoge-ml さんと hoge さんの .qmail の拡張子 .qmail-ml へ 配送してしまうからである。

    [ep local] EP サーバでは qmail を使用しているので ハイフンを含むログイン名は不可。


    [3.5] 登録サーバのホスト情報

    登録サーバの FQDN (Full Qualified Domain Name; 完全なドメイン名) は gate.conf 内の $DBSERVER で指定される。

    [ep local] たとえばorange.ep.sci.hokudai.ac.jp を登録サーバとする場合は gate.conf に

    $DBSERVER = 'orange.ep.sci.hokudai.ac.jp';

    という記述があることを確認すればよい。

    gate-toroku-system は自分の FQDN を hostnameコマンド (-f オプション付きで) で調べて、 これが $DBSERVER指定と一致するかどうかで 自分が登録サーバかどうかを判定している。


    [3.6] その他のホストの設定

    gate-toroku-sysytem を利用するホストは連想配列 %DB_SHARE_HOSTS に列挙する (登録サーバのホストも入れること)。 最初に配布される gate.conf には

    %DB_SHARE_HOSTS = (
            'orange.ep.sci.hokudai.ac.jp',  'wheel:epwww',
            'grey.ep.sci.hokudai.ac.jp',    'wheel:epmail',
            'yellow.ep.sci.hokudai.ac.jp',  '%epdns wheel:epdns',
            'blue.ep.sci.hokudai.ac.jp',    '%epdns wheel:epdns'
    );
    

    のような記述がある。各行の左側がホスト名、 右側がオプションである。 もし運用されるホストたちのリストが違っていたら変更すること。

    [ep local] 2011/09/27 現在の EP サーバについては変更の必要はないはずである。

    特別なことがない限りオプションは空文字列にする。

    [3.6.1] アカウント作成制限オプション

    ホストごとのオプションは空白で区切られた語の集まりである。語のうち % で始まるものがあれば、 それはアカウント作成をあるグループユーザのメンバに制限する オプションである。

    たとえばオプション %wheel が指定されているホストでは、グループユーザ wheel が存在する場合にそのメンバだけに 一般ユーザアカウント作成が制限される。

    [ep local] wwwサーバとmailサーバでは制限はせずに全員のアカウントを作成するが、 DNSサーバとnewsサーバは管理者グループだけに制限する。 ゆえにオプションに %epdns, %epnews をつける。

    [3.6.2] ホスト名ごとの root になれるグループユーザ設定オプション

    ホスト名ごとのオプションのうち、wheel: で始まるものが あれば、それは wheel: に続くグループユーザ名に スーパーユーザ権限を与えるオプションである。

    例えば、「wheel:epwww」というオプションをつけると、そのホストでは epwww ユーザはスーパーユーザになることができる。

    このオプションが無い場合は、 [3.3] root になれるグループ名の予約 にて $WHEELUSER に指定されたグループユーザが スーパーユーザになる権限を有する。

    逆に言えば、「wheel:」オプションがついているホストに関しては $WHEELUSER の設定は無視される。


    [3.7] DNS サーバの設定 (DNS は BIND 8 または 9 によるものに限る)

    以下、DNS サーバに関しての設定である。

    [ep local] 現在の EP サーバについては変更の必要はないはずである。

    [3.7.1] 1st & 2nd DNS サーバのホスト設定

    DNS サーバは配列 @DNS_SERVERS に列挙する。最初に配布される gate.conf では以下のように設定されている。

    @DNS_SERVERS = ( "yellow.ep.sci.hokudai.ac.jp",
                     "blue.ep.sci.hokudai.ac.jp",
    );

    1番目の要素が1st DNS サーバに、 残りの 2番目以降の要素が2nd DNS サーバとなる。 この配列の要素の順序は1番目の要素が master に、 2番目以降の要素はその master に対する slave となるという意味をもつ。

    ここで、1番目にホスト名を書くのと 2番目以降にホスト名を書くのでは gate システムの挙動が全く異なる。

    1番目に書いたホストでは DNSデータベース を元に ゾーンファイル が作成される。

    それに対し、2番目以降に書いたホストでは gate システムによって ゾーンファイルが作成されることは無い。 (2nd DNS サーバは 1st DNS サーバのゾーンファイルをコピーして使用する。)

    どのホストが 1st DNS であるのかを把握して @DNS_SERVERS を設定していただきたい。

    [3.7.2] ドメイン名の設定

    @DNS_SERVERS で定義される DNS サーバは $DOMEIN で定義されるドメイン内 で DNS サービスを行う。 管理するドメインを $DOMEIN で指定すること。

    [ep local] EP ネットワークではドメイン「ep.sci.hokudai.ac.jp」を管理する。

    [3.7.3] ゾーンファイル管理者のメールアドレス

    gate システムで生成する ゾーンファイルの管理者のメールアドレスを $POSTMASTER で定義する。

    [ep local] 現在は「postmaster@ep.sci.hokudai.ac.jp」になっている。

    [3.7.4] ドメイン名に対するメールの宛先

    $DOMEIN で定義されるドメイン名に対する MX (Mail eXchange) を行うことができる。 必要ならそのドメイン名上の誰かに宛てられたメールを 受け取るサーバを @MAIL_SERVERS で定義していただきたい。

    [ep local] 現在(2007年度)の EP サーバでは 以下のように設定されている。

    @MAIL_SERVERS = ( "grey.ep.sci.hokudai.ac.jp",
                      "orange.ep.sci.hokudai.ac.jp",
    );

    このように設定されている場合、 「hogehoge@ep.sci.hokudai.ac.jp」というアドレスに送ったメールは 「hogehoge@grey.ep.sci.hokudai.ac.jp」に転送される。
    そこでもしも, 「grey.ep.sci.hokudai.ac.jp」 がメールを受け取れない 場合には 「orange.ep.sci.hokudai.ac.jp」にメールが転送される。

    [3.7.5] ゾーンファイルを置くディレクトリの指定

    BIND はゾーンファイルと呼ばれるデータベースファイルを参照して DNS サービスを行うがそのゾーンファイルを置く位置を定義するのが $VAR_NAMED_DIR である。 もしも $VAR_NAMED_DIR の値が BIND の設定ファイル ( /etc/named.conf ) に書かれる ドメイン( $DOMEIN )に対するゾーンファイル置き場のディレクトリ と一致しなければ gate-toroku-system と BIND の接点は無くなる。

    [ep local] 現在(2011年度)のゾーンファイルの置き場は /etc/bind である.

    [3.7.6] ゾーンファイル名の指定

    ゾーンファイルの名前は $ZONE_FILE で定義する。 もしも $ZONE_FILE の値が BIND の設定ファイル ( /etc/bind/named.conf.local ) に書かれる ドメイン( $DOMEIN )に対するゾーンファイルの値と一致しなければ gate-toroku-system と BIND の接点は無くなる。

    [ep local] 現在(2001年度)のゾーンファイルの名前は ep.zone である.

    [3.7.7] IPアドレスの変更許可

    gate-toroku-system では基本的に一度登録したホストのIPアドレスは 変更できないようになっているが, $IP_CHANGEABLE を 1 にすることで変更可能な状態にすることができる.

    [ep local] 混乱を避けるため, 基本的には 0 にしておくこと

    [3.7.8] BIND の起動スクリプト名

    BIND 9 より BIND の起動スクリプト名が bind から bind9 に変更されたので、 デフォルトをそちらに変更した。しかし、BIND 8 を採用しているシステムへの対応を考慮して $BIND_INIT で変更できるようにしておく。

    [ep local] EP サーバでは 2009 年度より BIND 9 を使用しているので変更する必要は無い.


    [3.8] gate システムによって発送されるメールの署名と返信先のアドレス

    [3.8.1] gate システムから発送されるメールのドメイン

    gate システムから発送されるメールのドメインは $MAILHOST で指定される。

    [ep local] EP ネットワークでは「ep.sci.hokudai.ac.jp」に設定されている。

    [3.8.2] メールの署名

    gate システムによって発送されるメールの署名は $GATE_ORGANIZATION で指定される。

    [ep local] EP ネットワークでは以下のように設定されている。

    $GATE_ORGANIZATION = "EP ネットワーク委員会";

    [3.8.3] 返信先のアドレス

    gate システムによって発送されるメールの返信先のアドレスは $REPLY_MAILADDR で指定される.

    [ep local] EP ネットワークでは以下のように設定されている。

    $REPLY_MAILADDR = "netcom-query\@$MAILHOST";

    [3.9] プライベートIPアドレス管理に関する設定

    以下は, プライベートIPアドレス管理に関する設定である. プライベートIPアドレス管理の設定に関しては以下が全てであり, 管理を行わない場合には以下でも記述する通り, $IPTABLES_ENABLE0 にして, 後の設定は無視すれば良い.

    [3.9.0] 注意

    gate-toroku-system では, ルーティング制御に Debian パッケージの iptables を利用する. gate-toroku-system では プライベートIPアドレス管理をするのに, iptables の全ての機能を使えることを前提に設計している. そのためにはカーネルの再構築などが必要になるが, ここではその詳細は解説しない.

    また, iptables によるルーティングの設定は, gate-daily(8)によって [3.9.6] ルーティング制御コマンド実行ファイル が実行されることによって反映される.

    [3.9.1] プライベートIPアドレス管理のオン/オフ

    プライベートIPアドレス管理を行う場合には $IPTABLES_ENABLE1に, 行わない場合には 0 にする. 0 にした場合には以下の全ての プライベートIPアドレス管理に関する設定は無効になる.

    [ep local] 2007 年度以降の EP ネットワークでは管理を行っていない.

    [3.9.2] データベースディレクトリ

    プライベートIPアドレスデータベースを格納するディレクトリは $DB_PIP_BASE にて指定する.

    [ep local] EP ネットワークでは /home/gate/pipdb をプライベートIPアドレスデータベース置場にしている.

    [3.9.3] プライベートIPアドレス自動配布

    プライベートIPアドレスを自動的に配布する場合には $IP_AUTO_DISTRIBUTION1に設定する. 自動配布しない場合には 0に設定する. なお, 自動配布しない場合には, IPアドレスは登録申請者が各自で 入力することになるため, 別にプライベートIPアドレス配布規約を作成する必要があるだろう.

    [ep local] EP ネットワークでは自動配布している. そのため, プライベートIPアドレス配布規約も設けていない.

    [3.9.4] プライベートIPアドレスの範囲

    プライベートIPアドレスの範囲は, $MIN_PRIVATE_IP (最小値)と $MAX_PRIVATE_IP (最大値) で設定する. この項目は [3.9.1] において「プライベートIPアドレス管理を/オフ」にした場合でも、 後述する [3.10.1] で「DHCP をオン」にした場合には設定が必要になる。

    [ep local] EP ネットワークでは以下のように設定している.

    $MIN_PRIVATE_IP = '192.168.16.10';
    $MAX_PRIVATE_IP = '192.168.16.254';

    [3.9.5] ルータのホスト名, IPアドレス

    ルータのホスト名, IPアドレスを $IPTABLES_SERVER$IPTABLES_ROUTER_IP で設定する.

    [ep local] EP ネットワークでは以下のように設定している.

    $IPTABLES_SERVER = 'blue.ep.sci.hokudai.ac.jp';
    $IPTABLES_ROUTER_IP = '133.87.45.66';

    [3.9.6] ルーティング制御コマンド実行ファイル

    ルーティングのための制御コマンドの実行ファイルは $IPTABLES_FILE で設定する.

    [ep local] EP ネットワークでは以下のように設定している.

    $IPTABLES_FILE = "/usr/local/sbin/gate-iptables";

    [3.9.7] ルータの NIC (Network Interface Card) 種別

    ルータは 2 つの NIC を実装しているはずだが, そのうち, どちらが内向き (プライベートなネットワークと接続)で, どちらが外向き (グローバルなネットワークと接続)なのかを $INSIDE_ETH$OUTSIDE_ETHで設定する.

    [ep local] EP ネットワークでは以下のように設定している.

    $INSIDE_ETH = 'eth1';
    $OUTSIDE_ETH = 'eth0';

    [3.9.8] プライベートIPアドレス変更許可

    gate-pip-renew コマンドによって一度登録されたホストの プライベートIPアドレスを変更できるようにするのかどうかを $PRIVATE_IP_CHANGEABLEで設定する. 1 にすると変更可, 0 にすると変更不可である. ただし, なんらかの緊急事態が発生したのでない限りは 変更を不可にしておいて欲しい. 現在の gate-toroku-system では変更の際にプライベートIPアドレスが 重複しないかどうかをチェックできない.

    [ep local] EP ネットワークでは変更不可にしている.

    [3.9.9] ログ取りの設定

    gate-ip-masq を実行時にログを取るかどうかを $IPTABLES_LOGで設定する. 1 にするとログを取り, 0にすると取らない (この場合は [3.9.10] に述べる $LOG_PREFIXを設定する必要はない). ログは /var/log/kern.log に書き込まれる.

    [ep local] EP ネットワークではログを取るように設定している.

    [3.9.10] log-prefix の設定

    iptables によって取られたログにつける文字列を $LOG_PREFIX で設定する. この文字列はログを整形するために使用するものである.

    [ep local] EP ネットワークでは以下のように設定している.

    $LOG_PREFIX = 'IPTABLES-LOG: ';

    [3.10] DHCP に関する設定

    以下は, DHCP に関する設定である. DHCP に関しては以下が全てであり, DHCP を用いない場合には以下でも記述する通り, $DHCP_ENABLE0 にして, 後の設定は無視すれば良い.

    [3.10.0] 注意

    gate-toroku-system では, DHCP サーバとして, Debian パッケージの dhcp を利用する. gate-toroku-system で以下の DHCP 機能を利用するには このパッケージのインストールを行う必要がある.

    また, DHCP の設定は, gate-daily(8)によって /etc/init.d/$DHCP_INIT を再起動することで 反映される.

    [3.10.1] DHCP のオン/オフ

    DHCP を用いる場合には, $DHCP_ENABLE1に, 行わない場合には 0 にする. 0 にした場合には以下の全ての DHCP に関する設定は無効になる.

    [ep local] 2011 年度の EP ネットワークでは DHCP を利用している.

    [3.10.2] DHCP サーバ

    DHCP サーバは $DHCP_SERVER で指定する.

    [ep local] EP ネットワークでは以下のように設定している.

    $DHCP_SERVER = 'blue.ep.sci.hokudai.ac.jp';

    [3.10.3] DHCP の設定ファイル

    DHCP の設定ファイルは $DHCPD_FILE で指定する.

    [ep local] EP ネットワークでは以下のように設定している.

    $DHCPD_FILE = "$ETCDIR/dhcp/dhcpd.conf";

    [3.10.4] DHCP で配布するネットワークパラメータ

    DHCP で配布するネットワークパラメータは以下のように なっている.

    [ep local] 一番右は EP ネットワークでの設定である.

    ルータ(ゲートウェイ) $DHCP_ROUTER    '192.168.0.1'
    ネットマスク $DHCP_NETMASK    '255.255.255.0'
    ネットワークアドレス $DHCP_NETWORKADDRESS    '192.168.0.0'
    ブロードキャストアドレス $DHCP_BROADCAST    '192.168.0.255'
    ドメイン名 $DHCP_DOMAIN    'ep.sci.hokudai.ac.jp'
    DNS サーバ (複数指定可) @DHCP_DNS_SERVERS    '133.87.45.70',
    '133.87.45.66',
    '133.87.1.11'

    [3.10.5] DHCP の起動スクリプト名

    DHCP 3 より起動スクリプト名が dhcp から変更され、Deian GNU/Linux 6.0 では isc-dhcp-server となった. デフォルトはそちらに変更している。しかし、 DHCP 2 を採用しているシステムへの対応を考慮して $DHCP_INIT で変更できるようにしておく。

    [ep local] EP サーバでは 2009 年度より DHCP 3 を使用しているので変更する必要は無い.


    4. インストール

    include/gate.conf の編集が終わったら、 いよいよインストールを行う. 以下の作業を /home/gate/gate-toroku-system ディレクトリにておこなってもらいたい。

    [4.1] Config.mk の生成

    gate.conf の設定内容を Makefile へ伝えるために config.pl を走らせて Config.mk を作成する。

    $ cd /home/gate/gate-toroku-system
    $ perl ./config.pl

    [4.2] make によるコンパイル

    make によるコンパイルを行う. 具体的には今のところ, roff 形式のファイル (man 用の書式のファイル) から htroff を用いて html ファイルを生成している.

    $ make

    [4.3] インストール

    最後に、スーパーユーザの権限で以下のコマンドを実行する。

    $ su     (sudo を用いても良い)
    # cd /home/gate/gate-toroku-system
    # cp include/gate.conf /etc/gate.conf
    # make install

    [蛇足] ディレクトリ設定を変更していなければ、以下の作業が行われる。

    もし以下のディレクトリが存在しなければ作成する

    プログラムファイルが /usr/local/bin, /usr/local/sbin, /usr/local/lib/gate にインストールされていることを確認する。

    /usr/local/man/ja 以下にオンラインマニュアル類が インストールされていることを確認する。

    /home/gate/public_html/doc にドキュメントファイル類が インストールされていることを確認する。

    /etc/passwd, /etc/shadow, /etc/group, /etc/sudoers, /etc/skel が /ETC にも存在することを確認する。


    [4.4] アンインストール (余談)

    ここまでにインストールの方法を述べてきたが, 一応アンインストールの方法も 説明する. 興味が無い場合は次の [4.5] インストールされた「インストールの手引き」を参照するに進んでもらいたい.

    まず, 2. パッケージの取得と展開 をおこない、 /home/gate/gate-toroku-system ディレクトリに移動する。

    そしてスーパーユーザにて以下のコマンドを実行することで、 gate-toroku-system のプログラム群のほとんどをシステムから 削除できる。 残るのは /etc/gate.confユーザ/DNS/プライベートIPデータベース (/home/gate/userdb, /home/gate/ipdb, /home/gate/pipdb)のみである。

    # make uninstall

    /etc/gate.confユーザ/DNS/プライベートIPデータベース も完全に削除する場合には以下のコマンドを実行する。

    ※ 削除した設定ファイルやデータベースは 2 度と戻らないので注意すること!!
    # make uninstall.all

    [4.5] インストールされた「インストールの手引き」を参照する

    インストール作業が終了したら実際に CGI インターフェイスを使用しユーザの登録を行なう。

    だが、その前に重要な注意がある。 これからはあなたの登録サーバにインストールされた 「インストールの手引き」 を読んでほしいのだ。

    登録サーバの ~gate/doc/install.html を開いてほしい。 たとえば登録サーバが hogehoge.ep.sci.hokudai.ac.jp だったら、 http://hogehoge.ep.sci.hokudai.ac.jp/~gate/doc/install.html を開いてほしい。そして「5. テスト運用」 のところまでスクロールしてほしい。同じ内容が表示されただろうか? うまくいっていれば、罫線の下に進んでよい。


    5. テスト運用 ( ユーザ登録 )

    4. インストール までの作業が終了したら実際に CGI インターフェイスを使用しユーザの登録を行なう。


    [5.1] 一般ユーザへのアナウンス

    一般ユーザにはこのアドレス ( 登録サーバのホスト名が「hogehoge」ならば 「http://hogehoge.ep.sci.hokudai.ac.jp/~gate/doc/index.html」 ) をアナウンスすればよい。

    [ep local] たとえば orange.ep.sci.hokudai.ac.jp にインストールした場合は
    http://orange.ep.sci.hokudai.ac.jp/~gate/doc/index.html にかかれている。末尾の index.html はたいていの場合省略可能である。

    本番運用は/home/gate/userdb 以下のユーザデータベースを基に /etc 以下のシステムファイルを自動管理するのだが、その前に make install のときに作成されたテスト用のディレクトリ /ETC と /HOME を使用し動作チェックを行なおう。 以下の手順で CGI を用いた各々の登録を行ない正常動作を確認しよう。


    [5.2] 最初の保証人ユーザ登録

    /cgi-bin/gate-user-apply.cgi を参照し管理グループの代表者のユーザ登録申請を行なう。 保証人は先につくったユーザ"gate"として登録すること。

    [ep local] 管理グループの代表者(倉本先生)のアカウントを先ずつくる。

    /home/gate/userdb/pending の下に登録者のデータベースファイル (申請ログイン名がついたファイル)が生成されているか確認せよ。

    申請が受け付けられた後、承認を経てはじめてアカウントが生成される。 そこで今回行った申請にも承認を行おう。 そのために保証人"gate"の登録システム用パスワードを設定する。 gate ユーザの権限で以下のコマンドを実行せよ。

    $ htpasswd -c ~gate/.gate gate

    ここで投入したパスワードを用いてユーザ"gate" として保証人のユーザ登録承認 ( /cgi-bin/gate-user-accept.cgi を用いる) を行なう。 /home/gate/userdb/stable に承認されたユーザのデータベースファイルが 移動しているか確認せよ。


    [5.3] アカウント生成

    /home/gate/userdb の中にあるデータベースファイルをシステムに反映させるには ルートで /usr/local/lib/gate/gate-daily を起動する。

    # perl /usr/local/lib/gate/gate-daily

    /ETC 内に存在する passwd, group, shadow, sudoers ファイルが更新され、それぞれ .bk を付加した名前の バックアップファイルが生成されるはずである。 これらの変更点を確認せよ。たとえば /ETC/passwd.bk から /ETC/passwd への変更点は

    $ diff -c /ETC/passwd.bk /ETC/passwd

    コマンドによって確認できる。

    また /HOME には /home/gate/userdb 以下に存在するユーザのディレクトリが出来ているはずである。


    [5.4] 保証人が介在するユーザ登録

    管理グループの代表者を保証人として 管理グループメンバーのユーザ登録を行なう。 [5.2][5.3] の流れで行なう。なお、たとえば tarou さんの登録システム用パスワードの設定は以下のようにして行う。

    $ htpasswd -c ~tarou/.gate tarou

    [ep local] 管理グループの代表者(倉本先生)を保証人に管理グループ登録する。


    [5.5] グループユーザ登録

    /cgi-bin/gate-group-apply.cgi を用いる。一般ユーザであれば誰でも保証人となれることを除き、 流れは一般ユーザ登録とほとんど同じ。


    [5.6] ユーザ登録情報変更

    各ユーザが登録内容を変更するには、自分のパスワードを設定したあと、 /cgi-bin/gate-user-renew.cgi を用いて更新を行う。


    [5.7] 複数ホストでのテスト運用

    本番運用は /home/gate/userdb 以下のユーザデータベースを基に /etc以下のシステムファイルを自動管理する。 先ずテスト用のディレクトリ /ETC と /HOMEを使用し動作チェックを行なう。 下準備として/etc 内の passwd、shadow、group、sudoers ファイルを /ETC 内にコピーする。 データベースファイルは登録サーバが/usr/local/lib/gate/gate-daily を 起動する毎に/home/gate/userdb 以下に転送される。

    各ホストの /home/gate/userdb 以下にファイルが転送されていることを確認する。


    6. 運用方法の選択

    ユーザ、ホストのデータベースをシステムに反映させる方法として デーモンモードクロンモードがある。


    [6.1] デーモンモードでの運用

    デーモンモードを使用する場合は以下のように設定する。

    [ep local] 現在 ( 2002年度 ) はデーモンモードを使用して運用している。

    [6.1.1] gate.conf の設定

    /etc/gate.conf 中の $USE_DAEMON 変数が 1 というのを確かめる。

    $USE_DAEMON = 1;

    [6.1.2] gate-toroku-system 用のポートの作成

    gate-toroku-system 用のポートを作成する。 具体的には、このポートへのアクセスに対して、 gate-daily (データベースをシステムに反映させるプログラム) が起動するようにする。

    /etc/inetd.conf に以下の一行(長いけど)を付け足す。 ただし, もしも gate.conf の $BASEDIR$LIBDIR を変更して gate-daily の置き場を変えた場合には下記の /usr/local/lib/gate/gate-daily もそのように変更すること。

    gate stream tcp nowait root /usr/sbin/tcpd /usr/local/lib/gate/gate-daily -N

    一部だけ説明すると、1つ目のgateはプロトコル名, 5つ目のrootは起動するユーザ, 7つ目の/usr/local/lib/gate/gate-dailyは起動されるプログラム である。

    [6.1.3] ポート番号の設定

    上記で作成した gate ポートにポート番号を割り当てる。

    /etc/services に以下の行を付け足す。 ただし、gate.conf の $GATEPORT を変更した場合は 下記の 8888 もそのように変更すること。

    gate	8888/tcp

    [6.1.4] inetd の再起動

    inetd を再起動する。

    # kill -HUP `cat /var/run/inetd.pid`

    [6.1.5] TCP wrappers によるセキュリティ強化

    gate ポートは、登録サーバにせよその他のサーバにせよ、 登録サーバからのアクセスさえ受け付けられればその役目を果たすので 登録サーバからのみアクセスを受けるのが理想的である。

    TCP wrappersを使用して、アクセスを登録サーバからのものに限定する。 /etc/inetd.conf に書き込んだものの中に /usr/sbin/tcpd というものがあったが、これが TCP wrappers のプログラム名である。

  • /etc/hosts.deny の編集
  • /etc/hosts.deny に以下の一行を追加し、 まずは全てのホストからの gate ポートへのアクセスを拒否する。 (この一行の後で改行をしないとエラーになるので注意。)

    gate-daily: ALL
  • /etc/hosts.allow の編集
  • /etc/hosts.allow に以下の一行を追加し、 登録サーバ自身からのアクセスのみは受け付けるようにする。 (この一行の後で改行をしないとエラーになるので注意。)

    gate-daily: 127.0.0.1
  • 確認
  • アクセス制限が正常におこなわれているか tcpdmatch コマンドで確認する。

    # tcpdmatch gate-daily <登録サーバ以外のホスト>

    結果、access: denied と表示されればアクセスが正常に拒否されている。 次に、登録サーバ自身からのアクセスは受け付けられているか確認する。

    # tcpdmatch gate-daily localhost

    結果、access: granted と表示されればアクセスが正常に受け付けられている。

    [6.1.6] デーモンモード使用時の注意

    登録サーバをデーモンモードにするときは、 その他のサーバもデーモンモードにすること。 さもないと、登録サーバからその他のサーバの gate-daily を 起動する事が出来ない。


    [6.2] クロンモードでの運用

    クロンモードを使用する場合は以下のように設定する。

    [ep local] 現在 ( 2002年度 ) はデーモンモードを使用して運用している。

    [6.2.1] cron パッケージのインストール

    cron パッケージがインストールされていない場合はインストールする。

    [6.2.2] gate.conf の設定

    /etc/gate.conf 中の $USE_DAEMON 変数が 0 というのを確かめる。

    $USE_DAEMON = 0;

    [6.2.3] crontab の設定

    /etc/crontab に以下の一行を付け足す. ただし, もしも gate.conf の $BASEDIR$LIBDIR を変更して gate-daily の置き場を変えた場合には下記の /usr/local/lib/gate/gate-daily もそのように変更すること。

    25 4 * * * root /usr/local/lib/gate/gate-daily

    以上のように記述すると、毎日 04:25 に gate-daily が起動され、 データベースがシステムに反映される。 もっと頻繁に反映させたい場合は crontab(5) を参照して適当に書き換えてほしい。

    [6.2.4] クロンモード使用時の注意

    gate-daily の機能は (1) データベースをシステムに反映, (2) 登録サーバから他のサーバへのデータベースの転送(登録サーバのみ) である。 このため、登録サーバの gate-daily 起動時間を他のサーバの gate-daily 起動時間より 10分 〜 1時間 ほど早めておくと 比較的速やかなシステムへの反映ができるだろう。


    7. 本格運用

    [7.1] 本格運用開始

    本格運用に入ると今まで /ETC 以下を対象としていた動作が /etc 以下にある 本当のシステムファイルに対してなされる。 万が一のことを考え次の編集を行なう前に ルートになった端末を残しておくこと! また /etc/passwd、shadow、group、sudoers ファイルをホームディレクトリ内等に バックアップを保存しておくとよい。

    /etc/gate.conf ファイルの $DEBUG_CONFIG0 に変えることによって本格運用が開始される。 /etc/gate.conf ファイルに以下のような行を発見し、

    $DEBUG_CONFIG = 1;       # 0 にすると本気モード

    以下のように書き換えよ。

    $DEBUG_CONFIG = 0;       # 0 にすると本気モード

    [7.2] 受付窓口ページ

    本格運用をはじめる前に次のことを推奨する。 gate-toroku-system は北海道大学理学研究科地球惑星専攻での 専攻サーバ登録システムとして開発された。

    したがって、このシステムを他のサーバ上で運営するときの 受付窓口はこの登録システムのユーザ側で用意すると便利であろう。 その際は gate-toroku-system/doc/index.html を参照し /etc/gate.conf の変数 $TOP_PAGE に自作した受付ページの URL を書いてもらいたい。

    受付窓口を自作しない場合は /etc/gate.conf の変数を次の様に変更する。 $TOP_PAGE は /~gate/doc/index.html と設定するとよい。

    $TOP_PAGE = "/~gate/doc/index.html";

    [7.3] 後始末

    本格運用の安全性が確認されたら /ETC および /HOME を削除してもよい。

    また作業用ユーザのアカウントおよびホームディレクトリも削除すること。

    [ep local] mondo たちのことである。


    管理人: gate@ep.sci.hokudai.ac.jp