KMと申します。vine2.5を使用しています。
ADSL
|
ppp0
vine2.5(foo.mydomain.co.jp)
としています。/etc/xinetd.d/proftpを
service ftp
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.proftpd
log_on_success += DURATION USERID
log_on_failure += USERID
nice = 10
}
/etc/proftpd.confを
#ServerType standalone
ServerType inetd
DefaultServer on
Port 21 is the standard FTP port.
として/etc/hosts.allowは
in.proftpd: ALL
にして外部ホストからもこのFTPサーバにアクセスできました。それでポート番号を
変更してみました。
/etc/servicesを
ftp-data 20/tcp
ftp-data 20/udp
ftp 21/tcp
ftp 21/udp
↓
ftp-data 1029/tcp
ftp-data 1029/udp
ftp 1030/tcp
ftp 1030/udp
と書き換えて
/etc/proftpd.confを
#ServerType standalone
ServerType inetd
DefaultServer on
# Port 21 is the standard FTP port.
Port 1030
#Port 21
PassivePorts 1029 1029
iptablesを
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 0/0 --dport 1030 -i ppp0 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp ! --syn --sport 1030 -d 0/0 -o ppp0 -j
ACCEPT
/sbin/iptables -A INPUT -p tcp ! --syn -s 0/0 --dport 1029 -i ppp0 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --sport 1029 -d 0/0 -o ppp0 -j ACCEPT
としました。
/etc/shut.msgを削除して外部ホストにリモートログインして
$ ssh gaibu.host.co.jp
% ftp foo.mydomain.co.jp 1030
200 PORT command successful
FTPログインできましたがやはり、lsコマンドで止まってしまいます。
ローカル上でだと
$ ftp localhost 1030
とするとログインでき、lsコマンドも使えました。
どうしてlsコマンドが使用できないのでしょうか?
スタンドアロンでproftpdを起動してデバッグモードにしてみました。
# proftpd -n -d9
そして外部ホストからアクセスしてみるとログインしてlsコマンドを使用すると
% ftp foo.mydomain.co.jp 1030
Connected to foo.mydomain.co.jp.
220 ProFTPD 1.2.5rc1 Server (ProFTPD Basic Configuration)
[foo.mydomain.co.jp]
Name (foo.mydomain.co.jp:hoehoe): user01
331 Password required for user01.
Password:
230 User user01 logged in.
ftp> ls
200 PORT command successful.
425 Can't build data connection: Connection timed out
となりました。この際のエラー出力は下記のようになりました。
# proftpd -n -d9
:
(中略)
:
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - USER user01: Login
successful.
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching
POST_CMD command 'PASS (hidden)' to mod_readme
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching
POST_CMD command 'PASS (hidden)' to mod_ratio
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching
POST_CMD command 'PASS (hidden)' to mod_linuxprivs
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - Linuxprivs:
capabilities '= cap_net_bind_service+ep'.
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching
POST_CMD command 'PASS (hidden)' to mod_log
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching
POST_CMD command 'PASS (hidden)' to mod_ls
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching LOG_CMD
command 'PASS (hidden)' to mod_log
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching LOG_CMD
command 'PASS (hidden)' to mod_ratio
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching PRE_CMD
command 'PWD' to mod_core
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching CMD
command 'PWD' to mod_core
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - in
dir_check_full(): path = '/home/user01', fullpath = '/home/user01'.
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching LOG_CMD
command 'PWD' to mod_log
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching PRE_CMD
command 'PORT xxx,xxx,xxx,xxx,152,159' to mod_core
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching CMD
command 'PORT xxx,xxx,xxx,xxx,152,159' to mod_core
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching LOG_CMD
command 'PORT xxx,xxx,xxx,xxx,152,159' to mod_log
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching PRE_CMD
command 'NLST' to mod_core
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching PRE_CMD
command 'NLST' to mod_ratio
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching CMD
command 'NLST' to mod_ls
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - in
dir_check_full(): path = '/home/user01/rpm', fullpath = '/home/user01/rpm'.
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching
LOG_CMD_ERR command 'NLST' to mod_log
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching
LOG_CMD_ERR command 'NLST' to mod_ls
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - FTP no transfer
timeout, disconnected.