The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Двойной проброс порта во внутреннюю сеть, !*! KSSh, 09-Июн-20, 16:18  [смотреть все]
Всем привет!
Помогите, пожалуйста, сделать настройки. Второй день бьюсь - не пойму, как правильно надо. Сам я программер, в администрировании слаб.
Нужно реализовать такую схему:
https://i.imgur.com/jItnjDz.png
Т.е. пробросить порт внутрь сети дважды.
При этом доступ есть только к IIS_SRV_WIN и LINSRV.
Как должно быть:
1) Пользователь из интернет стучится на GATEWAY:8888
2) Трафик пробрасывается на LINSRV:8888 как есть (это настроено админами, работает)
3) LINSRV посредством iptables пробрасывает трафик на IIS_SRV_WIN:443.
4) IIS_SRV_WIN отвечает на LINSRV
5) LINSRV отдает счастливому пользователю его веб-страничку через GATEWAY.

Не спрашивайте, почему не напрямую с GATEWAY на IIS_SRV_WIN - можно только так, планируется развитие этого всего с модификацией трафика на LINSRV, но это в будущем.

Сейчас вопрос в том, что почему-то не работает :(
Настроил на LINSRV такие правила:
iptables -t nat -I PREROUTING 1 -p tcp -d LINSRV --dport 8888 -j DNAT --to-destination IIS_SRV_WIN:443
iptables -I FORWARD 1 -d IIS_SRV_WIN -p tcp --dport 443 -j ACCEPT
Так же пробовал добавлять такое:
iptables -t nat -A POSTROUTING -j MASQUERADE
В результате - не работает. При этом, проверил следующее:
В лог IIS падает запись о подключении, когда я стучусь через интернет на GATEWAY:8888. Т.е. в этом направлении пакеты проходят. А вот обратно - уже не доходят. Судя по всему, теряются на LINSRV или после него.
При этом у стучащегося пользователя браузер висит минуту и говорит ERR_CONNECTION_TIMEOUT.

Подскажите, каких правил не хватает, или что нужно проверить, чтобы найти проблему?

Дополнительно делал следующее:
- Убирал правила firewall и поднимал apache на linsrv:8888 - тестовый сайт-заглушка из интернет виделся корректно.
- через wget на linsrv получал сайт с IIS_SRV_WIN. Точнее, получал ошибку, что такого сайта нет (т.к. стучал по IP, а сайт работает на доменном имени), но хоть что-то получал.

  • Двойной проброс порта во внутреннюю сеть, !*! ACCA, 19:46 , 09-Июн-20 (1) +3
    Через iptables и routing это можно сделать, но не нужно.

    Есть нюанс - в результате у тебя IIS выставлен голой жопой в интернет, что плохо закончится и для IIS и для Internet.

    Что следует сделать - SSL на IIS выключить, пусть отдаёт HTTP. На LINSRV запустить тот же HAPROXY или NGINX, сделать reverse proxy c SSL на нём.

    • Двойной проброс порта во внутреннюю сеть, !*! KSSh, 20:18 , 09-Июн-20 (3)
      > Через iptables и routing это можно сделать, но не нужно.
      > Есть нюанс - в результате у тебя IIS выставлен голой жопой в
      > интернет, что плохо закончится и для IIS и для Internet.
      > Что следует сделать - SSL на IIS выключить, пусть отдаёт HTTP. На
      > LINSRV запустить тот же HAPROXY или NGINX, сделать reverse proxy c
      > SSL на нём.

      Там на интерфейсе GATEWAY есть жесткое правило - доступ только из строго ограниченного пула IP, так что завалить не выйдет. Да и не прод это, а среда разработки будущая.
      Поэтому, меньшей кровью было бы настроить одно-два правила iptables.

      Если не получится так - то придется, наверное, haproxy или nginx. Но для меня, как не для админа, это будут дополнительные сложности. Хотел как поскорее) А какой из этих двух вариантов проще заведется?

  • Двойной проброс порта во внутреннюю сеть, !*! Licha Morada, 20:12 , 09-Июн-20 (2)

    Вам правильно посоветовали, не надо публиковать вебсервисы пробросом портов. Прокси справляется с этой задачей лучше.

    Если же всё-таки очень надо, то обсуждали недавно:
    https://www.opennet.ru/openforum/vsluhforumID10/5518.html
    https://www.opennet.ru/openforum/vsluhforumID10/5529.html

    Вкратце, понадобится:
    Чтоб был packet forwarding.
    Чтоб netfilter разрешил пакетам ходить.
    Правило DNAT чтоб скрыть IIS_SRV_WIN от GATEWAY.
    Правило SNAT чтоб скрыть GATEWAY от IIS_SRV_WIN.
    MASQUERADE не нужен.

    Но лучше через прокси.

    • Двойной проброс порта во внутреннюю сеть, !*! KSSh, 20:27 , 09-Июн-20 (4)
      >[оверквотинг удален]
      > Если же всё-таки очень надо, то обсуждали недавно:
      > https://www.opennet.ru/openforum/vsluhforumID10/5518.html
      > https://www.opennet.ru/openforum/vsluhforumID10/5529.html
      > Вкратце, понадобится:
      > Чтоб был packet forwarding.
      > Чтоб netfilter разрешил пакетам ходить.
      > Правило DNAT чтоб скрыть IIS_SRV_WIN от GATEWAY.
      > Правило SNAT чтоб скрыть GATEWAY от IIS_SRV_WIN.
      > MASQUERADE не нужен.
      > Но лучше через прокси.

      Спасибо огромное! Завтра будет возможность попробовать применить, думаю поможет. Интуитивно понимал, что что-то похожее нужно, но не знал как.)
      А по поводу безопасности - отписался в предыдущем комментарии)

      • Двойной проброс порта во внутреннюю сеть, !*! Licha Morada, 01:01 , 10-Июн-20 (5)

        > Там на интерфейсе GATEWAY есть жесткое правило - доступ только из строго
        > ограниченного пула IP, так что завалить не выйдет.

        Хорошо, но мало. Эшелонирование защиты это дешёвая и эффективная мера. Зачем ей пренебрегать?
        У вас правильная топология на картинке нарисована. Пусть GATEWAY следит чтоб не лезли откуда попало, а LINSRV (если туда поставить прокси который умеет HTTP) следит чтоб совсем дичь не творили.

        > Да и не прод это, а среда разработки будущая.

        Во-во. Не прод это такое вкусное место, где бывают пароли test:test, права файлов 777 "потом пофиксим", временно закороченные валидации, недоросший до ревью джунский код... Кисельные берега.

        > Если не получится так - то придется, наверное, haproxy или nginx. Но
        > для меня, как не для админа, это будут дополнительные сложности.

        Не более чем iptables, где в логику packet traversal вникать надо и за персистентностью следить.
        Почитайте туториалы про обоих, попробуйте так и сяк. Считайте что их конфиги это такой декларативный язык программирования.

        • Двойной проброс порта во внутреннюю сеть, !*! KSSh, 02:01 , 10-Июн-20 (6)
          > Хорошо, но мало. Эшелонирование защиты это дешёвая и эффективная мера. Зачем ей
          > пренебрегать?
          > У вас правильная топология на картинке нарисована. Пусть GATEWAY следит чтоб не
          > лезли откуда попало, а LINSRV (если туда поставить прокси который умеет
          > HTTP) следит чтоб совсем дичь не творили.

          Честно говоря, мне не понятно, чем прокси в данном случае был бы лучше, чем проброс портов.
          На внешний интерфейс GATEWAY разрешено стучаться трем ip. По сути, это просто торчащее наружу API для трех удаленных адресов.
          А на ближайшее будущее - планируется перенос приложения с сервака iis на linsrv в виде пачки docker-контейнеров. Постепенно, понемножку, чтобы в общем приложение всегда было рабочим. А потом и полностью отказаться от iis, а следовательно, и от проброса портов на него

          • Двойной проброс порта во внутреннюю сеть, !*! Licha Morada, 22:55 , 10-Июн-20 (7)

            > Честно говоря, мне не понятно, чем прокси в данном случае был бы
            > лучше, чем проброс портов.
            > На внешний интерфейс GATEWAY разрешено стучаться трем ip. По сути, это просто
            > торчащее наружу API для трех удаленных адресов.

            Причин много разных. В каких-то случаях будут более существенны одни из них, в каких-то - другие.
            Например:
            - Обратный прокси сервер ведёт компактные и удобочитаемые логи. Можно меньше прибегать к снифферу при поиске источника проблем.
            - До настоящего веб приложения долетают только заведомо корректные HTTP запросы, а не какой попало мусор который послали в открытый порт. Дешовая защита от атак, эксплуатирующих особенности сетевого уровня, типа Slowloris.
            - Легко публиковать не весь корень веб сервера апстрима, где может быть админка или другие приложения, а только избранные пути.
            - Централизованное терминирование сессий TLS позволяет снизить риск ошибок конфигурации.
            - Легко контролировать текущую конфигурацию "что куда и как пробрасывается" и делегировать поддержку.
            - Удобно стандартизировать. Одно и то-же решение покрывает множество кейсов, от простого "опубликовать в интернете" до баланисровки нагрузки и кэширования статичного контента.
            - Решение находится на одном и том-же уровне абстракции (веб сервис) что и задача (опубликовать в Интернете).
            - И т.д.

            > А на ближайшее будущее - планируется перенос приложения с сервака iis на
            > linsrv в виде пачки docker-контейнеров. Постепенно, понемножку, чтобы в общем приложение
            > всегда было рабочим. А потом и полностью отказаться от iis, а
            > следовательно, и от проброса портов на него

            Хороший план. Докерские best practices всё равно рекомендуют reverse proxy. Имеет смысл с него и начать, используя IIS в качестве апстрима для всех сервисов, и постепенно переводя их куда надо.





Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру