proftpd 외부에서 접속이 안됩니다. 도와주세요.
redhat linux 8.0에서 proftpd-1.2.7을 컴파일해서 ftp써버로 쓰려고 합니다. 현재 콘솔상에서 제 컴의 IP로 접속했을 때는 anonymous와 사용자 계정 둘다 잘 접속 됩니다
하지만 외부에서 접속했을 경우, 다른 linux host에 telnet 접속한 후 다시 제컴으로 ftp접속하면 CTRL+C를 누르기 전까지 커서만 깜빡이면서 아무런 반응이 없습니다.
window host의 경우에는 "ftp: connetc: 10060" 와 같은 에러메세지를 출력합니다. 이문제를 해결하기 위해 1주 정도 고민해봤지만 제 실력으로는 해결할
수 없어서 이렇게 고수님들께 조언을 부탁드립니다.
[root@localhost]# cat /etc/services
...
ftp-data 20/tcp
ftp-data 20/udp
ftp 21/tcp
ftp 21/udp
...
[root@localhost]# cat /usr/local/proftpd/etc/proftpd.conf
ServerName "ProFTPD Anonymous Server"
ServerType inetd
DefaultServer on
Port 21
User nobody
Group nobody
MaxInstances 30
TimeoutStalled 300
DisplayLogin welcome.msg
DisplayFirstChdir .message
<Anonymous ~ftp>
<Limit LOGIN>
AllowAll
</Limit>
MaxClients 5 "Sorry, max %m users -- try again later"
User ftp
Group ftp
UserAlias anonymous ftp
<Limit WRITE>
DenyAll
</Limit>
<Directory uploads/*>
<Limit READ>
DenyAll
</Limit>
<Limit STOR>
AllowAll
</Limit>
</Directory>
</Anonymous>
[root@localhost]# cd /var/ftp
[root@localhost]# ls -l
drwxr-xr-x 2 ftp ftp 4096 2 14:12 pub
drwxrwxrwx 2 root root 4096 4 13:18 uploads
[root@localhost]# cat /etc/xinetd.d/proftpd
service ftp
{
disable = no
flags = stream
socket_type = stream
instances = 10
wait = no
user = root
server = /usr/local/proftpd/sbin/in.proftpd
log_on_success = HOST PID
log_on_failure = HOST RECORD
}
[root@localhost]# ps -ef | grep xinetd
root 725 1 0 14:51 ? 00:00:00 xinetd -stayalive -reuse -pidfil
root 1004 966 0 15:15 pts/0 00:00:00 grep xinetd
[root@localhost]# cd /etc
[root@localhost]# ls | grep ftp
ftpaccess
ftpconversions
ftpgroups
ftphosts
ftpusers
lftp.conf
mtftpd.conf
[root@localhost]# cat /etc/ftpusers
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
[root@localhost]# cat /etc/ftpaccess
class all real,guest,anonymous *
email ***********
loginfails 3
readme README* login
readme README* cwd=*
message /welcome.msg login
message .message cwd=*
compress yes all
tar yes all
chmod no guest,anonymous
delete no guest,anonymous
overwrite no guest,anonymous
rename no guest,anonymous
log transfers anonymous,guest,real inbound,outbound
shutdown /etc/shutmsg
passwd-check rfc822 warn
참고로 외부에서 ftp접속 실패한 것은 /var/log/messages에 남지 않았구요 콘솔에서 접속한 것은 로그가 다 남아있네요.
ISP에서 21 23 80포트를 막는다는 말을 들었는데 그것 때문인지도 모르겠습니다.
하지만 /etc/services와 /usr/local/proftpd/etc/protftpd.conf 에서 포트번호을 8021로 사용해도 결과는 마찬가지 였습니다.
물론 8021번 포트를 사용하는 다른 서비스는 없었습니다.
더 필요한 정보 있으시면 언제든지 글 남겨주세요.
그럼.. 부디 가르침을.. (^^)(__)
...
proftpd 를 inetd모드로 사용하시는것 같은데...
proftpd.conf 파일내에 port=21 은 standalone모드일때..사용하는것이고
inetd모드이므로.../etc/xinetd.d/proftpd 에
port =포트번호를 추가해야 하는것 아닐까 생각됩니다. 그게 없는것 같아서요
아니면 방화벽땜시 그럴수도 있지 않을까 생각됩니다.
그리고 ftpusers, ftpaccess 등의 파일들은 wu_ftp 프로그램의 설정파일이
아닌지 모르겠내요...proftpd와는 상관이 없는것 같은데...쩝!
저두 초보라 정확히 말씀드리진 못하겠네요.
해결했습니다.
역시 포트 막아놓은 게 문제더군요. 석희님의 의견이 많은 도움이 되었습니다. 감사합니다.
같은 어려움을 겪고 계신 분들을 위해서 제가 알아낸 것을 말씀드리겠습니다.
수정이 필요한 파일은 3개입니다.
/etc/services, /etc/xinetd.d/proftpd, /usr/local/proftpd/etc/proftpd.conf
제 경우는 proftpd를 inetd모드로 쓰는 것이고 파일의 위치는 proftpd를 설치한 경로에 따라서 달라질 수 있겠죠.
첫번째 /etc/services에 다음 내용을 추가합니다.
ftp-data 8020/tcp
ftp-data 8020/udp
ftp 8021/tcp
ftp 8021/udp
기본적으로 설정되어있는 20, 21포트를 지울 필요는 없습니다.
또 8020, 8021번 포트를 사용하는 다른 서비스는 없어야겠죠.
두번째 /etc/xinetd.d/proftpd에 추가
port = 8021
세번째 /usr/local/proftpd/etc/proftpd.conf 에 추가
Port = 8021
물론 외부에서 접속할 때는 ftp <ip address> 8021 처럼 포트번호를 뒤에 붙여줘야합니다.
참고로 포트번호는 꼭 8021번일 필요가 없구요. 위의 내용 중에 필요없는 부분이 있을 수도 있지만 이렇게 했을 때 외부에서 접속이 되었다는 것을 말씀드리는 겁니다.
그럼.. 꾸벅
제가 봐도 /etc/xinetd.d/proftpd에 포트문제인것 같네요.
제가 봐도 /etc/xinetd.d/proftpd에 포트문제인것 같네요..
뒷북칠려고 하는건 아니구요.. 위에 분에 틀린 부분을 하나 지적을 하자면
ServerType inetd 라고 되어있는 것을 봤을때 분명 inetd 모드일겁니다.
그렇다면 proftpd.conf의 포트부분은 수정할 필요없이 그냥 주석처리을
하셔도 무관합니다. 왜냐면 inetd 일경우는 proftpd.conf의 포트부분에
영향을 받지않습니다. 정확히 기억은 나지않지만 proftpd.conf의 환경
설정의 몇몇부분이 그런 부분이 있는 것으로 기억합니다.
그냥 참조하시기을 바랍니다.
댓글 달기