FTPは、TCP / IPプロトコルスイートのプロトコルの1つ、つまりファイル転送プロトコルです。TCPモデルの第4層(アプリケーション層)で機能します。TCP送信を使用してインタラクティブアクセスを使用し、クライアントがファイルの種類と形式を指定できるようにします。 ASCIIコードとテキスト形式です。
FTPには2つのポートがあり、1つのポートは制御接続ポートとして使用されます。ポート21は、サーバーにコマンドを送信し、サーバーが応答するのを待つために使用されます。2つのポートはデータ送信ポートであり、ポート番号は20で、データの確立に使用されます。伝送チャネル。したがって、zabbixのアクティブとパッシブに似た、サーバーに関連するアクティブとパッシブの2つのFTP接続モード、つまりPORTとPASVがあります。
アクティブモードのFTPクライアントは、自身のHighポートとFTPサーバーのTCPポート21の間に接続チャネルを確立し、このチャネルを介してコマンドを送信します。クライアントがデータを受信する必要がある場合は、このチャネルでPORTコマンドを送信して、クライアントが使用していることをサーバーに通知します。どのポートがデータを受信するか。サーバーはクライアントのポート情報を受信した後、20ポートとクライアントの指定されたランダムハイポートを介して接続し、データリンクが確立されます。
パッシブモードでは、クライアントがデータリクエストを送信すると、サーバーはクライアントにメッセージを送信して、サーバーがローカルでハイビットポートを開いたことをクライアントに通知し、クライアントに接続させます。クライアントがサーバーの情報提供後、サーバーのハイランダムポートに接続し、データリンクを確立します。
2つのモードは、主にデータリンクの確立が異なります。アクティブモードでは、クライアントがローカルでHighポートを開き、サーバーが接続を確立するのを待ちます。パッシブモードでは、サーバーがHighポートを開き、クライアントがデータ接続を確立するのを待ちます。
これを知ることは、FTPを理解することとほとんど同じです。次に、ubuntuでアクティブおよびパッシブFTPを構築する方法を紹介します。
1 | sudo apt install vsftpd |
---|
12345 | $ sudo mkdir -p /data/storage$ sudo adduser www$ sudo adduser ftpadmin --ingroup www$ sudo chown -R www.www /data/storage$ sudo chmod g+w /data/storage |
---|
ここで作成されたこれら2つのユーザーの役割について説明します。wwwユーザーはWebユーザーであり、すべてのアプリケーションはこのユーザーによって制御されます。ftpadminはFTPユーザーです。
1 2 3 4 5 6 7 8 910111213141516171819202122 | listen = NOlisten_ipv6 = YESanonymous_enable = NOlocal_enable = YESdirmessage_enable = YESuse_localtime = YESxferlog_enable = YESconnect_from_port_20 = YES#アクティブモードでのデータ転送に20ポートを使用するかどうかxferlog_file = / var / log / vsftpd / emptyam_dir_var / vsftpd / emptyam_dir_ vsftpdrsa_cert_file = / etc / ssl / certs / ssl-cert-snakeoil.pemrsa_private_key_file = / etc / ssl / private / ssl-cert-snakeoil.keyssl_enable = NOchroot_local_user = YESallow_writeable_chroot = 0YESfilewrite_enable = / umask = 0666 #アクティブモードオン |
---|
構成が完了したら、vsftpdを再起動し、アクティブモードをオンにします
1 2 3 4 5 6 7 8 910111213141516171819202122232425 | listen = NOlisten_ipv6 = YESanonymous_enable = NOlocal_enable = YESdirmessage_enable = YESuse_localtime = YESxferlog_enable = YESxferlog_file = / var / log / vsftpd.logxferlog_std_format = YESanonymous_enable = nolocal_enable = YESdirmessage_enable = YESuse_localtime = YESxferlog_std_format = YESanonymous_enable = NOlocal_enable = YESdirmessage_enable = YESuse_localtime = YESxferlog .pemrsa_private_key_file = / etc / ssl / private / ssl-cert-snakeoil.keyssl_enable = NOchroot_local_user = YESallow_writeable_chroot = YESwrite_enable = YESlocal_root = / data / storagelocal_umask = 0file_open_YES = 0666pasv_enable = YESsvpassive_モードでのセキュリティチェック |
---|
filezillaまたはブラウザを使用してftp:// ftpアドレスに直接アクセスします。ここでは、curlを使用してアップロードとダウンロードを行います。
1 )複数のファイルを作成する
1 | for i in seq 1 100 ;do echo "num: |
---|
2 )複数のファイルをアップロードする
1 | for i in seq 1 100 ;do curl -u ftpadmin:Tccm2008 -T upload_$i.log ftp://10.0.3.111 ;done |
---|
3 )複数のファイルをダウンロードする
1 | for i in seq 1 100 ;do curl ftp://10.0.3.111/upload_ |
---|
Recommended Posts