メモのページ - チラシの裏メモ 3枚目

気になった事を密かに黙々と書き続ける

Nexus7内にて動作するAlpine LinuxでFTPサーバを構築

4月18日の記事「Nexus7をLinuxの勉強(LPIC Level1相当)用に復活させる」の続き。
AndroidタブレットNexus7の中で動作するAlpine LinuxにてFTPサーバを立ち上げ、LAN内のPCからFTP接続した。
以下は、Limbo PC EmulatorとvsftpdとFFFTPの設定に関するメモ。


当方の環境
・ホスト機:Google Nexus7 (2013) / Android OS 6.0.1
・通信環境:WLAN
エミュレータ:Limbo PC Emulator 2.10.0
・ゲスト機:alpine-vanilla-3.6.5-x86.iso
・ゲスト機側FTPサーバ:vsftpd 3.0.3-r3
・ユーザPC側FTPクライアントFFFTP 4.5
Limbo PC Emulator、vsftpd、FFFTPで設定が必要。


Limbo PC Emulatorの設定
Limbo PC Emulatorにて通信のフィルタリング設定が入っているようで、ゲスト機(FTPクライアント)から外部機器(FTPサーバ)へ接続出来るものの、外部機器(FTPクライアント)からゲスト機(FTPサーバ)へ接続出来ない。
しかし、Host Forward設定で通したいポート番号を指定すれば外部機器からも接続出来る事が分かった。

ゲスト機を一旦落とし、Network設定のHost Forwardに以下を設定。
構文は hostfwd=ユーザPC側tcpudp:ユーザPC側IPアドレス:ユーザPC側port-ホスト機側アドレス:ゲスト側port
qemuコマンドと同じ構文だ。

hostfwd=tcp::2222-:21

自分の環境では、ユーザPC(Windows機)とホスト機(Nexus7)のIPアドレスDHCPによる自動設定につき、省略した。
ユーザPC側のPort番号は21に設定するとLimbo PC Emulatorが落ちる為、適当に2222を入れてみた。


vsftpdの設定
vsftpd.confの編集前に、公開するディレクトリの作成とパーミッション設定。
自分の環境では/pubをFTP公開用のディレクトリとした。

# mkdir /pub
# chown nobody:nogroup /pub

自分の環境では、設定ファイルvsftpd.confのパスは/etc/vsftpd/vsftpd.conf
Limbo PC Emulatorのネットワーク設定はNATのみである為、Passiveモードで。
設定内容に関しては以下のリンク先が分かり易い。

http://www.nina.jp/server/redhat/vsftpd/vsftpd.conf.html

設定完了後はvsftpdを立ち上げなおし、設定内容に問題が無いか確認する。
確認の為 vsftpd /etc/vsftpd/vsftpd.conf を実行した際、設定内容に整合性が無い場合やスペルミス等が有ると該当する行が出力される。

# rc-service vsftpd stop
# rc-service vsftpd start

# vsftpd /etc/vsftpd/vsftpd.conf

以下はvsftpd.confの設定内容。ここでは明示的に設定している行のみ載せている。
Anonymousログインに関する内容等、余計な設定も一緒に載っていると思われるが、それに関してはここでは触れない。

listen=YES
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to FTP Test service.
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
pam_service_name=vsftpd
local_root=/pub
anon_root=/pub
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=60001
pasv_max_port=60005
pasv_promiscuous=YES
port_enable=YES
pasv_addr_resolve=YES


FFFTPの設定
ここでは設定変更箇所のみ載せている。
[ 拡張タブ内 ] 
PASVモードを使う:チェック
ポート番号:2222 Limbo PC EmulatorのHost ForwardのユーザPC側Port番号と同じ値
セキュリティ:自動認識

[ 暗号化タブ内 ]
FTPS (Explicit)で接続:チェック
FTPS (Emplicit)で接続:チェック

[ 特殊機能タブ内 ]
PASVで返されるアドレスを無視:にチェック


FTP設定後の確認
Limbo PC Emulator、vsftpd、FFFTPの各設定を終えたら、FFFTPを立ち上げてAlpine Linux内のFTPサーバにアクセスしてみる。
アクセス開始から/pub内のファイル表示まで1分程時間がかかる事が有るが、これはNexus7のスペックが低い事が原因と思われる。
/pub内のファイルがFFFTPのウインドウ内に表示されたら、PC~FTPサーバ間でファイルのコピーを試行。

下の画像は今回のFTP設定とは関係無い。小学生だった頃に見たテレビ番組、水曜スペシャルのサブタイトルみたいなものを作成した為貼り付けた。
手書きで作成する事が面倒だった為、フォントは水曜どうでしょう感溢れる「太甘書道フォント」で作成。より水スペ感を出す為に、文字間を詰めて斜めに貼り付けた。



リンク先
https://alpinelinux.org/ Alpine Linux
https://pkgs.alpinelinux.org/contents? Alpine Linux packages
https://sourceforge.net/projects/limbopcemulator/ Limbo PC Emulator
https://play.google.com/store/apps/details?id=org.pocketworkstation.pckeyboard&hl=ja Hacker's Keyboard
https://www.asus.com/jp/Tablets/Nexus_7/ Nexus7

https://debslink.hatenadiary.jp/entry/20200418/1587204948 Nexus7をLinuxの勉強(LPIC Level1相当)用に復活させる
https://security.appspot.com/vsftpd.html vsftpd
https://github.com/ffftp/ffftp FFFTP