
У меня есть маршрутизатор ZTE mf283+ и другой маршрутизатор tp-link archer c7, подключенный к нему, который я использую как точку доступа. IP-адрес tp-link — 192.168.0.23, и на нем настроен ftp-сервер. Я попробовал переадресацию портов, чтобы иметь доступ к ftp-серверу извне:
Но когда я пытаюсь получить к нему доступ извне, вот так:фтп://37.xxx.xxx.xxx:21там написано "Этот сайт недоступен. 37.xxx.xxx.xxx отказался подключаться. Я что-то делаю не так или что-то с моим интернет-провайдером?
решение1
Спасибо, что прочитали статью, на которую указал Этти. Похоже, вам просто нужно немного больше объяснений. Я нашелРуководство по брандмауэру OpenBSD, раздел «Проблемы с FTP»для информативности. Однако я попытаюсь здесь подытожить суть вопроса.
Когда программное обеспечение взаимодействует с использованием интернет-протоколов (IPv4 или IPv6), "IP-протокол" (который я использую как общий термин, применимый в равной степени к IPv6 и IPv4) включает в себя IP-адрес назначения. Когда вы используете некоторые протоколы, такие как TCP (который делает FTP), UDP (который делает DNS), SCTP, у вас также есть "номер порта", который является одной из причин, по которой мы используем термин "переадресация портов". (Некоторые протоколы не используют "номер порта". Например, ICMP использует IP и имеет "типы сообщений", но не "номера портов".)
Большинство программ предоставляют информацию об IP-адресе компонентам локальной сети TCP/IP компьютера и предоставляют удаленному компьютеру только «полезную нагрузку» (то есть любую другую информацию, которую удаленный компьютер должен получить). Например, с HTTP ваш веб-браузер сообщает локальному сетевому стеку TCP/IP об открытии соединения с IP-адресом, а ваш веб-браузер сообщает удаленной системе, какой файл она хочет получить. Ваш веб-браузер не объявляет ваш IP-адрес. Эти данные обрабатываются компонентами сети TCP/IP.
FTP отличается от большинства программ.
FTP фактически включает IP-адрес в свою полезную нагрузку. Таким образом, в дополнение к предоставлению IP-адреса как части стандартного IP-пакета, часть FTP-диалога упоминает, какой IP-адрес использовать. Стандартная «переадресация портов» просто изменяет стандартное местоположение для IP-адреса и не изменяет FTP-диалог.
FTP — очень старый протокол, написанный в эпоху, когда университеты и крупные корпорации создавали сеть как исследовательский проект. Интернет-защиты, такой как брандмауэры, в то время не существовало и не было необходимости. Поэтому проблема, которую создает FTP, не была проблемой плохого авторства. Проблема в том, что FTP был просто разработан для другого типа сети.
Эту проблему можно решить тремя способами:
- Вы можете попробовать использовать "пассивный" FTP. Это может работать с FTP-сервером, который находится за брандмауэром (но бремя смещается: FTP-клиент не должен находиться за брандмауэром... поэтому часто этот сценарий тоже не работает). Если это исправление возможно (что требует, чтобы программное обеспечение FTP-клиента поддерживало эту функцию), это может быть самым быстрым исправлением (изменение настройки в программном обеспечении FTP-клиента), но может быть простым или сложным в зависимости от того, какое программное обеспечение FTP-клиента используется.
- многие маршрутизаторы поддерживают опцию под названием "ftp proxy", которая модифицирует FTP-разговор, эффективно устраняя эту проблему для вас. Найдите и включите такую опцию (если она существует)
- используйте другой протокол, не имеющий такой же проблемы
FTP в некотором роде уникален. Большинство популярных сегодня протоколов не имеют той же проблемы и не будут иметь, потому что сейчас существуют брандмауэры, и поэтому люди знают о проблеме. (Если бы кто-то написал новый протокол и этот человек не знал о проблеме, он, вероятно, узнал бы о проблеме до того, как протокол станет очень популярным.) Однако FTP был лучшим решением в какой-то момент времени, и люди не хотели использовать другие решения. Одной из основных причин этого может быть то, что у многих людей было программное обеспечение FTP, включая популярные веб-браузеры, которые поддерживали FTP.
В настоящее время существуют решения, которые лучше FTP. Используйте "SSH File Transfer Protocol" (один из протоколов, называемых "SFTP"), или SCP, или HTTPS. Ни один из них не требует специальных прокси-серверов для работы на брандмауэрах. Для решений, которые должны быть легко доступны для нескольких клиентов, HTTPS может подойти. (Могут быть даже другие варианты, такие как FTPS, но я рекомендую предыдущие протоколы, которые я только что упомянул.)
Итак, последний пункт рекомендуется, но если вы чувствуете, что по какой-то причине не можете этого сделать, вы можете попробовать первый или второй пункты (каждый из которых может быть более быстрым, хотя и худшим решением проблемы, с которой вы столкнулись).