0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS EC2 第3回 vsftpdでIPv4とIPv6を共存

Posted at

はじめに

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については以下の通りになっています。

/etc/vsftpd/vsftpd.conf
listen=NO
listen_IPv6=Yes

vsftpd.confの説明では、以下の記載があり、この設定はIPv6のみの設定であり、IPv4とIPv6をlistenするためには、vsftpdを2つ起動する必要があるように読めますが、このままで動作します。

/etc/vsftpd/vsftpd.conf
# 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上でパッシブモードを有効にする必要がありますので、以下を追加します。

/etc/vsftpd/vsftpd.conf
pasv_enable=YES
pasv_address=xxx.xxx.xxx.xxx   #IPv4アドレス
pasv_min_port=yyyy             #パッシブモードで使用する最小のポート番号
pasv_max_port=zzzz             #パッシブモードで使用する最大のポート番号

pasv_min_portpasv_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に変更します。

/etc/vsftpd/vsftpd.conf
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
/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を共存する方法を紹介しました。
ネット検索すると色々でては来るのですが、がっつりマッチするようなのは見当たらなかったため、まとめてみました。

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?