FTPサーバの構築<War FTP Daemon(WarFTPD):NT系編>
War FTP Daemon(WarFTPD) が、1.82rc7 から動的 IP サービス環境で NAT ルータ越えの PASV サービスができるようになったため、その設定方法等をまとめてみました。NAT
ルータ越えの問題については、
こちらを参照ください。これにより、おやじが提供してきたスクリプトを使用しなくてもPASV
サービスに対応できますので、今後は日本語パッチのみを提供することにします。
ここで記載されている内容は、WarFTPd1.82rc7 以降でないと適合しませんので注意願います。
なお、おやじが確認したのは Windows XP Professional ですが Windows 2000はまず問題ないと思いますが、Windows
9x 系ではこの機能は動作しません(Windows Meで確認)
■WarFTPd のインストール
WarFTPd は、
こちらから入手できます。おやじがダウンロードしたのは、warftpd-1.82-00-RC9-i386.exe
です。英語はどうもと言われる方は、おやじの日本語化パッチを
ダウンロードしてください。
インストールは、まず WarFTPd をインストールし、必要に応じて日本語化パッチをあてます。
- ダウンロードした warftpd-1.82-00-RC9-i386.exe を実行し、インストールする。ファイルは自己解凍形式の圧縮ファイルになっており、実行すると解凍されると共にインストーラが起動するので、指示に従いインストールする。
途中で、いろいろ聞かれるが、基本的にはデフォルトのままで問題はない。設定項目は、以下のとおりであり、基本部以外はインストール後でも変更は可能である。
- スタートメニューへの追加
デフォルトのまま追加する。
- 管理者のEメールアドレス
管理者のEメールアドレスを指定する。
- 日本語化
WarFTPd のバージョンに対応したおやじのパッチをダウンロードし、解凍後に、下記手順で日本語化パッチをあててください。
- War Daemon managerの画面が開いていたら、閉じる。
- WarFTPdをインストールしたディレクトリ配下(ex. C:\Program Files\War-ftpd。WDM.exeと同じフォルダ)にパッチをコピーし実行する。
以降、各種設定を行うが、WarFTPdはデーモンを直接操作するのではなく、War Daemon Managerを介して行う。War Daemon Managerはタスクトレイのアイコンを右クリックし、「Start Manager」で起動する。ログインプロパティはユーザIDがSysadminになっているので、とりあえずインストール時に入力したパスワードを入力しWar Daemon Managerに入る。
■NATルータへの対応
最近は、いくつかのメーカや機種で本設定を行わなくても
ルータで同等の対応を行うものが増えてきているので、まずは、本設定を行わずにPASVを動かしてみるとよい。対応済みルータで本設定を行うと逆にLISTで止まるようになるので注意が必要です。
WarFTPdでは、WarFTPdがインストールされているディレクトリ内に、アドレス運用条件を記述した「nat.conf」を置くことにより、いろいろな制御ができます。従来は、WarFTPdがこのnat.confを読み込んで動作に反映するのは、自身が動作しているマシンのIPアドレスが変化した時とサービス起動された時のみであったため、ルータのWAN側のグローバルアドレスが変化しても追従できなかったので、おやじのほうでスクリプトを用意していました。しかし、1.82rc7 からはnat.conf で指定された周期で再読み込みしてアドレスチェックをしてくれるようになったため、動的IPサービスでもNATルータ配下でのPASVでのFTPサーバ公開ができるようになりました。具体的には、下記のように設定してください。
nat.confでは、アクセスしてきたリモート端末のアドレス(Remote IP range)に応じて、以下の項目が制御できる。
- Activeモード(PORTモード)時のデータコネクション用ポート(Port:デフォルト20番)
- PASVモード時にクライアントに通知する待ち受けアドレス(Host Address)
- そのときに利用する待ち受けポートの範囲(Port-range)
サンプルファイル(nat.conf.sample)が、インストールディレクトリの中にありますが、コメントが多すぎるので下記を参考に自分でnat.confを作成したほうがいいでしょう。但し、サンプルファイルには具体的な使い方の説明が書かれているので、一度は目を通すことを薦めます。設定内容は、Remote
IP range(アクセスしてきたリモート端末のアドレス。大きく3つに分かれ、localhost/家庭内ネットワーク/その他インターネット側についてそれぞれ記述する。)毎に1行書く形式になっています。
# Remote IP range # Port # Host Address # Port range
#----------------- ------- -------------------- ------------
127.0.0.1 0 0
0
192.168.0.0/22 0 0 0
0/0 0
exampleftp.zive.net:5 4000-4029 |
- 1行目(変更不要)
1行目は、localhostに関するもので、Portはデフォルトの20番でなんら問題がないためデフォルトを示す「0」のままとする。Host
Addressもデフォルトのままとする。Port-rangeもデフォルトとなっており、この場合、1024〜65535の範囲で空いているポートが利用される。
- 2行目(家庭内のアドレス体系に合わせ、Remote IP
rangeのみを変更)
2行目は、家庭内のLANに関するもので現在のアドレス体系に合わせRemote IP rangeでアドレスとネットマスクを変更する必要がある。Portはデフォルトの20番でなんら問題がないためデフォルトを示す「0」のままとする。Host
Address、Port-rangeもデフォルトのままとする。
- 3行目(ルータの設定に合わせ、Port-rangeのみを変更)
3行目は、上記2行で指定した範囲外のアドレス(通常はWANからくるグローバルアドレスに対するもので、Remote
IP rangeは「0/0」のまま変更してはならない。Portはデフォルトの20番でなんら問題がないためデフォルトを示す「0」のままとする。
Host Addressは、固定IPサービスならWAN側アドレスが変化しないので、そのアドレスを記述すればよい。動的IPの場合は、「DDNSに登録しているドメイン名:5」
と記述する。DDNSに登録しているドメイン名は、通常なら example.zive.net としてWarFTPd
がこのドメイン名をDDNSで牽くことにより、現在のWAN側のグローバルアドレスを知ることができるが、おやじの場合は内向きDNSが動作しているので、WAN側のグローバルアドレスが牽けるドメイン名として、exampleftp.zive.net というドメイン名を別途Ziveさんからもらいこれを設定してある。後ろの「:5」をこのドメインを5分ごとに検査するという意味である。アドレス変化時にDDNSもすぐに追従するわけでもなく、あまり早くするDDNSへの負荷が増えるだけなので、5分でも十分である。
Port-rangeは、ここで指定したポートに向かって、WAN側から通信が始まる、即ちWWWサーバにアクセスしてくるのと同じ動作のため、ルータでのスタティックNATとフィルタリングの設定が必要となる。このポートはパケット・バイ・パケットで使いまわしされるので、同時接続セッション数+αだけあれば十分なので、セキュリティのことも考え不必要に拡大しないこと。おやじのnat.confでは、4000-4029の30セッション分を確保してある。
これで、後はWarFTPdを再起動しておけば、動的IPサービスを利用していて、ある日突然、WAN側のアドレスが変わってしまっても、自動的に追従してくれるので、安心してPASVでFTPサービスが公開できるようになります。WarFTPdの基本的な使用方法については、
こちらを参考にしてください。
全ての設定が完了したら、まず、ローカルで十分試験をしてください。問題がなく動作していることが確認できたら、おやじの
FTPサーバテストでテストして、外部からも使用できるか確認してください。
デフォルトのままでは、WarFTPd起動時に以下のようなエラーがでます。
[war_error_logger] Exception from line 117 in file "C:\devel\current\war182_stable\jgaadb\src\DbConnection.cpp":
Database error in module "DbConnection::Connect()" SQLDriverConnect(SQL_HANDLE_DBC)
failed. SQL state = "IM002" Native Error = "0" : "[Microsoft][ODBC
Driver Manager] データ ソース名および指定された既定のドライバが見つかりません。" |
これは、WarFTPdがデータベースにログ(セッションとファイル・イベント)を書くことができるようになっており、データベースが無いのにこの機能がデフォルトでonになっているので発生するエラーです。
エラーが出ないようにする対策方法は2つあり、一つはデータベースを使用しないようにする方法(方法1)であり、もう一つはデータベースを用意する方法(方法2)です。特段理由がなければ、簡単なので方法1で機能停止すればよいと思います。
◆[方法1]:データベースを使用しないようにする方法
- 「サーバ」->「アドバンスサーバプロパティ」を開く。
- 「odbc_SOURCE」にデフォルトで設定されている「<default>」を消してブランクにし、「設定」を押下して反映させる。
- WarFTPDを再起動させ、エラーが出ないことを確認する。
◆[方法2]:データベースを用意する方法
- コンソールパネルから「管理ツール」->「データソース(ODBC)」を開く。
- 「システムDSN」を選択する。
- 「追加」でデータソースドライバとして「Microsoft Access driver(*.mdb)」を選択して「完了」を押下する。
- 「データソース名」に「WARSVR」、説明に「WarFTPD(適当に)」と入力する。
- 続けて、「データベース」で「選択」を押して、WarFTPDのインストールフォルダ内にあるの「warsvr.mdb」を選択して「OK」を押して、セットアップ画面で再度「OK」を押す。
- アドミニストレータ画面で「OK」を押してデータベースを作成する。
- 最後に、 WarFTPDを再起動させ、エラーが出ないことを確認する。 以降、「warsvr.mdb」にログが収集される。
Top Pageへ