【概要】
同一サブネット(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)。
図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)
【検証手順】
- 両方のバックエンド・インスタンスでtest.datを作成した。どちらのインスタンスからファイルが転送されたか分かるように”hello from xx”(xxはプライベートIPアドレスの第四オクテット)と記載した
- 両方のバックエンド・インスタンスでvsftpサーバーを起動した(systemctl start vsftpd.service)
- 対話モードのftpを開始
- アクティブ・モードに変更(passiveと打ち込んだ)
- ロード・バランサ―のIPアドレスに向けてftpのopenを行った
- ユーザー名とパスワードを打ち込んでログインした
- どちらかのサーバーに繋がるので、test.datを取得した(get test.dat)
- ftpの対話モードを抜け(quitと打ち込んだ)
- 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