先日WindowsXP+RaidenFTPd+Ba8000Proでサーバーを立てました。
PASVのデータポートを1401〜1410がRaidenFTPdの初期値でしたので,
BA8000Proにて
(1)NAPTの設定 NAPT:有効,FTP制御ポート:21
(2)静的マスカレード tcp * * WAN-IP 21 LOCAL-IP 21
(3)静的フィルタ(WAN->LAN1)
pass tcp [e]syn * * LOCAL-IP 21
pass tcp [e]syn * 1401-1410 * 1401-1410
discard tcp [e]syn * * LOCAL-IP *
※ WAN側のクライアントは FC3 + gFTP 2.0.18
このようにした場合,接続できません。
そこで,(3)を
pass tcp [e]syn * * LOCAL-IP *
こうすると接続できました。
サーバー機の方へはファイアウォールを入れているとはいえ,これで
公開するのは非常に不安です。
また,LAN0->LAN1の場合,
pass tcp [e]syn * 1401-1410 * 1401-1410
この部分を
pass tcp [e]syn * 1401-1999 * 1401-1999
のように広く取ってやると接続できました。
※ LAN0側のクライアントは Windows2000 + FFFTP
どうしてこのような現象が起こるのか分かりません。
なお,LAN0>LAN1で,1401-1410のみ開けていた時に FFFTPでは,
>ダウンロードのためにホスト 192.168.?.? (1401) に接続しています.
というメッセージで止まりタイムアウトしてしまいます。
何か開けるポートを制限するいい方法はありませんでしょうか?
> pass tcp [e]syn * * LOCAL-IP 21
> pass tcp [e]syn * 1401-1410 * 1401-1410
2行目も1行目と同じ記述にすれば良いのじゃないのでは?
pass tcp [e]syn * * LOCAL-IP 1401-1410
返信ありがとうございます。 pass tcp [e]syn * * LOCAL-IP 1401-1410 これでもだめでした。 現在は pass tcp [e]syn. * * * * このようにしていますが、 ポートが全開でないとつながらないというのではセキュリティも あったものではないので頭を悩ませています。 internet | [NTT光回線終端装置] | BA8000Pro-----------LAN0 192.168.1.??? +---------------LAN1 192.168.2.??? (RaidenFTPd) サーバーソフトが nekosogiFTPd でも同様でした。 できればポートを必要最低限開くだけにしたいのですが (1)NAPTの設定 NAPT:有効,FTP制御ポート:21 (2)静的マスカレード tcp * * WAN-IP 21 LOCAL-IP 21 これ以外の設定が必要なのでしょうか?
> 先日WindowsXP+RaidenFTPd+Ba8000Proでサーバーを立てました。
>
> PASVのデータポートを1401〜1410がRaidenFTPdの初期値でしたので,
>
> BA8000Proにて
> (1)NAPTの設定 NAPT:有効,FTP制御ポート:21
> (2)静的マスカレード tcp * * WAN-IP 21 LOCAL-IP 21
> (3)静的フィルタ(WAN->LAN1)
> pass tcp [e]syn * * LOCAL-IP 21
> pass tcp [e]syn * 1401-1410 * 1401-1410
> discard tcp [e]syn * * LOCAL-IP *
> ※ WAN側のクライアントは FC3 + gFTP 2.0.18
>
> このようにした場合,接続できません。
下記は見ましたか? 上記は、設定漏れが1件と設定ミス(shimadanさんが指摘済み)が1件あります。
http://www.aconus.com/~oyaji/router/ba8000_conf.htm
1. 設定漏れ
PASVのデータコネクションポートは、21番ポートと同様にサーバから通知されたポートにクライアント側から接続してくるので、ポートマッピング(静的マスカレード)してあげなければ繋がりません。
1401〜1410がRaidenFTPdの初期値なら、(2)に下記を追加してください。
tcp * * WAN-IP 1401-1410 LOCAL-IP 1401-1410
2. 設定ミス
shimadanさんが指摘済みですが、データコネクションの送信元のIPやポート番号は特定できないので、全て(*)を対象にし、1項でポートマッピングしたサーバに向かうポート番号(今回は、1401-1410)のみを通過させてあげるようにすればいいので、(3)の2行目を下記を変更してください。因みに、LOCAL-IPとはサーバのプライベートアドレスのことですよね。
pass tcp [e]syn * * LOCAL-IP 1401-1410
アドバイス有難うございます。 > 1. 設定漏れ > PASVのデータコネクションポートは、21番ポートと同様にサーバから通知されたポートにクライアント側から接続してくるので、ポートマッピング(静的マスカレード)してあげなければ繋がりません。 > 1401〜1410がRaidenFTPdの初期値なら、(2)に下記を追加してください。 > > tcp * * WAN-IP 1401-1410 LOCAL-IP 1401-1410 この設定を追加し, 静的フィルタ > pass tcp [e]syn * * LOCAL-IP 1401-1410 このように変更しました。 しかしながら,外部(gFTP)から接続してみると (サーバーのURL):21 の試行中 というのが繰り返されるだけで接続できませんでした。 そこで,静的フィルタを pass tcp [e]syn * * LOCAL-IP * このように変更するとすぐに接続できました。 >因みに、LOCAL-IPとはサーバのプライベートアドレスのことですよね。 はい,そうです。分かりにくい表現ですみません。 以下が現在の WAN>LAN1 の静的フィルタの設定です。 01 discard * 10.0.0.0/8 * * * 02 discard * 172.16.0.0/12 * * * 03 discard * 192.168.0.0/16 * * * 04 discard udp&tcp * 135,445 * * 05 discard udp&tcp * * * 135,445 06 discard udp&tcp * 137-139 * * 07 discard udp&tcp * * * 137-139 10 pass udp * 53,123 * * 18 discard udp * * * * 20 pass tcp [e]syn. * * (LOCAL-IP) 1401-1410 21 pass tcp [e]syn. * * (LOCAL-IP) 21 22 pass tcp [e]syn. * * (LOCAL-IP) 25 23 discard tcp [e]syn. * * (LOCAL-IP) 80 25 discard tcp [e]syn. * * (LOCAL-IP) 12500-12501 63 discard tcp [e]syn. * * (LOCAL-IP) * 64 pass tcp * * (LOCAL-IP) *
あれから色々設定を変更してやってみたところ何とかデータポートを 1401-1410 だけ開けるだけで接続することに成功しました。 実験(1) 結果:(サーバーのアドレス):21 でストップ (1)-a 20 pass tcp [e]syn. * * 192.168.2.150 1401-1410 21 pass tcp [e]syn. * * 162.168.2.150 21 -------------------------------------------------- (1)-b 20 pass tcp [e]syn. * * 192.168.2.150 22-1410 21 pass tcp [e]syn. * * 162.168.2.150 21 実験(2) 結果:正常に接続 20 pass tcp [e]syn. * * 192.168.2.150 21-1410 21 pass tcp [e]syn. * * 162.168.2.150 21 実験(3) 結果:Entering Passive Mode (WAN-IP,5,121)でストップ (3)-a 20 pass tcp [e]syn. * * 192.168.2.150 21 21 pass tcp [e]syn. * * 162.168.2.150 1401-1410 --------------------------------------------------- (3)-b 20 pass tcp [e]syn. * * 192.168.2.150 21 21 pass tcp [e]syn. * * 162.168.2.150 21-1410 --------------------------------------------------- (3)-c 20 pass tcp [e]syn. * * 192.168.2.150 21 21 pass tcp [e]syn. * * 162.168.2.150 22-1410 実験(4) 結果:正常に接続 (4)-a 20 pass tcp [e]syn. * * 192.168.2.150 21 25 pass tcp [e]syn. * * 192.168.2.150 1401-1410 --------------------------------------------------- (4)-b 20 pass tcp [e]syn. * * 192.168.2.150 1401-1410 25 pass tcp [e]syn. * * 192.168.2.150 21 実験(1)と実験(3)ではどちらもストップするものの停止する位置が異なっており, 実験(2)では接続に成功するものの開けるポートがまだ広すぎました。 そこで,実験(4)のように設定番号を少し間隔を空けてみたところ ちゃんと意図した通りになりました。こんなことってあるのですね。 マニュアルには一通り目を通したつもりだったのですが,設定番号の 間隔をあけるようにしないといけないというのは書いていなかったような 気がします。 なにはともあれ,必要なポートのみ開けることができましたので ご報告いたします。 有難うございました。
> あれから色々設定を変更してやってみたところ何とかデータポートを > 1401-1410 だけ開けるだけで接続することに成功しました。 > > > 実験(1) 結果:(サーバーのアドレス):21 でストップ > (1)-a > 20 pass tcp [e]syn. * * 192.168.2.150 1401-1410 > 21 pass tcp [e]syn. * * 162.168.2.150 21 > -------------------------------------------------- > (1)-b > 20 pass tcp [e]syn. * * 192.168.2.150 22-1410 > 21 pass tcp [e]syn. * * 162.168.2.150 21 > > > 実験(2) 結果:正常に接続 > 20 pass tcp [e]syn. * * 192.168.2.150 21-1410 > 21 pass tcp [e]syn. * * 162.168.2.150 21 > > > 実験(3) 結果:Entering Passive Mode (WAN-IP,5,121)でストップ > (3)-a > 20 pass tcp [e]syn. * * 192.168.2.150 21 > 21 pass tcp [e]syn. * * 162.168.2.150 1401-1410 > --------------------------------------------------- > (3)-b > 20 pass tcp [e]syn. * * 192.168.2.150 21 > 21 pass tcp [e]syn. * * 162.168.2.150 21-1410 > --------------------------------------------------- > (3)-c > 20 pass tcp [e]syn. * * 192.168.2.150 21 > 21 pass tcp [e]syn. * * 162.168.2.150 22-1410 > > > 実験(4) 結果:正常に接続 > (4)-a > 20 pass tcp [e]syn. * * 192.168.2.150 21 > 25 pass tcp [e]syn. * * 192.168.2.150 1401-1410 > --------------------------------------------------- > (4)-b > 20 pass tcp [e]syn. * * 192.168.2.150 1401-1410 > 25 pass tcp [e]syn. * * 192.168.2.150 21 > > > 実験(1)と実験(3)ではどちらもストップするものの停止する位置が異なっており, > 実験(2)では接続に成功するものの開けるポートがまだ広すぎました。 > > そこで,実験(4)のように設定番号を少し間隔を空けてみたところ > ちゃんと意図した通りになりました。こんなことってあるのですね。 > マニュアルには一通り目を通したつもりだったのですが,設定番号の > 間隔をあけるようにしないといけないというのは書いていなかったような > 気がします。 ここだけみると有り得ない動きですね。外部からサーバに接続する場合のBA8000の 概略の動作は、以下のようになってます。 1. 静的マスカレードで対象のパケットを通過させるかチェック。 おやじの例のように、任意のリモートアドレス・ポートからWAN側IPの21番ポート に来たパケットは、内部のサーバのIPアドレスの21番ポートにマスカレードすると いう設定があれば、外部からのFTPサーバ(21番)への接続はサーバに中継される。 データコネクションも同様でサーバ宛に1401-1410がマスカレードされていれば、 LIST等でデータコネクションでやり取りされるセッションも接続できる。 2. 上記で通過させるとしたパケットはフィルタで評価される。 デフォルトの64番だけなら、1項の設定でサーバとの通信はできる。なぜなら 64番は無条件に全て通過させる設定だから。farotさんの64番はデフォルトでは ないですよね。これはおかしいと思いますが。ここの(LOCAL-IP)がサーバの アドレスだと、ルータのDDNS設定機能やサーバ機以外のクライアントの webアクセス等ができないはず?(BA8000のフィルタは暗黙のdeny、つまりフィルタ に最後までマッチしなかったら廃棄する設定だったはずなので。)従って、ここは 全てのアドレスの「*」にすべきです。 同じことが、63番にも言えます。これだと、静的マスカレードされていないので 基本的に問題ありませんが、サーバ以外のアドレスに繋がろうとするパケットは 通過してしまいます。ここの意味は、上位の番号で許可したsynのみ付パケット 以外は全て廃棄して、外部から接続させないためのものなので、ここも全ての アドレスの「*」にすべきです。 従って、23番、25番は盲腸で、64番で処理されるのでなくても問題ありません。 --------------No.4972より------------------------ 20 pass tcp [e]syn. * * (LOCAL-IP) 1401-1410 21 pass tcp [e]syn. * * (LOCAL-IP) 21 22 pass tcp [e]syn. * * (LOCAL-IP) 25 23 discard tcp [e]syn. * * (LOCAL-IP) 80 25 discard tcp [e]syn. * * (LOCAL-IP) 12500-12501 63 discard tcp [e]syn. * * (LOCAL-IP) * 64 pass tcp * * (LOCAL-IP) * --------------ここまで--------------------------- フィルタは若い番号から処理されますので、異なる性質のフィルタは記述する順番 に注意が必要ですが、同じ性質のものは順番は関係ありません。 従って、farotさんの実験結果は有り得ないことです。久々にBA8000に電源を いれたら、バージョンもあがっていたので入れなおして、テストしましたが、連番 でも全く問題なく動作してます。このあたりの動作がこの理論に会わなければ ルータとして機能しませんので、何か見落としていることがあるはずです。 試験方法がおかしいのかもしれません。
返信有難うございます。 クライアントはLAN1〜LAN3へ接続し,サーバーはFTPサーバーのみで LAN4へ接続しています。 また,BA8000ProのVLAN機能を有効にしてLAN1〜LAN3をグループAに, LAN4のみグループBにしています。 (ここで言うLAN1,LAN2...LAN4はルーターの背面のLANポートの番号です) この設定は何か影響してきますでしょうか? このようにグループを分けた段階で,静的フィルタの設定項目に WAN>LAN1, LAN1>WAN, LAN0>LAN1, LAN1>LAN0 が新しく追加されていました。それまでは WAN>LAN0, LAN0>WANのみでした。 (このあたりはちょっと面くらいましたが,ここで言うLAN0,LAN1は VLAN設定のグループA,グループBに該当するものと思っています) だから,クライアントへのフィルタは WAN>LAN0で行っておりまして, 01 discard * 10.0.0.0/8 * * * 03 discard * 172.16.0.0/12 * * * 05 discard * 192.168.0.0/16 * * * 07 discard udp&tcp * 135,445 * * 09 discard udp&tcp * * * 135,445 11 discard udp&tcp * 137-139 * * 13 discard udp&tcp * * * 137-139 15 pass udp * 53 192.168.1.0/24 * 17 pass udp * 123 192.168.1.0/24 * 19 discard udp * * * * 21 discard icmp * * * * 60 discard tcp [e]syn. * * * * 64 pass * * * 192.168.1.0/24 * このようにしております。 グループを分けているためグループ毎にフィルタがかかっていると理解 していたのですが間違っていましたでしょうか? > アドレスだと、ルータのDDNS設定機能やサーバ機以外のクライアントの > webアクセス等ができないはず?(BA8000のフィルタは暗黙のdeny、つまりフィルタ > に最後までマッチしなかったら廃棄する設定だったはずなので。)従って、ここは > 全てのアドレスの「*」にすべきです。 上記のようにクライアントは別グループ(A)で,LAN1(グループB)には FTPサーバーのみ接続していますので,サーバー機のLOCAL-IPをセット しています。 > 同じことが、63番にも言えます。これだと、静的マスカレードされていないので > 基本的に問題ありませんが、サーバ以外のアドレスに繋がろうとするパケットは > 通過してしまいます。ここの意味は、上位の番号で許可したsynのみ付パケット > 以外は全て廃棄して、外部から接続させないためのものなので、ここも全ての > アドレスの「*」にすべきです。 言われてみればその通りですので,他のPCは繋いでいないとは言っても 通過の場合はLOCAL-IP限定で,破棄の場合は全てのIPに対して行うように します。 これも先ほどのと重複しますが,グループ分けしていても,通過の場合は 全てのIPを対象とすべく,「*」にした方がいいのでしょうか? > 従って、23番、25番は盲腸で、64番で処理されるのでなくても問題ありません。 すみません,これは過去の遺物(昔いろいろいじっていた時の名残)です ので早速削除しておきます。 > 従って、farotさんの実験結果は有り得ないことです。 ありえないと仰られても,実際にこうなっているのですが, > 何か見落としていることがあるはずです。 やはり VLAN が関係しているのでしょうか? NECにメールを送ってみます。