WebDAVを設定する

Sambaでファイルサーバーを立てるほどではないけど、ちょっとしたファイルのやり取りを行いたい場合に便利なのがWebDAVです。httpプロトコルを用いてファイルの送受信を行うので、httpサーバーがあれば簡単な設定だけで利用できるようになります。

前提条件

WebDAVを利用するにはApache httpdのインストールが済んでいること、mod_sslの設定とSSL(https)の設定が完了していることが条件となります。終わっていない場合はあらかじめ設定しておきます。

また、VPN内部からのみの利用を前提としていますが、WindowsのエクスプローラでWebDAVを利用する場合はhttps接続が必須のようですので、SSLの設定も完了しておきます。

サーバーのオレオレ証明書をクライアントにインポートし、証明書エラーが出ないようにしておいてください。

ここまで完了したら、WebDAVの設定を行います。

mod_davモジュールについて

Apacheをyumなどで普通にインストールしていれば、WebDAVの動作に必要なmod_dav_*モジュールは自動的にインストールされています。

[root@sakura ~]# cd /etc/httpd/modules/
[root@sakura modules]# ls -la mod_dav*
-rwxr-xr-x 1 root root 102400 10月 20 05:40 mod_dav.so
-rwxr-xr-x 1 root root  57120 10月 20 05:40 mod_dav_fs.so
-rwxr-xr-x 1 root root  19632 10月 20 05:40 mod_dav_lock.so
[root@sakura modules]#

この3つがあれば大丈夫です。

また、モジュールが読み込まれる設定になっていることを確認します。CentOS 7の場合は以下のファイルになります。

/etc/httpd/conf.modules.d/00-dav.confLoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_lock_module modules/mod_dav_lock.so

これらのファイルはApache httpdが起動する際に自動的に読み込まれるよう、/etc/httpd/conf/httpd.confに定義されています。

WebDAV設定ファイルの準備

Davを有効にするために/etc/httpd/conf.d/dav.confを作成します。ファイル名は何でも良いです。conf.dディレクトリもApache httpdが起動する際に自動的に読み込まれるディレクトリです。

設定の要件は以下の通りです。

  • SSLのみの接続に限定する。
  • Basic認証を設定する。
  • VPNからのアクセスに限定する。
/etc/httpd/conf.d/dav.confAlias /dav /var/apps/dav

<Directory "/var/apps/dav">
  Require all granted
</Directory>

<IfModule mod_dav.c>
        DAVLockDB db/DavLockDB
        <Location /dav>
                Dav On
                Options Indexes
                SSLRequireSSL
                AuthType Basic
                AuthName "WebDav require user session."
                AuthUserFile  conf/dav_htpasswd
                Require valid-user
                Order deny,allow
                Deny from all
                Allow from 127.0.0.1 10.8.0.1/24
        </Location>
</IfModule>

/var/apps/davディレクトリを/davディレクトリに設定しています。https://[サーバーのIPアドレス]/dav/ でアクセスできるようになります。

<Directory "/var/apps/dav">
  Require all granted
</Directory>

これはApache 2.4系から必須の設定のようで、指定されたディレクトリにhttpd経由でアクセスする権限を設定します。

BASIC認証に必要なパスワードファイルを/etc/httpd/conf/dav_htpasswdとして作成します。パスワードファイルの作成には、htpasswdコマンドを使用します。初回作成時は-cオプションが必要ですが、2回目以降は-cを付けるとdav_htpasswdが初期化されて既存のパスワードがすべて消えてしまうのでご注意を。-bオプションは引数にパスワードを指定します。

[root@sakura httpd]# htpasswd -b -c /etc/httpd/conf/dav_htpasswd <<<ユーザー名>>> <<<パスワード>>>
Adding password for user ユーザー名
[root@sakura httpd]#

VPNネットワークからのみのアクセスに制限する設定は以下で行っています。

Order deny,allow
Deny from all
Allow from 127.0.0.1 10.8.0.1/24

設定が完了したら、systemctl restart httpd で再起動しておきます。

Windows環境からDAVに接続する

WebDAVの構築が完了したら、Windows環境から普通のドライブと同じように使えるようにする設定を行います。一応ブラウザでアクセスしても、WebDAVディレクトリの中身を見ることができますが、これでは読みは出来ても書きが出来ないため、一般的にはエクスプローラからネットワークドライブの追加で行います。

image

WebDAVをネットワークドライブとして追加する場合、一般的には「ネットワークの場所の追加」を選択しますが、なぜかコレで追加しようとすると上手くいきません。

QS_20180415-053958

「入力したフォルダ―は有効ではないようです。別のフォルダ―を選択してください。」とのことなのですが、別のフォルダ―なんてありません。

次に試してみたいのが、net useコマンドによるネットワークドライブの割り当てです。

QS_20180415-054724

これで設定する場合は、コマンドプロンプトを管理者モードで起動します。net useコマンドでApache httpdで構築したWebDAVのパスを指定して、ネットワークドライブの追加を行います。

C:\WINDOWS\system32>net use Z: https://10.8.0.1/dav/
'10.8.0.1' のユーザー名を入力してください: ********
10.8.0.1 のパスワードを入力してください: ********
コマンドは正常に終了しました。

C:\WINDOWS\system32>

アカウントは、BASIC認証で設定したユーザー名とパスワードを使用します。このコマンドを使用すると即座に反映されてZドライブがWebDAVディレクトリに割り当てられて、参照できるようになるはずですが、たまにドライブが表示されないこともあるようです。そんな時は、「ネットワークドライブの割り当て」でドライブにZ:とフォルダーにWebDAVディレクトリを指定して追加すると上手くいきます。

QS_20180415-055109

あとは、再起動をしてもドライブの自動接続が有効になっているかを確認します。

ファイルなどの作成や削除を試してみましょう。ディレクトリを作成したり削除する際にエラーになる場合、権限が適切でない可能性があります。Davディレクトリは、apacheの実行ユーザーで読み書きが可能になっている必要があります。

iOSからWebDAVに接続する

WebDAVは一般的なプロトコルなので、DAVプロトコルに対応したクライアントアプリがあれば、iOS(iPhone/iPad等)やAndroid、MacなどOSを問わずに接続することができます。

Windows以外からはiPhoneでしか試していませんが、個人的にはFileExporer Pro(有償版。無償版のFileExplorerもあります)が、とても便利だと感じました。

WebDAVはもちろん、以外にもGoogle DriveやOneDrive、DropBoxなどのクラウド系ストレージから、FTP(SFTPも可)、Windowsファイルサーバーなどにも接続でき、無償版では1接続先ですが、有償版では複数の接続先を設定できるので、ファイル管理をまとめられるのが便利です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください