Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Доступ к локальному ftp через WAN?

    Scheduled Pinned Locked Moved Russian
    43 Posts 5 Posters 6.5k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • werterW
      werter @luha
      last edited by werter

      @luha
      https://www.dpreview.com/forums/post/63624307

      The issue is definately a question of active vs. Passive FTP.

      Passive FTP works by: Client calls server on port 21. Here they negotiate a dataport the Client should use to contact the server on to transmit data. If you are accessing Internet via a NAT (You do - almost nothing is Public when it comes to clients), the firewall/NAT device needs to allow that port outbound as well - ussually that’s not a big problem - which is why passive FTP mostly works.

      Active FTP works by: The same process, but the negotiation ends up with a port that the CLIENT needs to open so the server can access the client.. If you are behind a firewall/NAT device, that device needs to “inspect” the FTP session to see which port the server/client agrees upon and open that port up (Otherwise inbound ports are never open). It also needs to do a more advanced NAT as it needs to replace something within the packet for the session to work (apart from sender IP). This is a HORRIBLE HORRIBLE solution, and basically never works on Carriergrade NAT solutions that many ISP use, and is starting to be blocked by default on most homegrade firewalls as well because it’s a massive security hole.

      L 1 Reply Last reply Reply Quote 0
      • L
        luha @werter
        last edited by

        @werter Да. У никонов странно реализовано. Причём бывает что в одной сети только активный фурычит, а в другой только пассивный. Когда появляется новый фотограф то я первое время с ним устаю учить как эти настройки менять.

        werterW 1 Reply Last reply Reply Quote 0
        • werterW
          werter @luha
          last edited by werter

          @luha
          И написал ,что на пф надо открывать TCP\21 + перечень портов для пассива ТАКОЙ ЖЕ как на фтп-сервере. Всё. Больше ничего не надо делать со стороны сервера и пф.

          L 1 Reply Last reply Reply Quote 0
          • L
            luha @werter
            last edited by

            @werter Всё открыто как надо. Я этой фигнёй несколько дней занимался, всё надеялся поправить как-то. Пойми - оно работает. Но только снаружи.

            werterW 1 Reply Last reply Reply Quote 0
            • werterW
              werter @luha
              last edited by werter

              @luha
              Вкл. дампинг трафика и смотри. Клиент же через ви-фи к фтп подключается? На ви-фи он не в ГОСТЕВОЙ сети?

              L 2 Replies Last reply Reply Quote 0
              • L
                luha @werter
                last edited by

                @werter Любая сеть, которая не "снаружи" провоцирует глюки при соединении с FTP. Клиент подключается нормально к серверу, нормально логинится, но дальше не получает ответ и сессия как-бы зависает. В терминале ничего не происходит.

                werterW 1 Reply Last reply Reply Quote 0
                • werterW
                  werter @luha
                  last edited by

                  @luha В логах фтп-сервера что при этом? Не может быть , чтобы там ничего не было.

                  L 1 Reply Last reply Reply Quote 0
                  • L
                    luha @werter
                    last edited by

                    @werter На вот, полюбуйся что творится.

                    Статус: Определение IP-адреса для ftp.bobik.com
                    Статус: Соединяюсь с 192.168.1.18:21...
                    Статус: Соединение установлено, ожидание приглашения...
                    Статус: Небезопасный сервер, не поддерживает FTP через TLS.
                    Статус: Авторизовались
                    Статус: Получение списка каталогов...
                    Команда: PWD
                    Ответ: 257 "/" is the current directory
                    Команда: TYPE I
                    Ответ: 200 Type set to I
                    Команда: PASV
                    Ответ: 227 Entering Passive Mode (XXX,XX,XX,XX,XXX,XX). - тут я подправил адрес
                    Команда: MLSD
                    Ошибка: Соединение прервано после 20 секунд неактивности
                    Ошибка: Не удалось получить список каталогов
                    Статус: Отключен от сервера
                    Статус: Определение IP-адреса для ftp.bobik.com
                    Статус: Соединяюсь с 192.168.1.18:21...
                    Статус: Соединение установлено, ожидание приглашения...
                    Статус: Небезопасный сервер, не поддерживает FTP через TLS.
                    Статус: Авторизовались
                    Статус: Получение списка каталогов...

                    ... и так бесконечно.

                    1 Reply Last reply Reply Quote 0
                    • L
                      luha @werter
                      last edited by

                      @werter А вот я соединяюсь с vsftpsd сервером

                      Статус: Определение IP-адреса для ftp.tuzik.com
                      Статус: Соединяюсь с 192.168.1.23:21...
                      Статус: Соединение установлено, ожидание приглашения...
                      Статус: Небезопасный сервер, не поддерживает FTP через TLS.
                      Статус: Сервер не поддерживает символы не ASCII.
                      Статус: Авторизовались
                      Статус: Получение списка каталогов...
                      Статус: Список каталогов "/" извлечен

                      ))

                      werterW 1 Reply Last reply Reply Quote 0
                      • werterW
                        werter @luha
                        last edited by werter

                        @luha
                        На втром листинге нет пассив моде.

                        Покажите iptables -L -v -n на проблемном сервере.

                        L 1 Reply Last reply Reply Quote 0
                        • L
                          luha @werter
                          last edited by

                          @werter Браво! Я же говорю - два сервера. На одном работает на другом нет.

                          Оба настроены с пассивным режимом. Вот настройки со второго сервера:

                          by luha

                          ** Use the hostname in the PASV response (DNS must be setup and match!)
                          pasv_addr_resolve=YES
                          ** Enable Passive Mode
                          pasv_enable=YES
                          ** Set the passive port range (1000 ports)
                          pasv_min_port=20000
                          pasv_max_port=20999

                          werterW 1 Reply Last reply Reply Quote 0
                          • werterW
                            werter @luha
                            last edited by

                            @luha
                            Есть предположение что при переходе в пассивный режим, ваш FTP-сервер переключается на порт который заблокирован фаерволом.

                            Я могу посоветовать временно отключить фаервол для проверки

                            Проверь этот момент.

                            L 1 Reply Last reply Reply Quote 0
                            • werterW
                              werter
                              last edited by

                              @luha
                              https://docs.netgate.com/pfsense/en/latest/recipes/ftp-without-proxy.html

                              # Do not allow the client to use PORT
                              **port_enable=NO**
                              # Use the hostname in the PASV response (DNS must be setup and match!)
                              pasv_addr_resolve=YES
                              # Enable Passive Mode
                              pasv_enable=YES
                              # Set the passive port range (1000 ports)
                              pasv_min_port=20000
                              pasv_max_port=20999
                              
                              1 Reply Last reply Reply Quote 0
                              • L
                                luha @werter
                                last edited by luha

                                @werter Я думаю что клиент в случае с proftpd получает жёстко установленный адрес IP и в локальной сети это создаёт проблемы. У vsftpd не надо жёстко указывать IP, он его сам вычисляет, видимо сам находит нужный в зависимости какой адрес видит клиент.

                                @werter Я с этих доков и брал эти настройки. ))
                                Ссылку на доки выше кинул.

                                werterW 1 Reply Last reply Reply Quote 0
                                • werterW
                                  werter @luha
                                  last edited by werter

                                  @luha

                                  ** Use the hostname in the PASV response (DNS must be setup and match!)
                                  pasv_addr_resolve=YES

                                  Получается, что клиент получает ВНЕШНЕЕ имя фтп-сервера и пытается работать с ним. Поставь там NO, рестартани службу фтп и проверь. Должно сработать внутри сети.

                                  Или настраивай split dns для разрешения имени фтп-сервера в ЛОКАЛЬНЫЙ ip.

                                  L 1 Reply Last reply Reply Quote 0
                                  • L
                                    luha @werter
                                    last edited by

                                    @werter Да. Всё именно так. Клиент получает внешний адрес и пытается работать с ним. Если выключить то будет работать и снаружи и изнутри. Но только для тех клиентов у кого активный режим действует. Остальные идут лесом плакать.

                                    Ладно. Я пойду работать. У меня проблем нету, мы с этого FTP считываем по локалке папки по SMB.

                                    werterW 1 Reply Last reply Reply Quote 0
                                    • werterW
                                      werter @luha
                                      last edited by werter

                                      @luha said in Доступ к локальному ftp через WAN?:

                                      Да. Всё именно так. Клиент получает внешний адрес и пытается работать с ним. Если выключить то будет работать и снаружи и изнутри. Но только для тех клиентов у кого активный режим действует. Остальные идут лесом плакать.

                                      Что и требовалось доказать.

                                      Настраивай сплит днс и спи спокойно. И снаружи и ВНУТРИ все будет работать в пассивном режиме.

                                      L 1 Reply Last reply Reply Quote 0
                                      • L
                                        luha @werter
                                        last edited by

                                        @werter У нас свой DNS, всё настроено, имена правильно разрешаются, дело совсем не в этом. Не работает по причине которую ты сам выше озвучил. Пассивный режим мешает тем что там IP внешний в настройках.

                                        werterW 1 Reply Last reply Reply Quote 0
                                        • werterW
                                          werter @luha
                                          last edited by werter

                                          @luha

                                          Имя РАЗРЕШАЕТСЯ в IP. Если внутри имя будет разрешаться в ЛОКАЛЬНЫЙ ip для ЛОКАЛЬНЫХ клиентов и во ВНЕШНИЙ ip для ВНЕШНИХ клиентов, то все будет ок.

                                          L 1 Reply Last reply Reply Quote 0
                                          • L
                                            luha @werter
                                            last edited by

                                            @werter Внутри имя разрешается внутренним сервером DNS во внутренний IP. Снаружи имя разрешается внешними публичными серверами DNS во внешний IP. Если бы были проблемы с разрешением имени то не нашло бы сервера, не залогинилось бы и т.д.. А он логинит и потом сливается! Короче proftpd лучше не использовать с PF - вот такой можно делать вывод. Юзайте vsftpd

                                            werterW 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.