🔄 FTPポートの変更と確認手順
概要
本プロジェクト要件やネットワーク環境の都合により、FTPサーバーの待受ポート(デフォルト: 21)を変更する必要が生じた場合の手順です。 Dockerコンテナのポートマッピングを変更するだけでなく、アプリケーション(vsftpd)の設定変更と再ビルドが必要です。
変更手順
ポートを 21 から 2121 に変更する場合を例にします。
1. 設定ファイルの修正 (vsftpd.conf)
srcs/requirements/bonus/ftp/conf/vsftpd.conf に以下の行を追加・変更します。 vsftpdはデフォルトでポート21で待機するため、明示的にポートを指定する必要があります。
# 追加
listen_port=21212. Dockerfileの修正
srcs/requirements/bonus/ftp/Dockerfile の EXPOSE 指示句を更新します。 これはドキュメントとしての意味合いが強いですが、明確にするために変更します。
# 変更前
EXPOSE 21 21100-21110
# 変更後
EXPOSE 2121 21100-211103. Docker Composeの修正
srcs/docker-compose.yml のポートマッピングを変更します。
ftp:
# ...
ports:
- "2121:2121" # ホスト側:コンテナ側 を両方変更
- "21100-21110:21100-21110"4. 再ビルドと起動
設定変更を反映させるため、FTPコンテナを再ビルドします。
make down
make all
# または
docker compose -f srcs/docker-compose.yml up -d --build ftp5. ファイアウォール設定の更新
ポートを変更した場合、UFW(ファイアウォール)でも新しいポートを許可する必要があります。
# 新しいポートを許可
sudo ufw allow 2121/tcp
```bash
# (必要であれば) 古いポートを削除
# sudo ufw delete allow 21/tcp6. (重要) VMのポートフォワーディング設定
VirtualBoxやUTMなどの仮想マシンを使用している場合、VM側のポートフォワーディング設定も変更が必要です。
- UTM / VirtualBoxの設定画面:
- 以前: Host
21(or 2121) -> Guest21 - 今後: Host
2121-> Guest2121 - ※ ゲストOS側のポートが
2121に変わったため、転送先も2121に合わせる必要があります。これを忘れると、「接続拒否 (Connection Refused)」になります。
- 以前: Host
✅ 動作確認方法(ポート変更後)
ポート変更後は、接続コマンドやクライアント設定でポート番号を明示する必要があります。 確認は、ホストOS(あなたのPC) または ゲストOS(VM内) のどちらからでも可能ですが、外部からのアクセスを確認するために ホストOS から行うのが一般的です。
パッシブモード(Passive Mode)について
FTPには「アクティブ」と「パッシブ」の2つのモードがあります。
- アクティブモード: サーバーからクライアントへデータ接続を行おうとします(ファイアウォールにブロックされやすい)。
- パッシブモード (
-p): クライアントからサーバーへ接続しに行きます。DockerやNAT環境ではこちらが必須です。 ※ Docker Infrastructureでは、このためのポート範囲として21100-21110を開放しています。
コマンドライン (ftp)
-P オプション(大文字)でポートを指定します。また、パッシブモード(-p 小文字)も併用します。
ftp -p -P 2121 localhost成功時の出力例:
Connected to localhost.
220 (vsFTPd 3.0.5)
Name (localhost:username): ...※ Connected to ... と表示されれば、新しいポートでListenしていることが確認できます。
トラブルシューティング
エラー: ftp: Can't lookup 'example.com:2121': Name or service not known これは、指定したドメイン名(ホスト名)がそのPC上で解決できていない(IPアドレスに変換できない)ことを意味します。
localhostまたは127.0.0.1を使用してください。- どうしてもドメイン名を使いたい場合は、
/etc/hostsに127.0.0.1 local.devのような設定がされているか確認してください。
FileZilla (GUI)
- ホスト:
localhost(またはlocal.dev) - ユーザー: FTPユーザー名
- パスワード: 設定したパスワード
- ポート:
2121(ここが重要)
これで接続できれば、ポート変更は成功です。
7. 実践デモ:FTPでのファイル操作とWeb確認
ポート変更の確認だけでなく、実際にファイル転送が機能していることをデモする方法です。
FTPで接続:
bashftp -p -P 2121 localhostファイルの作成 (put): ローカルでテストファイルを作成し、アップロードします。
bash# (事前に別ターミナルで作成しておく) echo "Hello from FTP!" > ftp_test.txt # (FTPプロンプト内で) put ftp_test.txtWebブラウザで確認: アップロードしたファイルはWordPressのドキュメントルート (
/var/www/html) に配置されるため、ブラウザから直接アクセスできます。- URL: https://local.dev/ftp_test.txt
- ブラウザに "Hello from FTP!" と表示されれば成功です。
ファイルの削除 (delete): FTPでファイルを削除し、Webから消えることを確認します。
bash# (FTPプロンプト内で) delete ftp_test.txt- 再度URLにアクセスすると、404 Not Found(またはWordPressの404ページ)になるはずです。 ※ Nginxの設定により、存在しないファイルへのアクセスはWordPress (
index.php) に転送されます。そのため、ブラウザ上では「WordPressのテーマが提供する404ページ(トップページに似ている場合があります)」が表示されることがありますが、正常な動作です。
- 再度URLにアクセスすると、404 Not Found(またはWordPressの404ページ)になるはずです。 ※ Nginxの設定により、存在しないファイルへのアクセスはWordPress (
これが「FTPサーバーがWebサーバーのボリュームと正しく連携していること」の証明になります。