FTPサーバー構築

FTPのインストール

 

 

設定ファイルの編集

/etc/vsftpd.confの下記4行から「#」削除

・write_enable=YES 31行目

・ascii_upload_enable=YES 99行目

・ascii_download_enable=YES 100行目

・ftpd_banner=Welcome to blah FTP service. 103行目

 

サービス再起動・起動確認

 

接続確認

ユーザー名とパスワードを入力。230 Login Successfulと表示されたら成功。

220、331、230の数字は、FTPのレスポンスコードです。

レスポンスコードは、HTTPのステータスコードを同じで処理結果を番号で表しています。

220:サービス準備が整った事を表す。

331:ユーザー名OK、パスワード入力の要求を表す。

230:ユーザーログイン成功を表す。

(なぜ、番号の順番が昇順じゃないんだろう。。)

 

わざと間違えたら、530が返ってきた。

(なぜか、ftp>になってる。。)

抜けるときは、exitとbye。

 

 

FTPクライアントからFTPサーバーへアクセス

クライアントは、WinSCPソフトを使います。

ホストOSのwindowsから、ゲストOSのubuntuでアクセス。

 

起動後、各項目入力し、接続。

ホスト名は、FTPサーバーのIP

ユーザー名、パスワードもFTPサーバーのアカウント

 

 

 

 

接続ボタンをクリックすると、FTPサーバーを接続できますが

なぜかつながらない。。

 

設定・疎通確認

同じPC内ですが、疎通確認→問題なし。

 

ubuntuFWの設定確認。

FTPの制御用(TCP/21)とデータ用(TCP/22)もポート空いてる。

 

FTPクライアントソフトWinscpのログを確認した所、ログイン後にサーバー側からランダムポート番号が通知され、そのポート番号を使ってアクセスしようとしていることが分かった。(マーカー箇所)

 

 

クライアントへの通知ポート指定

/etc/vsftpd.confに、下図の2行を追記して保存。

これで通知されるポートが60000~60100になるはず。

 

winSCPのログ確認

192.168.230.129(FTPサーバー)に向けて、ポート60008で接続してます。

サーバー側から、クライアントへポート60008が通知されたことを表してます。

 

UbuntuのFWにポート番号追加

サーバーからクライアントへ通知するtcp60000~60100をFWで許可。

 

一番下に許可(ALLOW)で追加されました。

 

再度FTPサーバーへ接続

接続できました。

左がクライアント、右側がサーバーのディレクトリです。

 

ファイル転送

クライアントからサーバーのsampleディレクトリに、「1.png」ファイルを転送してみます。

転送は、ドラックアンドドロップで可能です。

 

 

サーバーのディレクトリに「1.png」が追加されました。

 

lsコマンドで、確認。

 

FTPなので、WireSharkで中身見えてますね。



FWでFTPポート削除

21番(制御用)を削除。

 

IpV6だけ消して、v4(上から4つ目消し忘れてました。。)

 

winSCPで再接続

制御用をブロックしたので、ログインすらできてないですね。

 

 

逆に、21許可、22削除してみました。

 

20は削除しても、アクセス・転送はできました。

理由は、パッシブモードでFTP通信を行ってるからですね。

(パッシブの場合、データ転送用のポート番号は、サーバーからランダムでクライアントへ通知される。

この記事の上部で、60000-60100で通知ポートを指定したのは

ランダムではなく、通知ポートを指定するため



アクティブモードで動作

下図のチェックボタンを外せば、アクティブモードで動きます。

アクティブモードの場合は、サーバーからクライアントに接続要求を行います。