FTPが鍵なのである

  • 投稿日:
  • by

Windows Live Writerは大変便利なのだが、MovableTypeと組み合わせるとき、画像のアップロードをFTP経由で行なう必要がある。これが、思いの外厄介である。

まず、サーバ上にFTPサービスを用意しないといけない。そして、うちのような、自宅サーバの場合には、そして、家の中と外を行ったり来たりするノートPCを抱えている場合には、かなり面倒なのである。

まず、FTPサーバを用意する。これは、そんなに面倒ではない。元々、自宅内では、滅多に使わないけれど、実験用にFTPサービスを動かしていたから。ただ、これは、ほぼ無制限のサービスだし、試験的にanonymousサービスもやっているので、これをそのまま、外向きに使うのは問題がある。

そこで、proftpdのもつ、VirtualHost機能を使って、別のポート向けに、制限のきついサービスを用意。具体的には、制限されたユーザのみ、制限された機能(Windows Live Writerは、ディレクトリを掘ったりするので、READ STOR MKD DIRSだけを許可し、DELEやRMDは禁止。)、制限されたディレクトリ(~/public_html以下だけ。)へのアクセスのみを提供することにする。

これ自体も、どうってことなく、Limitディレクティブで、ゴリゴリ書いていくだけ。最大の問題は、家の中と外とを行き来するボクのVAIOの扱いだ。

まず、ボクのVAIOは、家の中からでも外からでも、設定を変えずにブログへの投稿をしたい。ところが、単純に、ルータに穴を開けて、この用意したFTPサービスへ外からつなげられるようにすると、家の中から投稿が出来なくなってしまった。理由は、Windows Live WriterのFTPクライアントが問答無用でPASVで走り出すからだ。

もちろん、家の外からは、PASVでつないでくれないと困る。20-21番ポートを開ければ、ルータはよしなにPASVのための穴あけを自動でやってくれるようだけれど、21番を開け放つのは、ちょっとコワイし、何より、前述の通り21番は実験用の家庭内向けFTPが走っている。

なので、proftpdの方で、MasqueradeAddressとPassivePortsで、PASV接続で使う範囲を狭めて、ルータに固定の穴あけをしてある。だが、これをしてしまうと、ここへ家の中からアクセスしても、PASV用に帰ってくるポートが、ルータの外側のアドレスを持ってきてしまうのだ。PORTを使ってくれればいいのだけれど、WLW(Windows Live Writerの略。長いので以下コレで行く。)のFTPはそうはしてくれない。

散々考えた挙げ句に、ひらめいた。(大したことではない。つーか、最初から考えつけ。> オレ)FTPサービスをさらに二つに分けてしまうのだ。家の中からは例えば10021番に向けて、MasqueradeとPassivePortsだけを外したサービスを作り、もう一つ11021番とかで、MasqueradeとPassivePortsをつけたサービスを用意するのだ。これならば、家の中には、PORTだろうとPASVだろうと動くサービスが提供でき、外向けには、ポートを絞ったPASVが提供できる。ただ、このままでは、家の中と外とで、WLWの設定を変える必要が出てきてしまう。だが、外向けには、元々NATでサービスを提供しているので、外側から中へのマッピングを、10021→ftpサーバ:11021にしてやればいいだけだ。これで、外からでも同じ設定でアクセスが出来る。

かくして、いつでも、どこでもWLW環境が整ったのだった。ここまで、させられるくらいに、WLWの便利さは、凄い。いや、これは素直に、賞賛に値すると思う。やるね、マイクロソフト……珍しく :p