anchor
懸案になっていたFTPサーバが復活した〜FTPについて、サーバ熱問題についていろいろ考えた
ここのところ、週一で落ちていたFTPサーバが新型AirMacBS導入以降完全に死んでしまい全く機能しなくなった問題だが、ついに解決のときが来た。
We Shall Overcome!!
しかもその失敗の理由はわかってしまえばすごく簡単なことだった。
一連のFTPサーバ騒動については以下を参照ください。
ホコリをかぶっていたiBook DualUSBをWebサーバに転用してみた〜InsomniaXでフタ閉じノートサーバは危険か?<追記あり>
今度は自宅サーバでftpサーバを実現するぞ〜老兵iBook DualUSBにはもうひと働きしてもらおうか
ftpサーバに生まれ変わったiBookをさらに微調整〜クライアント使用するためにPASVモード対応
例の自宅Webサーバ兼ftpサーバが毎週落ちている
自宅サバもダメかもわからんね〜失敗続きでヘコミ中〜その2
iBook自宅サーバ相変わらず週一ダウン〜徹底的に軽量化してみることにした
AirMac Extreme導入〜概ねスムーズだったのだけどFTPサーバ公開に失敗?
結論からいうとDMZとして用意されているデフォルトホストとポートマッピングで使われているNAT-PMPが競合してどちらも機能しなくなっていたということだ。
新型AirMacがデフォルトでそういう設定になっているのか、旧AirMacの設定をインポートしたからそうなったのかは不明。
昨晩AirMacがクラッシュして全部設定し直したので、その時に確認すればよかったのだけど修理中は修理することにばかり気がいっているので、あとで「キャプチャーとっとけばよかったな」なんて毎回思ってしまう。
それはともかく、あと週一web関連のサーバ機能がルータ巻き添えで落ちていた理由も、熱暴走かInsomniaXとmDNSResponderのコンフリクトあたりに絞り込まれた。
どうも前者が可能性が高い感じがする。
これは切り分けのためしばらくInsomniaX抜きで運用してみる。
と答えだけ書くとすごく簡単なことに見えるが、ここまでたどりつくまでに久しぶりに激闘をした。
まず、MacでFTPサーバを上げようなんて酔狂な人があまりいないせいか、そこらの詳細な解説が少ないことにも苦しんだ。
UNIXやLinuxの解説は結構たくさんある。
Windowsの解説もないこともないという程度にはある。
しかしMacでとなると
「まずTerminalを起動してvimでconfを・・・」
という調子になる。
GUIでFTPを運用しようというのはほぼ酔狂らしい。
詳細に入る前にいろいろリサーチして知ったことも書いておく。
FTPというプロトコルについて
言わずもがなのTCPベース(UDPは使わない)のファイル転送専用のプロトコルで、ネットワークでファイルの受け渡しで使われる。
Windows世界ではIISのプロトコルとして馴染みがあるかもしれない。
最近仕事でもFTP転送を利用した機器を扱うことが多くなったので、改めてこのプロトコルについて自分にほとんど知識がなかったことを思い知った。
各種あるインターネットのプロトコルの中でも結構古くさいプロトコルになるんだそうだ。
そのせいかセキュリティにも問題がないこともない。
基本暗号化されない通信だし、PASVで転送ポートを任意指定するなんて結構場当たり的な感じもしないでもない。
そのためにNAT、ファイアウォールで守られた当世風のネットワークでの運用は面倒なことになる。
今回私がはまったのもその辺りの事情か。
自由なタイミングでファイルの転送を実現できるしファイルを要求する側からの一方的なオーダーでやり取りが完結できるが、自宅でFTPサーバを立てるというのは容量制限がないなどの便利な面があるものの、これだけクラウドコンピューティングとかいっている時代に逆行している気がしないでもない。
ええ、ええ時代遅れな男ですよ。不器用ですから、自分(何高倉健気取ってるのか)
とにかくこの結論にたどりつくまでに試したことを書いてみる。
1)システムデフォルトのFTPを試す
2)ルートディレクトリ限定のconfを試す
3)XAMPPを試す
4)DMZを試す
5)DMZとPMPの問題に気付く
6)PureFTPd Managerに再び戻る
7)→あがり
という感じか。
1)システムデフォルトのFTPを試す
2)ルートディレクトリ限定のconfを試す
大体そもそも、全く機能しないのはPureFTPd Managerに問題があるのかもしれない。
それで切り分けのために別のFTPサーバを試すことにした。
別のサーバを試すということなら、MacOSXにはもともとFTPサーバがバンドルされている。
それはこんな馴染みある場所にある。
システム環境設定の共有ペインにあるFTPアクセスのサービスを有効にする
この項目は何故かLeopard以降は隠されているがTigerまではこの通りGUIで見えていた
と書いたらTwitterにGururiさんから情報を頂いた
Leopard以降のOSXもFTPを完全にGUIから排除してしまったわけではなく
システム環境設定/共有/ファイル共有/オプションの中に
FTPサーバ有効のチェックがあるとのこと
情報ありがとうございました
iBookからPureFTPd Managerをアンインストールして再起動、システム環境設定の共有ペインでFTPを有効にした。
その結果ローカルでのFTP共有には成功した。
しかしこの方法はいくつか問題点がある。
まずはデフォルトルートを設定できる項目が見当たらないこと。
デフォルトルートというのは共有を開いた時に相手のクライアントから見える一番上の階層のことで、この素のFTPを使うと、共有フォルダだけでなくその上のユーザ境域全域もシステム領域も全部見えてしまう。
要するに相手からコンピュータの中身を自由に覗くことができるようになってしまうことだ。
いくらサーバ専用で個人情報は入れないといったって、さすがにシステム領域まで自由自在というのはまずい。
これはconfファイルにデフォルトルートの設定を追記することで解決できるとUNIX系のページに大抵解説が書いてあるが、肝心の.confファイルがどこにあるのかわからない。
これはかなり探しまわったが、MacのFTPコマンドはちょっとUNIXとは仕組みが違うらしく当てずっぽうで入れてみたconfファイルの設定追記はすべて読み込まなかった。
これについては引き続きリサーチ中だが、ちょっと根負けしていたところだ。
もう一点まずいことがあって、PASVモードの時のファイル転送ポートを絞り込むことができないということだ。
アクティブモードとパッシブモードについてはこちらのページが大変参考になった。
アクティブFTPとパッシブFTP
FTPはアクティブモードの時はポート21番でコントロール情報を、20番でファイル転送をいずれも「双方向で」やっていることが解説されている。
だからNAT越し、ファイアウォール越しで通信する時には20番と21番のポートを開いたりポートマッピングしないといけない。
でも一般的にWebのFTPサーバはパッシブモード(PASVコマンド)が利用される。
このPASVの場合は、コントロール情報が21番でやり取りされるのは同じだが、ファイル転送、認証情報転送、ファイルリストダウンロードなどは1024番から65535番までの任意のポートで行われる。
その任意という意味は毎回セッションごとにランダムで決定されるという意味だ。
ということはPASVに対応するサーバを上げているなら1024番から65535番までのすべてのポートを開いてすべてをサーバにポートマッピングしないといけない。
TigerのシステムデフォルトのFTPにはPASVモードというチェック項目もあるが、これは単にそういうランダム転送ポートをサポートするというだけで、これの詳細な設定はできない。
Leopard以降にいたってはUNIX的な手順を踏まないとFTPサービスそのものが利用できない。
そういう設定はできないし、できてもファイアウォールを外すのとほぼ同義でセキュリティ的にも結構問題がありそうだ。
.confで転送ポートを制限するという解説も見つけたが、こういう知識もMacのconf構造を解明しないと役に立たない。
以上の理由でシステムバンドルのFTPサービスを利用するのはあきらめとなった。
WindowsのFFFTPで見ているとどうもセオリー通り1024番から65535番の
任意のポートが認証やファイルリストダウンロードに使われているようで
残念ながらファイル転送以前に接続そのものが失敗する
このポート番号制限をなんとか実現しないとどうにもならないことが判明
3)XAMPPを試す
BBSに情報を頂いたXAMPPを試してみた。
これはなかなか興味深いアプリだったが、結論からいうと今回のFTPサーバを立てるという目的には、システムバンドルのサービスとドッコイぐらいの機能しかなかった。
というよりシステムバンドルのFTPサービスをどうやら起動しているようだ。
だから、設定に関する問題点は上記システムバンドルのFTPと全く同じだ。
以前はproFTPDというFTPdaemonをバンドルしていて、それをコントロールするアプリだったらしい。
その当時は使えたかもしれないが、今はほぼオマケ機能になっている。
それだけFTPサーバを立てたいという需要が激減しているということだろうか。
インストールも簡単、入れてすぐにFTPを利用できるXAMPP
しかし残念ながらシステムバンドルのFTPサービスを利用するらしく
問題点もシステムのFTPとほぼ同じだった
ただこのSQLやphpまでコントロールできるのは面白いかもしれない
Leopard以降はFTPやこうしたサービスのコントロールが不自由になってしまったので
そうした機能を使いたい層にむしろ需要があると思う
ただしこのXAMPPというアプリは名前の通りMySQLやphpなどを運用したい時には便利なアプリになるかもしれない。
(XAMPPという名前はLAMPPつまりLinuxのApache、MySQL、phpを使える環境から来ていて、これのWindows版がWAMPP、MacOSXに対応したのがXAMPPということらしい)
ApacheについてはMacにそもそもバンドルされているWebサーバ機能がApacheなので馴染みがあった。
調べているうちに面白いことを知った。
ここで余談をひとつ。
システム環境設定の共有ペインでパーソナルWEB共有にチェックを入れる
するとMacがWebサイトサーバに変わる
これがMacのApacheサービス
そして/Library/WebSerber/Documentに入っているたくさんの
index.htmlのうちindex.html.ja.jsというファイルの拡張子から「.ja.js」を取り除く
index.htmlというファイル名称にしておく
そしてそのサーバのドメイン(ローカルならhttp://10.0.1.2/のようなURL)、
サブドメインなしで覗いてみよう
「あなたの予想に反して」こんなページが見えただろうか
この懐かしいApacheのスターティングページはLeopard以降
味気ないマニュアル目次に変わってしまったがTigerでは見ることができる
ホームページ開設テストをしていた当時はこの画面にワクワクしたものだった
4)DMZを試す
5)DMZとPMPの問題に気付く
などと余談に時間を費やしているが、肝心のFTPサーバの問題はいっこうに片付かない。
それでいろいろ調べているうちに、FTPサーバ、WebサーバなどはDMZに置くべきだという記述を見つける。
DMZは企業などの大規模ネットワークが構築するのは知っていたが、個人が自宅のネットワークにDMZを置けるのかというのは知らなかった。
これが実は結構な種類のルータがDMZをサポートしているらしい。
問題はルータ兼用として使っているAirMacにDMZの機能があるかどうかだ。
ここで用語解説〜DMZ
元は軍事用語のDeMilitarized Zoneから来ている。
意味は「非武装緩衝地帯」「非武装中立地域」というような訳語が当てられるが、交戦状態あるいは緊迫したふたつの軍事勢力が協定を結んで、双方の前線の間に「一切の武装を認めない緩衝地域」を設けて休戦状態を維持する、そういう地域をDMZという。
朝鮮半島の38度線とかをイメージすれば良い。(38度線は非武装というより一切の立ち入りが禁止されているが)
それでネットワーク用語でいうDMZとは企業などの構内ネットワークをファイアウォール、L3スイッチなどで守り、その外側のインターネットに繋がるWANエリアにややセキュリティの規制がユルいエリアを設けて、そこにWebサーバなどを置くというもの。
内部のネットワークと同じ規準でガチガチに守ってしまうとWebサーバとしては使い物にならないが、ユルいポート制限、管理権制限だけで守って内部のネットワークと完全に切り離してやればWebサーバとしての自由度も確保できるし、万一このサーバがやられても内部のネットワークのよりクリティカルな部分は守られる。
DMZというそのものズバリな設定項目を用意しているルータもあるそうだが、エアポにはそんな項目がない。
と思って探していたら
「AirMacではデフォルトホストがDMZにあたる」
という記述を見つけた。
そこで以下の設定を試した。
10.0.1.1からIPを振っていくDHCPを設定しているとデフォルトホストは
10.0.1.253という表示がAirMac ユーティリティに見える
この意味が分からなかったのだがこのIPがDMZ専用のIPアドレスという解説を見つけた
そこでDHCPの固定IP予約でiBookサーバにこのIPを割り当ててみた
NAT項目でデフォルトホストが有効であることを確認する
iBookサーバはデフォルトホストの10.0.1.253のIPで公開されたがFTPは認証失敗が続く
ポートマッピングのNAT-PMPと同時に使えないという記述を見つけたので
上のキャプチャのPMPのチェックを外したがやはり認証に成功しない
この設定に希望を抱いたが、残念ながらこれも認証に成功しない。
PASVモードにこだわるならNATの外に出すことに成功してもサーバ自体のファイアウォールも解除しないといけない。
そこまでセキュリティ精度を落とすにはもう一工夫必要に感じたが、いずれにしても認証に成功しないと前に進めない。
この認証に成功しない問題は、これもリサーチ中でいずれきちんと検証したい。
ただこの問題について調べていた時に興味深い記述も見つけた。
DMZ(デフォルトホスト)とポートマッピングのNAT-PMPは同時に使えないとのことだ。
それでポートマッピングのPMPの設定を外したがやはりDMZのFTPサーバにログインできない。
ただ成功したとしてもこれは困る。
今後別のMacでVPNにトライしようと思っているので、ポートマッピングが使えなくなるのは困る。
それもそうなのだが、現状デフォルトホストとポートマッピングの設定がどちらも有効になっていることに気がついた。
そこでさっそくDMZの設置は諦めてデフォルトホストの設定を無効にした。
これがビンゴ!
だった・・・
6)PureFTPd Managerに再び戻る
ということでデフォルトホストを外した設定で、ポートマッピングでLAN内のiBookサーバをFTP公開するために、再びアンインストールしたPureFTPd Managerをインストールし直した。
これがビンゴで、前の通りFTPサーバ公開に成功した。
結論は新型AirMacを導入した時に前のAirMacの設定を引き継ぐモードで導入したが、新たに加わったデフォルトホスト機能がオンのデフォルト設定と前のポートマッピングPMPオンの設定に矛盾があってこれがぶつかり合っていたためにサーバ公開ができなかったらしい。
これで完全復活だ。
どう完全復活したかというと、FTPサーバが立ち上がってわずか2時間でmDNSResponderのクラッシュでサーバがAirMacを巻き込んでクラッシュしてしまった。
そういうところまで復活してしまった。
この問題はこのDMZ設定とは別の原因で起きていたということだ。
これについてはこれから検証する。
念のためにこういう設定の矛盾が他にもあるかもしれないので、AirMacBS、AirMacExpressは全部初期化してから設定をやり直した。
念のためにというよりAirMacの設定が完全に壊れてしまい、イチから設定し直すことを余儀なくされたのだが。
どうもMacの移行アシスタントといいこのAirMacユーティリティの設定を引き継ぐ機能にしても、一見便利なのだが使うとトラブルの元になるということらしい。
AirMacユーティリティのインターネット/NATの項目にあるデフォルトホストのチェックを外した
これでポートマッピングを有効にしてサーバをまたPureFTPd Managerで公開した
なぜそこまでPureFTPd ManagerにこだわるかというとやはりPASVポートを制限できるから
PASVポート番号を前の通り42000番から42010番の11ポートに制限する
このポートをiBookサーバにマッピングするのだがその記述は間に
カンマだけ入れて番号を続ければ良いことがいろいろ試してわかった
ポート番号記述の文字数に制約があるので11ポート全部ひとつのルールに書くことはできない
なのでPASVに関するポートのルールをふたつ作って半分ずつ設定した
これでサーバのログを見ていると認証に成功したことがわかった
DoS攻撃対策として最大15セッションまで受け入れる設定にしているが一人の接続で
数個ポート番号を使うので15セッションだと
2〜3人くらいしか同時に接続できないこともわかった
まあ自宅サーバなら充分だが
Windows版FFFTPはファイルリスト取得に失敗して前に進まなかったが無事成功した
認証成功しファイルアップロードにも成功!
と思ったら2時間でサーバがダウン
AirMacユーティリティで見ても親ベースステーションも子Expressも一切見えなくなってしまった
サーバ側のiBookのログを見るとmDNSResponderのエラーを吐き続けて止まってしまっている様子
やっと元に戻って今日も元気にクラッシュだぜ
iBookサーバの温度管理アプリで確認すると最高温度は59度
ディスクでこの温度ならCPUは90度に届いたかもしれない
お茶を沸かせるほどの温度になれば熱暴走の可能性もあるし
InsomniaXとのコンフリクトの可能性も否定できない
ということでiBookサーバはInsomniaXを休止させてCaffeineを常駐させてスリープしない設定にした。
当面蓋を閉じて運用は諦めて、ふたを開けて様子を見ることにした。
これでもmDNSResponderのエラーが出るようならInsomniaXはシロということになる。
熱が原因かどうかは冬になればわかるか。
とりあえずいまのところ稼働している。
今回は長いトンネルだったが、ひとつトラブルが解決すると気分は良い。
ここのところいろいろ失敗続きだったからね。
「成功するまで止めなければ失敗はしない」
というどなたかがいわれた格言を思い出した。
こんな感じで愚直にやっていきます、これからも。
<さらに追記・余談>
ところでサーバとして復活したiBookだが、この電力需給逼迫の状勢の中、個人も15%の節電が要求されているのに開きっぱなしで運用するのに問題がないデモナイ。
ところが我が戦友iBook DualUSBはCaffeineでスリープしない設定にしているにもかかわらず、画面は暗く消えている。
その理由はこれだ。
iBookの液晶バックライトが突然消える
〜ヒッさしぶりにiBookの開腹手術なんかやってみるか
つまりこのiBookは起動しっ放しでも自由に画面を暗くすることができる。
まったく人間万事塞翁が馬だ。
何が幸いになるかわからない。
iBookはこの通り蓋を開きっぱなしにしてスリープしない設定でサーバ運用している
にもかかわらず画面が消えているのは今日の電力事情を
予測して故障してくれたiBookクンの深謀遠慮のおかげ
2011年7月4日