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

    FTP-сервер в локальной сети

    Scheduled Pinned Locked Moved Russian
    15 Posts 3 Posters 13.0k 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.
    • P
      polos
      last edited by

      Подскажите пожалуйста, в чём может быть дело и куда смотреть. В локалке поднят FTP-сервер. Чтобы к нему был доступ из интернета, сделан port forwarding. Чтобы клиенты из локальной сети могли подключаться к серверу по его внешнему адресу, включена опция NAT Reflection. Так вот, всё это замечательно работает, если использовать в качестве внешнего порта любой, кроме 21. Т.е. пробрасываем с порта 8021 (к примеру) на 21 в локалку - доступ из локалки к серверу есть. Стоит поменять внешний порт на 21 - все, из локалки подключиться не удаётся. Доступ снаружи есть всегда и работает нормально. Флажки Disable the userland FTP-Proxy application на LAN и WAN установлены, т.е. опция эта отключена.
      Голову уже сломал, поможите чем можете…

      1 Reply Last reply Reply Quote 0
      • D
        dvserg
        last edited by

        Потому и не пускает что NAT/portforward уже на 21 порту есть.
        Почему-бы Вашим клиентам напрямую на этот ФТП не ходить?

        SquidGuardDoc EN  RU Tutorial
        Localization ru_PFSense

        1 Reply Last reply Reply Quote 0
        • P
          polos
          last edited by

          Спасибо за ответ!
          @dvserg:

          Потому и не пускает что NAT/portforward уже на 21 порту есть.

          Это какой-то предустановленный portforward? Можно ли его удалить?
          @dvserg:

          Почему-бы Вашим клиентам напрямую на этот ФТП не ходить?

          Извольте, объясню. У меня 1С обменивается данными с удалёнными филиалами через FTP. Адрес FTP-сервера - общая для всех константа. Соответственно, из локальной сети доступа к серверу нет. Можно переписать конфигурацию, но очень не хочется этого делать.

          1 Reply Last reply Reply Quote 0
          • D
            dvserg
            last edited by

            У Вас получается что локальный клиент идет через НАТ наружу а потом портфорвардом опять внутрь. Вот тут и затык при ответе - сервак пытается ответить напрямую локальной машинке, а она ждет ответа от удаленного хоста ИП.

            В 1С прописан ФТП по ИП или как доменное имя?

            SquidGuardDoc EN  RU Tutorial
            Localization ru_PFSense

            1 Reply Last reply Reply Quote 0
            • P
              polos
              last edited by

              Да, это известная проблема с доступом из локалки к локальным ресурсам по внешнему адресу. NAT Reflection как раз и должен эту проблему решать. Также можно сделать настроить DNS, чтобы при обращении к серверу по имени вместо внешнего IP отдавался внутренний.
              Я, наверное, плохо объяснил суть. Есть сервер в локалке (192.168.1.1 порт 8021). Делаем portforwarding 26 WAN –> 8021 192.168.1.1. При включенной опции NAT Reflection сервер доступен при подключении по адресу WAN:26 и снаружи и из локальной сети. Теперь меняем правило на 21 WAN --> 8021 192.168.1.1. Подключаемся на 21 порт снаружи - всё работает. Изнутри - сервер недоступен.

              1 Reply Last reply Reply Quote 0
              • D
                dvserg
                last edited by

                Ну если как вы говорите FTP-Helper отключен, то скорее всего или какие-то правила внутренние мешают, или особенности поведения NAT-portforward. Позже время будет - попробую разобрать что и как там маскируется и какие правила мешают.

                Сейчас, как проще всего, можно попробовать перенести порт локального сервера 192.168.1.1 на 8021 и настроить портфорвард на него.
                Интересно сработает или нет?

                SquidGuardDoc EN  RU Tutorial
                Localization ru_PFSense

                1 Reply Last reply Reply Quote 0
                • P
                  polos
                  last edited by

                  А он и так на этом порту. Я пробовал ставить его и на 21, это ничего не меняет. Важно на какой порт коннектится клиент из локалки, а куда потом пробрасывается - не имеет значения.

                  1 Reply Last reply Reply Quote 0
                  • D
                    dvserg
                    last edited by

                    @polos:

                    А он и так на этом порту. Я пробовал ставить его и на 21, это ничего не меняет. Важно на какой порт коннектится клиент из локалки, а куда потом пробрасывается - не имеет значения.

                    Смотреть /tmp/rules.debug

                    –--
                    А, ну да.. Nat Reflection работает для портов > 1024. А тут 21 порт.

                    Прописываем правило NAT для LAN.

                    SquidGuardDoc EN  RU Tutorial
                    Localization ru_PFSense

                    1 Reply Last reply Reply Quote 0
                    • E
                      Eugene
                      last edited by

                      @polos:

                      Да, это известная проблема с доступом из локалки к локальным ресурсам по внешнему адресу. NAT Reflection как раз и должен эту проблему решать. Также можно сделать настроить DNS, чтобы при обращении к серверу по имени вместо внешнего IP отдавался внутренний.
                      Я, наверное, плохо объяснил суть. Есть сервер в локалке (192.168.1.1 порт 8021). Делаем portforwarding 26 WAN –> 8021 192.168.1.1. При включенной опции NAT Reflection сервер доступен при подключении по адресу WAN:26 и снаружи и из локальной сети. Теперь меняем правило на 21 WAN --> 8021 192.168.1.1. Подключаемся на 21 порт снаружи - всё работает. Изнутри - сервер недоступен.

                      1. Почему средствами DNS не делаешь?
                      2. NAT reflection и FTP - скорее всего не пролезет, в FTP несколько портов используется.  Перепроверь что ftp-helper выключен везде и скажи в каком FTP режиме у тебя должна работать эта связка - active или passive?

                      http://ru.doc.pfsense.org

                      1 Reply Last reply Reply Quote 0
                      • P
                        polos
                        last edited by

                        @dvserg:

                        Смотреть /tmp/rules.debug
                        А, ну да.. Nat Reflection работает для портов > 1024. А тут 21 порт.
                        Прописываем правило NAT для LAN.

                        /tmp/rules.debug гляну, спасибо.
                        Я проверял, эта штука работает на 26 порту, на 22 и ещё какие-то проверял. А на 21 не работает хоть ты что делай.
                        Если поможете с этим правилом для NAT - буду весьма признателен, поковырялся и не получилось у меня ничего.

                        1 Reply Last reply Reply Quote 0
                        • P
                          polos
                          last edited by

                          @Evgeny:

                          1. Почему средствами DNS не делаешь?
                          2. NAT reflection и FTP - скорее всего не пролезет, в FTP несколько портов используется.  Перепроверь что ftp-helper выключен везде и скажи в каком FTP режиме у тебя должна работать эта связка - active или passive?

                          1. Сделаю, оставил этот способ как крайнюю меру. Мне не очень нравится то, что результат будет зависеть от того, какой DNS прописан у клиента. Они автоматом выдаются, конечно, но… В общем, это решение проблемы и если с NAT не получится - сделаю DNS.
                          2. FTP работает в основном в пассивном режиме (я правильно помню, что режим соединения определяет клиент, а не сервер?). Для этого помимо 21 порта проброшен диапазон 4400-4499. Я пока тестирую в активном режиме, чтобы не заморачиваться ещё и этим правилом. Если я правильно понял, NAT reflection позволяет использовать до 500 портов.

                          Я сейчас использую в качестве основного роутера ipcop, у него таких проблем не возникало, Port Forward в локалку автоматом добавляет маскарадинг для локального адреса и я вообще сначала долго не мог понять, почему с pfsense такие проблемы возникают. Сейчас мне нужен MultiWan и что-то для анализа трафика, NetFlow очень хорошо для этого подходит. Такие дела.

                          1 Reply Last reply Reply Quote 0
                          • P
                            polos
                            last edited by

                            Итак, посмотрел rules.debug.
                            Если сделать переадресацию 89.21.XXX.XXX:26 –> 192.168.1.130:8021, там прописывается:
                            rdr on rl0 proto tcp from any to 89.21.XXX.XXX port { 26 } -> 192.168.1.130 port 8021

                            Reflection redirects

                            rdr on $lan proto tcp from any to 89.21.XXX.XXX port { 26 } -> 127.0.0.1 port 19101

                            IMSpector rdr anchor


                            А если правило поменять на 89.21.XXX.XXX:21 --> 192.168.1.130:8021, содержимое будет таким:
                            rdr on rl0 proto tcp from any to 89.21.XXX.XXX port { 21 } -> 192.168.1.130 port 8021

                            Reflection redirects

                            IMSpector rdr anchor

                            Т.е. для этого порта Reflection redirects не создается. Осталось понять, с какой такой радости. Можно как-то вручную впихнуть нужное правило и прибить его гвоздями в конфиге? Простое добавление строки не помогает, и любое изменение правила возвращает все как было.

                            Вот еще, есть там такой раздел:

                            FTP Proxy/helper

                            table <onetoonelist>{ 192.168.1.130  }
                            table <vpns>{   }
                            Что бы это могло значить и для чего нужно?</vpns></onetoonelist>

                            1 Reply Last reply Reply Quote 0
                            • P
                              polos
                              last edited by

                              Похоже, проблема не разрешается так просто… http://forum.pfsense.org/index.php/topic,8562.0.html
                              FTP helper какой-то, не отключаемый вдобавок...

                              В общем, я понял что делать. Достаточно адрес сервера прописать в виде wan:8021 (к примеру) и пробросить 8021 на ftp-сервер. Тогда всё работает отлично.
                              На стандартном 21 порту NAT Reflection не работает.

                              1 Reply Last reply Reply Quote 0
                              • E
                                Eugene
                                last edited by

                                @polos:

                                Похоже, проблема не разрешается так просто… http://forum.pfsense.org/index.php/topic,8562.0.html
                                FTP helper какой-то, не отключаемый вдобавок...

                                В общем, я понял что делать. Достаточно адрес сервера прописать в виде wan:8021 (к примеру) и пробросить 8021 на ftp-сервер. Тогда всё работает отлично.
                                На стандартном 21 порту NAT Reflection не работает.

                                Вообще-т ftp-helper должен отключаться, не слышал про такие проблемы. А вот, что nat-reflection не работает с 21-м - наверное логично, чтобы не конфиликта с ftp-helper'ом не было.

                                http://ru.doc.pfsense.org

                                1 Reply Last reply Reply Quote 0
                                • P
                                  polos
                                  last edited by

                                  @Evgeny:

                                  Вообще-т ftp-helper должен отключаться, не слышал про такие проблемы. А вот, что nat-reflection не работает с 21-м - наверное логично, чтобы не конфиликта с ftp-helper'ом не было.

                                  Я ровно об этом и говорю - он вроде как отключается, но nat-reflection на этом порту всё равно не работает. Т.е. он отключается, но не полностью. Если я выключил nat-helper конфликта с ним быть не может, так ведь?

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