Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » NAT и публикация сервисов с учётом virtual hosts

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6

Открыть новую тему     Написать ответ в эту тему

LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос к опытным админам, знакомым на практике с комплексом взаимосвязанных проблем, вызванных:
 
1) NAT,  
2) необходимостью  публиковать сервисы из локалки для внешнего мира
3) необходимостью для некоторых веб-сервисов поддерживать требуемые для них virtual hosts в запросах.
4) желанием упростить администрирование клиентов (в идеале добиться того, чтобы клиенты коннектились к единственному ресурсу без различия того, с какой стороны шлюза находятся).
 
Есть мелкософт-way решения этого комплекса проблем: UAG. "Тяжёлый чОрный ящик с магическими рычажками".  
Из области unix-вея мне известны только частичные решения:
 
- Split DNS
- портфорвардинг на роутере или "Hairpin NAT".
- веб-прокси разной степени навороченности
- шаманство с DNS на роутере (простой маскарадинг некоторых запросов или инспекция трафика)
 
 
Ищу ЗАКРЫВАЮЩЕЕ решение для целого комплекса вышеупомянутых проблем.  
 
Среди бесчисленных юниксоидных статей в интернетах ничего подобного мне не попалось до сих пор: решения или частичные, или представляют собой рекламу какого-то софта, пускай и бесплатного (в духе "iptables всемогущ, читайте маны").  Плохо искал?
 
 
 
Добавлено:
 
Если не найдётся исчерпывающей статьи с рецептом, предлагаю обсудить тему в таком порядке:  
 
сперва ЧТО надо сделать,  
затем выбрать подходящий инструмент,  
наконец детализировать, КАК именно добиться желаемого эффекта.

Всего записей: 18092 | Зарегистр. 14-10-2001 | Отправлено: 20:38 20-03-2012
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну если не очень вдаваться в подробности и рассмотреть ситуацию в целом, то я считаю что выглядеть это должно так:
Ну исходить я буду всё-таки из GNU/Linux дистрибутивов.
  • NAT и firewall настраивать понятное дело через iptables, с его настройки и стоит начать. Собственно никаких DNAT'ов тут не надо городить.
  • Что бы сервисы откликались по именам и снутри и снаружи, тут как вы справедливо заметили, самый нормальный подход это Split DNS.
  • Сервисы, я так понял это web-ресурсы какие-то? Ну в таком случае я считают, что они как жили в локалке так пускай там и живут, и пускать к ним стоит через nginx, например, установленный на шлюзе и настроенный в качестве обратного прокси.
  • ну послений пункт выполняется сам собой, после настройки Split DNS.
     
    p.s. готовых таких решений я не видел. Хотя если считать некие сборки и их web-интерфейсы, готовыми решениями, то я считаю что Zentyal уже дорос до весьма неплохо продукта. Однако я люблю настройки сервисов выполнять ручками в текстовых файлах...

    ----------
    Microsoft gives you windows, linuх gives you the whole house...
    I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

  • Всего записей: 6588 | Зарегистр. 28-08-2008 | Отправлено: 20:50 20-03-2012
    LevT



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Сервисы - не обязательно веб-ресурсы. Например, ещё почтовик (но не только).
     
    без iptables понятное дело никуда (даже если оно упаковано в микротик или тот же Zentyal), а вот nginx например в микротик не вштыришь. Какой-то прокси там есть, но скорее сквид.
     
    Смоделировать мне кажется лучше на микротике - именно чтобы разобраться с тем для начала, ЧТО надо делать.  
    А потом уже можно воспроизводить ручками.
     
     
    Добавлено:
     
    Хорошо бы рассмотреть оба варианта:
     
    1) когда нужно всё упихнуть в единственный роутер
    2) когда есть возможность разные функции разнести по разным роутерам ради "loose coupling" и "tight cohesion", для простоты каждого по отдельности и красоты общей картины.
    (У меня например два пограничных роутера занимаются натом к разным провам, а третий - дефолтный шлюз в локалке и заодно занят policy routing)

    Всего записей: 18092 | Зарегистр. 14-10-2001 | Отправлено: 21:36 20-03-2012 | Исправлено: LevT, 21:56 20-03-2012
    Alukardd



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    LevT
    Ну по поводу почтовых серверов внутри локалки, тут ИМХО, надо юзать DNAT, только, разумеется, без SNAT'а в сторону локалки.
     
    А что простите вы называете всем? Эти 4 пункта? Тут имхо их надо вешать на одну машину. Разве что, reverse proxy для web-сервисов можно поднять отдельно, если количество внешних адресов позволяет.
     

    Цитата:
    (У меня например два пограничных роутера занимаются натом к разным провам, а третий - дефолтный шлюз в локалке и заодно занят policy routing)  
    если эти 2 роутера у вас только нятят а за ними стоит 3-ий который балансирует между ними нагрузку, то ИМХО бред - вы создали 2 лишних точки отказа.

    ----------
    Microsoft gives you windows, linuх gives you the whole house...
    I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

    Всего записей: 6588 | Зарегистр. 28-08-2008 | Отправлено: 22:10 20-03-2012
    LevT



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Alukardd

    Цитата:
    Тут имхо их надо вешать на одну машину. Разве что, reverse proxy для web-сервисов можно поднять отдельно, если количество внешних адресов позволяет.  

     
    Хорошо бы рассмотреть оба варианта. У меня лично количество адресов позволяет, но мне интересны общие решения.
     
     

    Цитата:
    если эти 2 роутера у вас только нятят а за ними стоит 3-ий который балансирует между ними нагрузку, то ИМХО бред - вы создали 2 лишних точки отказа.

     
    Ничего я такого не создал, поскольку они все виртуальные.  )
    Можно ещё штук тридцать таких рядом завести ) )  Можно и под соседним хостом, благодаря вмварным виртуальным свичам.
     
    А можно их функции объединить (и настроить VRRP под разными хостами) - но не раньше, чем отлажу их по отдельности.  Именно сборку-разборку, а не просто "сконфигурировать и забыть"
     
     
    Добавлено:

    Цитата:
    только, разумеется, без SNAT'а в сторону локалки.  

     
    Гм, а как тогда они будут отсылать почту в интернет?
     
    Кстати, раз уж кто-то (типа меня) готов выделить айпишник для реверс веба, то почему бы не повесить туда же и почтовый прокси, и прочую application layer фильтрацию?

    Всего записей: 18092 | Зарегистр. 14-10-2001 | Отправлено: 23:36 20-03-2012 | Исправлено: LevT, 23:46 20-03-2012
    Alukardd



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    LevT
    Общее моё мнение такого, что если шлюз по своим вычислительным мощностям и ширине канала позволяет повесить на него все службы, которые логически подходят ему, то их надо вешать на него. В случае с фронтендами для web-серверов в виде nginx'а, я считают что если на бэкенд сервера ходит не 3 человека и серверов таких штуки 3 хотя бы есть, то можно и вынести nginx на отдельную машину (виртуальную или нет это ваше дело), если нагрузка почти нулевая, то вешайте всё на одну шлюзовую машину и не парьтесь.
    Разумеется, что такую критичную точку надо дублировать (читай создавать HA кластер), причем делать это на физически разных машинах, во избежании казусов.
     
    Я, например, при настройке gateway'ев, настройку веду только на одном, а потом уже готовую и настроенную систему клонирую на вторую машину. После чего обе проверяются и можно настраивать кластер или как-там будет решено (вплоть до тупого ручного передёргивания проводов).
    Хотя если падения шлюза не критично, то можно и не заводить копию, а просто всегда иметь свежую копию системы, что бы в случае чего быстро её развернуть.

    ----------
    Microsoft gives you windows, linuх gives you the whole house...
    I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

    Всего записей: 6588 | Зарегистр. 28-08-2008 | Отправлено: 23:57 20-03-2012
    LevT



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Alukardd

    Цитата:
    Общее моё мнение такого, что если шлюз по своим вычислительным мощностям и ширине канала позволяет повесить на него все службы, которые логически подходят ему, то их надо вешать на него.

     
    Да я в принципе согласен: в случае статической продуктивной конфигурации  это так. Но если нужна большая динамика (сборка-разборка-перенастройка) и/или недостаёт опыта и хочется большей модульности для изоляции своих ошибок...
     
    Веб-прокси я никогда не настраивал (ISA-TMG не в счёт, имеется в виду в никсах). Только однажды по статье какой-то сделал для дома прозрачный прокси в микротике, за которым потом успешно сидел.  
     
     
    Так что, прошу помощи с тем, ЧТО надо сделать на прокси и главное чего НЕ НАДО делать (выбор софта оставим на потом, тем более детали конфигов конкретного софта)
     
    Допустим, надо опубликовать  виртуальные хосты webservice1.domain.ru:80  и webservice2.domain.ru:80  на ext.ip.from.isp,  фактические айпишники  int.ip1.from.lan и int.ip2.from.lan
     
    А _https://webservice3.domain.ru:443 ?
     
     
    Добавлено:
     
    Меня несколько удивляет, что nginx может заменить сквид. Не думал, что это софты одного класса. В настройки никсовых приложений мне не хотелось бы лезть без большой на то необходимости: пока что мне хватает изучения бэкендов стораджа и сети.

    Всего записей: 18092 | Зарегистр. 14-10-2001 | Отправлено: 01:05 21-03-2012 | Исправлено: LevT, 01:18 21-03-2012
    Alukardd



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    LevT
    Что касается виртуальных хостов, то в nginx и apache описывается обычный виртуальный хост и вместо указания пути к файлам сайта (читай DocumentRoot) используется директива proxy_pass, можно заворачивать как целый сайт, так и отдельные url (например, проксировать mysite.ru на 192.168.1.2, а mysite.ru/admin на 192.168.5.2).
     
    В случае если надо проксировать https, то сертификаты придётся класть и настраивать для виртуального хоста на фронтенде. Далее если сервису это надо то можно потом эту информацию(о проверенном сертификате) завернуть в собственные заголовки (обычно это может потребовать при использовании клиентских сертификатов, а не просто при использовании https). Соответственно как вы поняли, над заголовками можно издеваться. Тут надо читать доку по конкретному web-серверу который будет выступать как frontend (например, тут по nginx)
     
    Собственно удобство проксирования еще в том, что сзади можно держать сайты (или нечто их заменяющее) на любом порту.
    Если на backend сервере, вы так же хотите оперировать виртуальными хостами (virtual hosts), то соответствующий заголовок следует заново установить (пример: proxy_set_header Host $host;). В противном случае стоящий сзади apache, например, просто не сможет отличить site1.ru от site2.ru и отдаст первый попавшийся (не помню как он решит кто из них лучше).

    ----------
    Microsoft gives you windows, linuх gives you the whole house...
    I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

    Всего записей: 6588 | Зарегистр. 28-08-2008 | Отправлено: 01:17 21-03-2012 | Исправлено: Alukardd, 01:20 21-03-2012
    LevT



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Спасибо! Очень ценно.
     
    А что из перечисленного нельзя сделать сквидом (или можно, но извратно)?
    Есть ли ещё какая-то им альтернатива с этим функционалом, максимально легковесная?  
     
    Это я перешёл ко второму пункту своей программы. )

    Всего записей: 18092 | Зарегистр. 14-10-2001 | Отправлено: 01:28 21-03-2012
    Alukardd



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ну как бы вам сказать, squid умеет обратное проксирование, но это не его основное назначение - это всё прокси-сервер в привычном понимании - то через что клиенты ходят в инет.
    nginx наоборот я не видел что бы использовали в качестве прямого прокси, он и не разрабатывался для этого (хотя такое извращение имеет место быть - proxy_pass $scheme://$http_host$request_uri; - можете погуглить на тему "nginx forward proxy"). nginx - типичный web-сервер, хорошо зарекомендовавший себя в роли frontend'а, в виду своего огромной пропускной способности при малом потреблении ресурсов.
     
    Добавлено:
    Альтернатива мб еще и есть, но зачем? За всем не угонишься... nginx сейчас более чем зрелый продукт с огромным запасом прочности.

    ----------
    Microsoft gives you windows, linuх gives you the whole house...
    I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

    Всего записей: 6588 | Зарегистр. 28-08-2008 | Отправлено: 01:33 21-03-2012
    LevT



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Спасибо ещё раз.
     
    Что осталось неясно из затронутого выше - как без SNAT и без полновесного почтового прокси инициировать исходящие соединения с локального почтовика наружу?
     
    В иптаблесах есть для этого какое-то неизвестное мне сильное кунфу?

    Всего записей: 18092 | Зарегистр. 14-10-2001 | Отправлено: 01:52 21-03-2012
    Alukardd



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    LevT
    А почему без SNAT? Просто Вам ваш домен надо привязать к ip того шлюза через который будет выпущен почтовый сервер и для него прописать зону обратного просмотра и spf запись. Ну и прописать правила для DNAT'а подключений к почтовому серверу.
    Я говорил только о том, что SNAT в сторону локалки делать низя ибо тогда вы не будете знать от кого пришёл запрос со всеми вытекающими...

    ----------
    Microsoft gives you windows, linuх gives you the whole house...
    I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

    Всего записей: 6588 | Зарегистр. 28-08-2008 | Отправлено: 02:07 21-03-2012 | Исправлено: Alukardd, 02:10 21-03-2012
    LevT



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Конфиги обсуждались тут  
    http://www.opennet.ru/openforum/vsluhforumID10/4881.html

    Всего записей: 18092 | Зарегистр. 14-10-2001 | Отправлено: 02:50 21-03-2012
    Alukardd



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    LevT
    Вот об этом я и говорю, не надо делать SNAT в сторону локалки без явной на то необходимости.
     
    OMG рулить виртуальными хостами через iptables match string - ужОс. К тому же я не уверен, что такое правило вообще будет корректно работать, в виду того, что запрос может быть разбит на несколько пакетов, и имя сайта окажется только в первом, а правила работают для каждого конкретного пакета, а не их цепочки.
    Что-то у меня тупняк... А DNAT кажется ведь тоже не на каждый пакет применяется, а делает это на сессию один раз. Или нет? А-а поможите - у меня что-то заскок...
    Всё, конечно же применяется правило только к первому пакету а все остальные идут как RELATED, ну или даже как ESTEBLISHED.

    ----------
    Microsoft gives you windows, linuх gives you the whole house...
    I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

    Всего записей: 6588 | Зарегистр. 28-08-2008 | Отправлено: 13:20 21-03-2012 | Исправлено: Alukardd, 15:13 21-03-2012
    LevT



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Alukardd
    Так вышло, что Zentyal у меня уже стоит (в виртуалке ненастроенный, про запас).  
    Сперва хочу с помощью "коробочки" смоделировать обратный прокси и получить рабочую конфигурацию nginx.
    Как думаете, с каким его компонентом он устанавливается?  (apt-get -ом воспользуюсь только в крайнем случае, чтобы без нужды коробочку не рушить)
     

    Всего записей: 18092 | Зарегистр. 14-10-2001 | Отправлено: 21:14 21-03-2012
    Alukardd



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    LevT
    Цитата:
    Так вышло, что Zentyal у меня уже стоит
    Э-э, у меня так не вышло... Так что тут я вам не помогу.
    Конечно, не хотелось бы вылезать за рамки данной темы, но думаю отдельные вопросы можно задать в конкретной теме - Software Routers&Firewalls (Программные маршрутизаторы). Или подождать пока здесь Ваш вопрос кто-нить найдёт)
     
    С конфигурацией nginx помогу.

    ----------
    Microsoft gives you windows, linuх gives you the whole house...
    I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

    Всего записей: 6588 | Зарегистр. 28-08-2008 | Отправлено: 22:20 21-03-2012
    vlary



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    LevT А что, получить пул белых адресов совсем не вариант?
    У меня, например, есть сетка /28 от одного прова и /28 от другого прова. На все про все хватает, ни в чем себе не отказываю.  


    ----------
    Заслуженный SCOтовод, почетный SUNтехник и любитель Кошек

    Всего записей: 17290 | Зарегистр. 13-06-2007 | Отправлено: 22:31 21-03-2012
    LevT



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vlary
    Да есть у меня лично адреса... Правда не /28, а /29, и не от обоих провайдеров, а от одного из двух (второй, билайн, захотел развести меня на какой-то геморрой  с бумажным обоснованием необходимости /29, так что я на это забил.)
     
    Всё-таки, адреса ресурс ограниченный извне, не всегда доступный админу. Хочется найти демократичное решение для всех.
     
     
    Добавлено:
    Alukardd
     
    Ещё вариант, если по нему поможете будет отлично
     
    Nginx стоит у меня в коробочке bigbluebutton.org, собственно эта коробка один из вебсервисов зависимых от virtual hosts, именно его мне надо опубликовать в первую очередь.
     
    В нём есть автомагический скрипт, и в FAQ написано как его применить bbb-conf --setip  bbb.domain.ru   (вкупе с DNAT на  шлюзе и модификацией /etc/hosts  

    Цитата:
    bbb.domain.ru  int.ip1.from.lan
     )
     
     
    И это даже начинает работать для внешних клиентов - но нгинкс после этого истерит для внутренних, обращающихся к нему по циферькам из локалки.  Думаю, что ему-то лично будет достаточно SplitDNS
     
    Как оцените идею использовать именно тот nginx для экспериментальной публикации остального добра? Придётся для этого отказаться от автомагического конфига и выставить коробочку в интернет (добавив ей внешний интерфейс).
     

    Всего записей: 18092 | Зарегистр. 14-10-2001 | Отправлено: 22:47 21-03-2012 | Исправлено: LevT, 23:10 21-03-2012
    Alukardd



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    LevT
    Я не понял что делает bbb-conf... Единственное сто понял, что после этого nginx не отвечает на внутренние запросы по своему внутреннему ip. В любом случае, если вы примитивно своим bbb не нарушили обыкновенную маршрутизацию в сети, то nginx должен вернуть ближайший "сервер" который он слушает по указанному ip.
     
    Короче, я не особо понял что вы сделали и что произошло)

    ----------
    Microsoft gives you windows, linuх gives you the whole house...
    I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

    Всего записей: 6588 | Зарегистр. 28-08-2008 | Отправлено: 23:11 21-03-2012
    LevT



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bbb - сервер видеоконференцсвязи, навороченная конструкция с томкатом и фрисвичем внутри (среди прочего)
     
    Мне самому этот их скрипт смены адреса показался хлипким, я в ужасе откатился к снапшоту первоначальной конфигурации (dhcp).  Сам ни в жисть туда внутрь виртуальной коробочки не полезу со своим нынешним Elementary уровнем компетенции в никсах.
     
    Но... гложет мысль не ставить отдельный нгинкс, раз он уже есть прямо сейчас в bbb. Но! без мудрого руководства я точно сам не справлюсь.

    Всего записей: 18092 | Зарегистр. 14-10-2001 | Отправлено: 23:16 21-03-2012 | Исправлено: LevT, 23:30 21-03-2012
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6

    Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » NAT и публикация сервисов с учётом virtual hosts


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2025

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru