はじめに
AWS EC2上にvsftpdをインストールして、IPv4とIPv6を共存する方法をまとめます。
FTPはアクティブモードではすんなり動作しますが、パッシブモードでは少し工夫が必要でしたので、それをまとめておきます。
今回実施する内容
AWS EC2上にvsftpdをインストールして、IPv4とIPv6を共存する設定をおこないます。
- アクティブモードによるIPv4とIPv6の共存
- パッシブモードによるIPv4とIPv6の共存
ソースコード(Git Hub)
なし
環境
OS: Windows 11 JP (64bit)
EC2 AMI: Amazon Linux 2 AMI (HVM) - Kernel 5.10, SSD Volume Type (Amazon Linux 2 Kernel 5.10 AMI 2.0.20230628.0 x86_64 HVM gp2)
参考
なし
用語
なし
前提
すでにIPv4とIPv6が通信できる状態のEC2 Instanceが存在すること。
vsftpdのインストールと起動
vsftpdのインストールは、コンソールから以下でインストールします。
sudo yum install vsftpd -y
それから起動については、以下で開始しつつ、EC2開始時にも起動するように設定します。
# vsftpdの起動
sudo systemctl start vsftpd
# EC2起動時にvsftpdを起動する設定
sudo systemctl enable vsftpd
アクティブモードでの動作
FTPをアクティブモードで使用する場合、上記の「vsftpdのインストールと起動」だけでIPv4でもIPv6でも動作します。
このとき、現状のvsftpd.conf
のデフォルト設定で、listenについては以下の通りになっています。
listen=NO
listen_IPv6=Yes
vsftpd.conf
の説明では、以下の記載があり、この設定はIPv6のみの設定であり、IPv4とIPv6をlistenするためには、vsftpdを2つ起動する必要があるように読めますが、このままで動作します。
# This directive enables listening on IPv6 sockets. To listen on IPv4 and IPv6
# sockets, you must run two copies of vsftpd with two configuration files.
# Make sure, that one of the listen options is commented !!
パッシブモードでの動作
vsftpdのパッシブモードの設定(失敗するパターン)
FTPをパッシブモードで使用する場合、vsftpd.conf
上でパッシブモードを有効にする必要がありますので、以下を追加します。
pasv_enable=YES
pasv_address=xxx.xxx.xxx.xxx #IPv4アドレス
pasv_min_port=yyyy #パッシブモードで使用する最小のポート番号
pasv_max_port=zzzz #パッシブモードで使用する最大のポート番号
pasv_min_port
、pasv_max_port
は記載は任意です。
この状態で、Ipv4でパッシブモードでFTPするとサーバーからIPアドレスが返されず0.0.0.0となり、IPv4は接続できません。
IPv6は動作します。pasv_addressは特にIPv6に変更する必要はありません。
上記では動作しないことはわかったため、xinetdを使用してFTP接続ごとにvsftpdを起動するようにします。
vsftpdの起動停止とvsftpd.conf修正
xinetdからvsftpdを起動するように変更するため、vsftpdを停止します。
# vsftpdの停止
sudo systemctl stop vsftpd
# EC2起動時にvsftpdを起動する設定
sudo systemctl disable vsftpd
続いてvsftpd.conf
のlisten、listen_IPv6をNOに変更します。
listen=NO
listen_IPv6=NO
xinetdのインストール
xinetdのインストールは、コンソールから以下でインストールします。
sudo yum install xinetd -y
それから起動については、以下で開始しつつ、EC2開始時にも起動するように設定します。
# xinetdの起動
sudo systemctl start xinetd
# EC2起動時にxinetdを起動する設定
sudo systemctl enable xinetd
xinetdのvsftpd起動設定
以下のコマンドでvsftpdファイルを作成し、中身を記載します。
sudo vi /etc/xinetd.d/vsftpd
service ftp
{
socket = stream
wait = no
user = root
server = /usr/sbin/vsftpd
server_args = /etc/vsftpd/vsftpd.conf
nice = 10
disable = no
flags = IPv4
}
{
socket = stream
wait = no
user = root
server = /usr/sbin/vsftpd
server_args = /etc/vsftpd/vsftpd.conf
nice = 10
disable = no
flags = IPv6
}
上記で終わりです。
これで、IPv4からパッシブモードでFTPしても、IPv6でパッシブモードでFTPしても動作します。また、アクティブモードでも動作します。
注意
今回はAmazon Linux 2を使用して実施しましたが、Amazon Linux 2023だとxinetdが削除されているようなので方法を見直さないといけないなと思いました。
おわりに
vsftpdでパッシブモードでIPv4とIPv6を共存する方法を紹介しました。
ネット検索すると色々でては来るのですが、がっつりマッチするようなのは見当たらなかったため、まとめてみました。