IPアドレスでアクセス制御する

第十八回


先日の日記で書いたように,大学の研究室で研究の助けとなるように,過去に発表された論文を保存していつでも閲覧・検索が出来るようにしようと試みた.


とりあえず,先生からお借りしたLink-Stationを設置し,Apacheで運用するWebサーバにネットワークマウントしてみた.IPアドレスももらい,ドメインも割り当ててもらう.このLink-Stationにはすでに先生が各種学会の論文PDFとそのプログラム目次となるIndex用HTMLページを保存しておいてくださっていた.


そこで,まずはWebサーバにアクセスすることでこれらのHTMLページと論文PDFが閲覧できるようにしよう.とりあえず,簡単な要件としては以下の通り,

  1. Link-Station内の各ファイルは極力コピーしたり移動したりしない
  2. 研究室のPCにはクラスCのグローバルIPアドレスが振ってある
  3. 著作権の関係もあるので,全世界に公開するのではなく研究室内からのみ閲覧可能にする
  4. 論文の本文,著者名,タイトルなどから検索出来ると嬉しい

まず1.だが,これはSambaを使ってネットワークドライブを利用 - のほほん徒然で書いたようにしてLink-Stationを自サーバの仮想的なハードディスクドライブとすることで達成.これによってあたかも自サーバに論文PDFが保存されているように扱える.


次に2.と3.だ.研究室内からのみ閲覧可能にするためには様々な方法が考えられるが,今回は固定されたグローバルアドレスが振ってあるPCからのみ見られればいいということで,WebサーバであるApacheの設定によって閲覧を制御してみる.


具体的にはApacheの設定ファイルにちょこちょこっと項目を追加する.自分の場合は/etc/httpd/conf/httpd.confが設定ファイルとなっているので,

  • 論文を見るためのURLを「http://www.example.com/thesis/」にしたいとして
  • 論文PDFたちが実際に保存されているのは「/mnt/nas/papers/」だとした上で
  • 192.168.0.1〜192.168.0.254までのIPアドレスのPCに閲覧を許可するとすると

以下の項目を追加する.
 #当たり前だが,URLとかIPアドレスとかは適当

Alias /thesis /mnt/nas/papers
<Directory /mnt/nas/papers>
    Options Indexes
    AllowOverride None
    Order allow,deny
    Allow from 192.168.0.0/255.255.255.0
</Directory>

まず,一行目の「Alias」はその名のとおりエイリアス指定のためのものだ.上記の例の場合,「http://www.example.com/thesis/index.htmlが見たい.」というリクエストが来た場合,普段のドキュメントルートのファイルではなく,「/mnt/nas/papers/index.html」のファイルをレスポンスとして返すようになる.


さらに,二行目以降では「Directory」ディレクティブでそのディレクトリへのアクセスなどを設定している.
 #Directoryとかディレクティブとかディレクトリとかややこしいな
具体的に行っている設定に関してはApacheのリファレンスの方が詳しくて分かりやすいだろう.とりあえず,特筆すべきは「Allow from 192.168.0.0/255.255.255.0」という記述.これは「192.168.0.0」が当然IPアドレスを表していて,続く「255.255.255.0」がサブネットマスクを表している.つまり,「192.168.0.1〜192.168.0.254」のIPアドレスを持つPCからのみアクセスを許可(Allow)しているわけだ.両端の「192.168.0.0」と「192.168.0.255」はそれぞれ特別なIPアドレスなので,普通のPCには割り当てないため.


さて,長くなってしまった.続きはまた今度.
おしまい