LoginSignup
2
0

More than 1 year has passed since last update.

【Oracle Cloud Infrastructure, OCI】FTP(アクティブモード)でネットワークロードバランサを通したデータ転送が可能かを検証

Last updated at Posted at 2023-01-31

【概要】

同一サブネット(10.0.0.0/24)にネットワーク・ロード・バランサ(以後NLB。10.0.0.127)、二台のバックエンド・インスタンス(10.0.0.15と10.0.0.229)とクライアント・インスタンスを配置し(OSはいずれもOracle Linux)、FTPのアクティブモードでNLBを介したファイル転送ができるのかを検証した。バックエンド・インスタンスには同名のファイルを配置したうえで、クライアント・インスタンスからロードバランサのIPアドレスにFTP接続を試み、接続先のバックエンド・インスタンス(二台のうち、どちらに接続されるかは分からない)からファイル転送をアクティブモードで行ったところ、転送が成功した(図1)。
FTP_revised.png

図1 検証に用いた構成
二台のインスタンスをNLBのバックエンドとして配置し、それぞれのインスタンスには同名のファイル(test.dat)を配置した。同じサブネット内のクライアント・インスタンスで検証を行った。青色の矢印とオレンジ色の線は、アクティブモードのFTPにおける制御用コネクションの接続要求とデータ転送用コネクションの接続要求をそれぞれ表している。

【検証の準備】

  • NLBの設定

    • リスナーの設定
      • プロトコル: UDP/TCP
      • イングレス・トラフィック・ポート: 任意のポートを使用
    • バックエンドセットの設定
      • ソースIPの保持を行う
      • ロード・バランシング・ポリシー: 5タプル・ハッシュ
  • セキュリティ・リスト

    • イングレス・ルール: ステートフル、ソースが10.0.0.0/24、IPプロトコルがすべてのプロトコルを追加
    • エグレス・ルール: ステートフル、宛先が10.0.0.0/24、IPプロトコルがすべてのプロトコル
  • クライアント・インスタンスの設定

    • SELinux: 一時的に無効に(setenforce 0)
    • ftpコマンドのインストール(yum install -y ftp)
    • OSのファイヤーウォールを停止(systemctl stop firewall)
  • バックエンド・インスタンスの設定(二台共通)

    • SELinux: 一時的に無効に(setenforce 0)
    • OSのファイヤーウォール: TCPの20番と21番を解放(firewall-cmd --permanent --add-port=20/tcpとfirewall-cmd --permanent --add-port=21/tcpを実行してfirewall-cmd --reload)
    • vsftpのインストール(yum install -y vsftpd)
    • ftpサービスの利用を許可(firewall-cmd --permanent --add-service=ftpを実行してfirewall-cmd --reload)
    • ログインパスワードの設定(passwd opc)
    • 一応、パッシブ・モードを無効に設定し(/etc/vsftpd/vsftpd.confを編集し、pasv_enable=NOを追記する)、vsftpdを再起動(systemctl restart vsftpd)

【検証手順】

  1. 両方のバックエンド・インスタンスでtest.datを作成した。どちらのインスタンスからファイルが転送されたか分かるように”hello from xx”(xxはプライベートIPアドレスの第四オクテット)と記載した
  2. 両方のバックエンド・インスタンスでvsftpサーバーを起動した(systemctl start vsftpd.service)
  3. 対話モードのftpを開始
  4. アクティブ・モードに変更(passiveと打ち込んだ)
  5. ロード・バランサ―のIPアドレスに向けてftpのopenを行った
  6. ユーザー名とパスワードを打ち込んでログインした
  7. どちらかのサーバーに繋がるので、test.datを取得した(get test.dat)
  8. ftpの対話モードを抜け(quitと打ち込んだ)
  9. test.datの内容を確認した(10.0.0.15のIPアドレスを持つバックエンド・インスタンスに接続してファイル転送したことが分かった)
Last login: Fri Jan  6 02:43:21 2023 from xxx.xxx.xxx.xxx
[opc@client-vm ~]$ sudo su
[root@client-vm opc]# ftp
ftp> passive
Passive mode off.
ftp> open 10.0.0.127
ftp: connect: Connection refused
ftp> open 10.0.0.127
Connected to 10.0.0.127 (10.0.0.127).
220 (vsFTPd 3.0.2)
Name (10.0.0.127:root): opc
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> get test.dat
local: test.dat remote: test.dat
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for test.dat (14 bytes).
226 Transfer complete.
14 bytes received in 0.000157 secs (89.17 Kbytes/sec)
ftp> quit
221 Goodbye.
[root@client-vm opc]# ls -la test.dat
-rw-rw-r--. 1 opc opc 14 Jan  6 07:33 test.dat
[root@client-vm opc]# cat test.dat
hello from 15
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0