Я знаю, что об этом уже много раз спрашивали, но, похоже, мою проблему ничто не решило.
у меня vsftpd работает на ubuntu 10.04. Я могу подключиться к ftp localhost на машине. я могу подключиться с другой машины в моей сети. я просто не могу подключиться извне. машина находится за экстримом аэропорта, управляемым утилитой аэропорта на Mac.
21 открыт согласно Nmap:
macmini:~$ nmap localhost
Starting Nmap 5.21 ( http://nmap.org ) at 2011-04-10 23:49 EDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00045s latency).
Hostname localhost resolves to 2 IPs. Only scanned 127.0.0.1
rDNS record for 127.0.0.1: localhost.localdomain
Not shown: 997 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
631/tcp open ipp
netstat говорит, что 21 слушает:
macmini:~$ netstat -lep --tcp | grep ftp
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 *:ftp *:* LISTEN
iptables:
macmini:~$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
когда я пытаюсь подключиться с моего внешнего IP (или имени dyndns, которое там разрешается), время истекает. ("Превышено время ожидания контрольного соединения")
Поскольку я очень мало знаю о сетях, мне кажется, что что-то может выскочить так же явно неправильно?
Чтобы ответить на ваш вопрос: как настроен ваш брандмауэр? Похоже, он блокирует входящие соединения. У большинства есть запрет по умолчанию на порту 21. Фактически, у большинства есть запрет по умолчанию для всех входящих соединений на внешнем интерфейсе. Ваш брандмауэр выполняет переводы NAT / PAT? Вы используете FTP в пассивном или активном режиме? Если вы работаете в активном режиме, FTP-клиентам потребуется перенаправлять соединения с вашего сервера, иначе соединения не будут выполнены. если ты являются работает в пассивном режиме, затем ты необходимо будет перенаправить этот диапазон пассивных портов. Все ли ваши соединения выполняются через порт 21? По умолчанию они этого не сделают, хотя некоторые клиенты (в основном веб-браузеры) будут использовать порт 21 для данных.
В более общем плане: правильная работа FTP через брандмауэр - это огромный PITA, потому что FTP предшествует TCP / IP и модели TCP / IP. FTP нужен другой порт для каждого подключения к вашему серверу с одного и того же IP-адреса. Вы используете порт 21 для управляющих подключений и 20 для подключений к данным. в общем-то. И в зависимости от того, используете ли вы активный или пассивный FTP, будет определять, будет ли ваш сервер пытаться инициировать эти подключения к данным или клиенту придется. Если вы используете пассивный FTP, вам нужно перенаправить не только порт 21. По умолчанию это порт 20, но большинство демонов FTP в настоящее время запрашивают диапазон портов в диапазоне 50 000. Вам нужно будет посмотреть файл конфигурации vsftpd, чтобы узнать, какие порты он хочет использовать. Кроме того, помните, что FTP отправляет пароли в виде простого текста, поэтому он очень уязвим для атак типа «человек посередине», повторного воспроизведения и т.п.
FTPd + firewall = кошмар. IMX, неизбежный ответ на вопрос «Почему мой FTP-сервер не работает через брандмауэр?» это «Потому что FTP восходит к 1971 году».
В общем, я настоятельно рекомендую перейти на sftp (OpenSSH - наиболее распространенный демон Linux), хотя для этого потребуется некоторое время, чтобы изучить все тонкости, поскольку sftp - это подмножество команд ssh. Вы должны быть осторожны при его настройке, иначе вы дадите внешним пользователям доступ к своему серверу. Это, очевидно, плохо, поскольку внезапно все эти предупреждения системы безопасности, в которых говорится, что «злонамеренный локальный пользователь может ...», применимы к вам.