[Решено частично] Помогите с пробросом пор



  • Здравствуйте.
    Есть такая задача:
    нужно опубликовать внутренний веб-сервер с нестандартным портом на ВАН-интерфейсе и для одного оределенного ИП - на стандартном.
    ВАН - статический. pfSense 1.2.3 RC3.
    Что я сделал: зашёл в Firewall -> NAT -> Port Forward, добавил 2 правила, заворачивающих трафик, приходящий на ВАН на нестандартный (1) и стандартный (2) порты на веб-сервер на 80 порт:
    If          Proto   Ext. port range     NAT IP              Int. port range

    WAN   TCP    11111       10.x.x.x (ext.: y.y.y.y) 80 (HTTP)            (1)
    WAN   TCP    80 (HTTP)       10.x.x.x (ext.: y.y.y.y) 80 (HTTP)            (2)

    Автоматически создались 2 одинаковых правила в Firewall -> Rules:
    Proto  Source  Port   Destination   Port     Gateway

    TCP       *     *   10.x.x.x     80 (HTTP)   *

    Соответственно, для всех снаружи работает и на порту 11111 и на 80. А мне нужно, чтобы только один клиент с определенного ИП (z.z.z.z) мог коннектиться на 80-й порт, а остальные только на 11111.
    До этого работал только с Керио Винроут Файервол, там все проще, все условия указываются в одном правиле, а здесь в Firewall -> NAT -> Port Forward нет возможности указать источник, что сразу бы решило проблему.
    Можно ли как-нибудь правилами файервола решить проблему, или еще как-нибудь? Может я чего-нибудь не так настраивал…

    Вариант решения в следующем посте.



  • PortForward меняет адрес назначения, и к сожалению, дальше фильтровать по порту не получится, т.к. уже будет порт 80.
    Если вэб-сервер позволяет., сделайте 2 порта 80 и 8111, тогда вот теми правилами можно будет по источнику отфильтровать.



  • @dvserg:

    Если вэб-сервер позволяет, сделайте 2 порта 80 и 8111, тогда вот теми правилами можно будет по источнику отфильтровать.

    Да, про это я тоже подумал… наверное придется так и сделать. Жаль, что в НАТе нет возможности указать источник... хотелось обойтись только pfSense.
    Спасибо.



  • @ToXaNSK:

    А так нельзя!?
    Подправить правило созданое НАТом автоматически, для 80 порта, где 1 ИП должен быть.
    Firewall: Rules: WAN (Внешний фейс)
    В Source: single host or alias -> ваш ИП которому можно.
    И сохранить.
    Если в будующем будет несколько ИП то можно завести Алиас, он же псевдоним, для нескольких ИП в Firewall: Aliases.

    Если я правильно понял, тогда получится:
    Proto  Source  Port      Destination    Port        Gateway

    TCP          *    *      10.x.x.x        80 (HTTP)      *
    TCP    z.z.z.z    *      10.x.x.x        80 (HTTP)      *
    что проблему никак не решает, т.к. это правило (нижнее) уже содержится в верхнем.



  • @ToXaNSK:

    А так нельзя!?
    Подправить правило созданое НАТом автоматически, для 80 порта, где 1 ИП должен быть.
    Firewall: Rules: WAN (Внешний фейс)
    В Source: single host or alias -> ваш ИП которому можно.
    И сохранить.
    Если в будующем будет несколько ИП то можно завести Алиас, он же псевдоним, для нескольких ИП в Firewall: Aliases.

    Там не нат а портфорвард.



  • @Alexey12:

    @dvserg:

    Если вэб-сервер позволяет, сделайте 2 порта 80 и 8111, тогда вот теми правилами можно будет по источнику отфильтровать.

    Да, про это я тоже подумал… наверное придется так и сделать. Жаль, что в НАТе нет возможности указать источник... хотелось обойтись только pfSense.
    Спасибо.

    NAT и portforward разные вещи. Для себя представьте, что нат выпускает наружу, а портфорвард пропускает снаружи внутрь.
    При этом НАТ маскирует исходящие адреса в пакетах.
    Портфорвард меняет адрес назначения с адреса роутера на адрес локального компа, при этом в PF на фильтр передается уже измененный пакет, и фильтр не знает исходный dst (адр/порт) пакета.



  • @dvserg:

    @Alexey12:

    @dvserg:

    Если вэб-сервер позволяет, сделайте 2 порта 80 и 8111, тогда вот теми правилами можно будет по источнику отфильтровать.

    Да, про это я тоже подумал… наверное придется так и сделать. Жаль, что в НАТе нет возможности указать источник... хотелось обойтись только pfSense.
    Спасибо.

    NAT и portforward разные вещи. Для себя представьте, что нат выпускает наружу, а портфорвард пропускает снаружи внутрь.
    При этом НАТ маскирует исходящие адреса в пакетах, а портфорвард меняет адрес назначения с адреса роутера на адрес локального компа.

    Да, согласен, немного неправильно употребил терминологию. Имелся ввиду именно портфорвард.
    А то что нет источника в Firewall -> NAT -> Port Forward, это ограничение pfSense или PF?



  • Да, согласен, немного неправильно употребил терминологию. Имелся ввиду именно портфорвард.
    А то что нет источника в Firewall -> NAT -> Port Forward, это ограничение pfSense или PF?

    PFSense.. Вот правило PF, здесь все есть
    rdr on tl0 proto tcp from 27.146.49.14 to any port 80 -> 192.168.1.20 port 80

    Я так понимаю это исторически с m0n0wall еще.



  • Спасибо за ответ, но я не знаю, как мне быть с этим правилом, опыта и знаний пока не хватает. :)
    Не понятно только почему в pfSense это не реализовано, неужели кроме меня это никому не потребовалось?



  • @Alexey12:

    Спасибо за ответ, но я не знаю, как мне быть с этим правилом, опыта и знаний пока не хватает. :)
    Не понятно только почему в pfSense это не реализовано, неужели кроме меня это никому не потребовалось?

    Вам кабриолет или ехать?  ;D Сделайте на 2 портах, "чтобы работало"



  • Я так понимаю, что тему пора закрывать. Всем спасибо.



  • Ничего не понял.. а вот такое разве не решает проблему? :

    Proto Source       Port  Destination          Port          Gateway

    Pass  TCP   SOMEONE   *     WAN address        80 (HTTP)  *
    Block TCP   SOMEONE   *     WAN address        11111        *
    Pass  TCP   *              *     WAN address        11111        *
    Block TCP   *              *     WAN address        80 (HTTP)  *

    Pass TCP *              *    10.x.x.x              80 (HTTP)  *



  • Нет, все правила применяются после port-forward.



  • Спасибо, буду знать.. а где-нибудь есть packet flow diagram для pf?



  • Да, собственно, вроде всё просто - приём пакета на интерфейсе X, NAT (port forward, 1:1), rules на интерфейсе X, если пакет должен форвардиться на другой интерфейс Y, то ещё Outbound NAT


Log in to reply