« Gladinet Cloud Desktop ver 3 と Google Docsの組み合わせ | トップページ | 外出先から家のディスクにアクセスする(2):無線LANの話&自宅サーバへapache+SSL環境導入 »

2011年4月13日 (水)

外出先から家のディスクにアクセスする(1):自宅サーバへWebDAVを導入

先日,インターネット上のストレージサービスに個人的なデータを置いておく&簡単にアクセスする方法に関してのエントリーを書きました.その際に少し触れたのは,『パーソナル クラウド』という物.

そもそも『クラウド』って言葉はバズワードだし,実現するために使用されている技術も,実は古くから使われている物そのまま,もしくはその延長線上であったりしていて,必ずしも大きなジャンプがあるわけではない.

今回紹介する『外出先から家のディスクにアクセスする』のベースとなっている技術も同じ.WebDAVと呼ばれるプロトコルで(*1),これは1999年にMicrosoftが開発した物.

そのようなわけで,『パーソナルクラウド』という今風な呼び方をするけれど,自宅サーバを立ち上げているような人であれば,10年以上前から実現していた内容です.ftpに皮を被せる方式であれば,さらに古くから利用していた人も居るでしょう.

ある意味,今更解説するまでもない,枯れた技術と言えます.しかし,常時接続のブロードバンドが広く普及し,更にはモバイル環境でも『どこでもインターネット』が利用出来る現在のような環境になって初めて,その真価を発揮できるようになった技術とも言えましょう.

(*1)巷の製品やサービス全てがWebDAVをベースにしているという意味ではありません.専用のプロトコルを使用している物もあります.

では本題に入りましょう.例によって,CentOS 5のサーバ上に諸々設定を行う方法について解説します.

流れとしては,

  1. WebDAVの設定・インストール
  2. パスワード認証の追加
  3. その他運用する際に必要な事柄

の順で解説することにします.

1.WebDAVの設定・インストール

CentOS 5の場合,WebDAVを動かすためのソフトやファイル一式は,apacheのパッケージの中に含まれています.rootで次のように実行し,apacheをインストールして下さい.ちなみに私の環境では,"httpd-2.2.3-45.el5.centos.i386"がインストールされました.

# yum install httpd

次にapacheの設定を行う必要がありますが,今回は割愛.まぁデフォルトの設定でもそのまま動きます.今回はWebDAVの設定部分のみ説明します.

apache の設定ファイルである /etc/httpd/conf/httpd.conf を,エディタ(viやemacs等)で開いて下さい.そしてコメントアウトされている以下の4箇所を編集し,先頭の"#"を消して有効化して下さい.

(1)モジュール1
 LoadModule dav_module modules/mod_dav.so

(1)モジュール2
 LoadModule dav_fs_module modules/mod_dav_fs.so

(1)lock DBの設定
 <IfModule mod_dav_fs.c>
     # Location of the WebDAV lock database.
     DAVLockDB /var/lib/dav/lockdb
 </IfModule>

次に,WebDAVで公開する場所を設定します.

WebDAVは,ここで指定したディレクトリ以下をファイル置き場として利用し,ファイルのアップロードやダウンロードが行えるようになります."/etc/httpd/conf/httpd.conf" を編集し,以下の設定をファイルの末尾に書き加えて下さい.

なお,以下の例では,DocumentRootがデフォルト通り"/var/ww/html"であることを期待しており,"http://サーバ名/webdav/"としてアクセスした場合,"/var/www/html/webdav"以下を参照することを想定しています.

<Directory /var/www/html/webdav>
    DAV On
</Directory>

設定が終わったら,指定したディレクトリを作成し,apacheを再起動します.

# mkdir /var/www/html/webdav
# chown -R apache:apache /var/html/webdav
# /etc/rc.d/init.d/httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

ついでに,linuxがブートした際に,apacheが自動起動するように設定しておきましょう.

# /sbin/chkconfig httpd on   ←自動起動設定
# /sbin/chkconfig --list httpd ←現在の起動設定を確認
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

 一通り設定が終わったら,LAN内のマシンからwebブラウザで,"http://サーバ名orIPアドレス/webdav"にアクセスしてみて下さい.エラー無く表示出来たら完了です.

ただし,まだ何もファイルを置いていませんので,中身は空の状態(ファイル名のリストには何も表示されない)になっている筈です.

2.パスワード認証の追加

では次に,パスワード認証を設定してみましょう.この設定を行わない場合,URLを知っている人であれば誰でも内容にアクセス出来てしまいます.つまり,ドアを開けっ放しのセキュリティ的に好ましくない状態です.そのようなわけで,『パスワード認証』という鍵をかけることにしましょう.

apacheでコンテンツに対してパスワード認証を設ける場合,BASIC認証が利用されることが多いでしょう.しかし,BASIC認証では,ユーザ名とパスワードがネットワーク上を平文で流れてしまいます.通信路をSSLで暗号化している場合は別ですが(これについては次回解説予定),今回の目的のような外部からのアクセス,もしくは無線LANを経由してアクセスする可能性があるサービスで利用するのは,避けた方が良いでしょう.

そこで今回は,パスワードが暗号化して送信される,Digest認証を使用することにします.

"/etc/httpd/conf/httpd.conf"を開き,先に追加した部分を以下のように書き換えます.

<Directory /var/www/html/webdav>
    DAV On
   
AuthType Digest
    AuthName "Authorization Required"
    AuthDigestDomain /webdav
    AuthUserFile /var/www/acl/.htdigest
    Require valid-user

</Directory>

次に,パスワードが記録されたファイルを作ります.

# mkdir /var/ww/acl
# htdigest -c /var/www/acl/.htdigest 'Authorization Required' <ユーザ名>
Adding password for <ユーザ名> in realm Authorization Required.
New password:<パスワード入力>
Re-type new password:<パスワード再入力>

エラー無くパスワードファイルが出来たら,"/etc/rc.d/init.d/httpd restart"を実行し,apacheを再起動して下さい.再起動後に,webブラウザでアクセスするとパスワードの入力を求められ,また,正しく入力しないとアクセス出来ないようになっていたら,設定は完了です.

***

WebDAVで作成したファイルのオーナーは,全てapache:apacheになります.そのため,複数のユーザで使い分けたりする場合は,ちょっとした工夫が必要です.

例えば,ユーザ毎,または複数のユーザで共有するディレクトリを分けたい場合,複数のディレクトリでWebDAVをサービスするように設定すると良いでしょう(*2).また,それぞれに対して利用可能なユーザを分けたい場合は,".htdigest"に全員分のアカウントを登録しておき(*3),各ディレクトリの"Require"ディレクティブに,当該ディレクトリを利用可能なユーザ名を列挙しておくのが良いでしょう.公開ディレクトリ毎に共有アカウントを作るというのも手ですが,事故があった際に,問題のユーザ/アクションを追跡するのが困難になる場合がありますので,共有アカウントは避けた方が良いでしょう.

(*2)ベタな書き方をすると,例えば "/var/www/html/webdav1" と "/var/www/html/webdav2" のように分ける等.
(*3)パスワードファイルにユーザを追記する場合,"-C"オプションを抜いてhtdigestを実行します.既にファイルが存在している状態で"-c"を付けて実行した場合,内容を上書きしてしまいます.注意が必要です.

3.実際に運用する際に必要な事柄

以上でサーバの設定は完了ですが,(LAN内ではなく)外部から利用する場合は,以下の2つの設定もしなければなりません.

  1. ルータの穴開け
  2. 固定IPアドレスサービス,もしくはダイナミックDNSの利用

WebDAVは,HTTPと同様に80番ポートを使用します.自宅サーバのwebを外部公開するときと同様,外部からルータに対して80番ポートへのアクセスがあった場合,今回設定したサーバの80番ポートへ転送(ポートフォワード)するように設定しましょう.フレッツ光を使用しており,ctuの下にもう一台ルータを入れているような構成の場合は,ctuとルータの両方にこの設定が必要になります(『ctu→内部ルータ』と『内部ルータ→サーバ』の2つ).

次に,外部から参照する際のIPアドレス/ホスト名に関して.一般の家庭向けインターネット接続サービスの場合,ルータに割り振られるIPアドレスは可変です.そのため,外部から自宅のマシンへアクセスしようとした場合,『今現在使用されているIPアドレスが何であるか』を知る必要があります.

『その都度調べて…』なんてことは非現実的ですので,一部のプロバイダのオプションにある『固定IPアドレスサービス』を利用したり,ダイナミックDNSを利用しましょう.

前者は企業向けのことが多く,値付けが高めのことが多いです.後者は大抵は無料な上,使い勝手も良いのでお薦め.例えば,"http://hogehoge.dyndns-web.com"のような名前でアクセス出来るようになります.

私は,かれこれ10年くらいDynDNSを利用しているのですが,今までトラブったことは1回だけであったように思います.IPアドレスが変更されたかのチェックは,ddclientをlinux上で動かして使用しています.この組み合わせは実に堅牢.

かなり昔になるのですが,元同僚は国内の同様のサービスを利用していました.そして聞くところによると,年に数回トラブっていました.そういう面では,DynDNSは安心してお勧めできます.

その一方で,DynDNSを利用する場合の注意点と言いますか,面倒な部分もあります.無料契約の場合,1ヶ月間IPアドレスが変わらなかった場合は,管理画面に一回ログインしないと無効になってしまう(アドレスが引けなくなってしまう)というものです.確か去年,このような面倒な内容に契約が改悪されました.ちなみに有料コース($15/y)の場合は,この制限がありません.

近年は国内でも大手ISPがサービスを提供初めていたりしますので,以下のページを参考に,自分に合ったサービスを探してみては如何でしょうか.

参考ページ:無料ダイナミックDNS(フリーDDNS)比較

***

『もっと手軽に出来んのかね?』と,思われた方向けの話

と,ここまで読んで,『ひひゃー.大変そう』と,思われた方は,Pogoplug Proを使うのが良いでしょう.

この製品は,USBディスクを繋ぐだけで,ディスクの中身を外部から参照できるようにします.とても手軽.更には,単なるディスク共有だけでなく,音楽や動画のストリーミングまで簡単に行えます.商品紹介ページはこちら

この商品,Amazonであれば12,300円で購入できます.気合いを入れて自宅サーバを構築しなくても,ちゃちゃっと買ってきてパチッと繋げば即使えるようになるなんて,良い時代になった物です.

ちなみにPogoplugですが,中ではLinuxが動いているそうで,ゴニョゴニョすると外部からsshでログイン出来るそうな.そのような方面でも遊べそうですなガジェットですな.

|

« Gladinet Cloud Desktop ver 3 と Google Docsの組み合わせ | トップページ | 外出先から家のディスクにアクセスする(2):無線LANの話&自宅サーバへapache+SSL環境導入 »

コメント

初めまして、松垣といいます。
拙作の Yardbirds ラジオに WebDAV サーバ上のファイルをストリーミング再生する機能を付けました。この環境にうってつけのモノだと思います。

投稿: 松垣卓士 | 2012年11月 7日 (水) 12時54分

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/198640/51151639

この記事へのトラックバック一覧です: 外出先から家のディスクにアクセスする(1):自宅サーバへWebDAVを導入:

« Gladinet Cloud Desktop ver 3 と Google Docsの組み合わせ | トップページ | 外出先から家のディスクにアクセスする(2):無線LANの話&自宅サーバへapache+SSL環境導入 »