V6R1以上のシステムでFTPアクティブモードを使う
Question
相手先とのFTP通信において、相手先ルーターがアクティブモード(ポート20,21番のみ)で動作しています。双方にFirewallはありません。
FTPサブコマンドにてSENDPASV 0にて、パッシブモードを無効化して、アクティブモードに切り替えているはずなのですが、ポート20以外のリモートポートを要求してしまっているようで、
通信が上手く出来ません。
どのように対応すればいいでしょうか。
Answer
御存知の通り、FTPにはアクティブモードとパッシブモードが存在します。 アクティブモードでは、データコネクションに20番ポートを、パッシブモードでは、データコネクションに1024番以上のポートを、自動選択します。 IBMiV6R1から、標準でパッシブモードFTPが有効となっているため、アクティブモードを利用したい場合には、パッシブモードを無効化しなければなりません。
パッシブモードにはいくつか拡張があり、今回の場合EPASVとEPRPが該当します。 FTPサブコマンドでSENDPASV 0のみを指定すると、 この2つのモードが有効のままのため、アクティブモードで動作しない挙動となります。
FTPサブコマンドでEPASVとEPRPを無効にするという方法もありますが、 下記コマンドを用いデータエリアを作成することで、常時パッシブモード(上記の拡張含む)が無効化され、アクティブモードで動作するようになります。
- CRTDTAARA DTAARA(QUSRSYS/QTMFTPEPSV) TYPE(*LGL) AUT(*USE)
- CRTDTAARA DTAARA(QUSRSYS/QTMFTPPASV) TYPE(*LGL) AUT(*USE)
- CRTDTAARA DTAARA(QUSRSYS/QTMFTPEPRT) TYPE(*LGL) AUT(*USE)
※V6R1環境でこのデータエリアを作成する際には、事前に個別PTF「SI33243(5761TC1)」を適用する必要があります。この個別PTFはC9111610の累積PTFに含まれています。
なお、特定の相手先でのみアクティブモードとされたい場合には、FTPサブコマンドでの対応が良いかと思います。 これによりFTP通信でデータ通信を行う際に、リモートポート20番が開かれるようになります。
by 大熊猫橋