среда, 5 августа 2015 г.


Reverse Proxy для Lync 2013 / SfB за 15 минут.


 Раньше для публикации веб сервиса Lync, конференций, автообнаружения и Office Web Apps, предлагали использовать TMG, но он уже не поддерживается и не продается. К тому же для данной задачи он избыточен. Microsoft рекомендует использовать WAP, но этот продукт мне решительно не нравится из-за своей громоздкости и неповоротливости. Поэтому я решил построить свой лунапарк с... альтернативное решение.



В предыдущей статье я обещал рассказать, как можно лучше утилизировать мощности машины, которую мы задействовали для балансировки нагрузки Exchange. Так вот - будем через нее публиковать Lync/Sfb (Reverse Proxy). Если сервер очень нагружен (более 50 новых сессий в секунду/ 1500 запросов), то надо использовать Nginx. Но у меня таких нагрузок нет, поэтому предлагаю использовать проверенное мной решение на базе Apache.

ОС используем Centos 6.6. Понятно, что она не самая свежая, но для нашей задачи 7+ не требуется.

Для начала установим репозиторий epel:

yum install epel-release -y

Далее ставим Apache и mod_ssl:

yum -y install httpd mod_ssl

Создаем папку для сертификата:

mkdir /etc/httpd/ssl

Прописываем внутренние IP Lync Frontend:

vim /etc/host

10.1.1.33 lyncdiscover.lin.by
10.1.1.33 lync-frontend.contoso.local
10.1.1.34 wac.contoso.local
10.1.1.33 lyncdiscoverinternal.lync.local

Теперь создаем (редактируем) конфиг для HTTP, через который будет работать автообнаружение:

vim /etc/httpd/conf.d/http.conf

<IfModule mod_proxy.c>
ProxyRequests Off

<Proxy *>
    Order deny,allow
    Allow from All
</Proxy>

ProxyVia Full
</IfModule>

<VirtualHost *:80>
        ServerAdmin techs@localhost

        ErrorLog /var/log/httpd/error.log
        CustomLog /var/log/httpd/access.log combined

                ProxyPass / http://lyncdiscoverinternal.lync.local:8080/
                ProxyPassReverse / http://lyncdiscoverinternal.lync.local:8080/

</VirtualHost>


Ок. Теперь надо опубликовать наш Frontend и Office Web Apps (для показа публикаций PowerPoint):

vim /etc/httpd/conf.d/ssl.conf


Listen 443

SSLPassPhraseDialog  builtin
SSLSessionCache         shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout  300
SSLMutex default
SSLRandomSeed startup file:/dev/urandom  256
SSLRandomSeed connect builtin
SSLCryptoDevice builtin
LoadModule ssl_module modules/mod_ssl.so
LoadModule ssl_module modules/mod_proxy_connect.so
NameVirtualHost *:443

## Публикуем адрес для конференций

<VirtualHost *:443>

ServerName meet.lin.by 

ErrorLog logs/lync_ssl_error_log
TransferLog logs/lync_ssl_access_log
LogLevel warn

SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \
EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \
EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"
SSLCertificateFile /etc/httpd/ssl/cert.crt
SSLCertificateKeyFile /etc/httpd/ssl/private.key

                SSLProxyEngine on
                ProxyPreserveHost on
                KeepAlive On
  ProxyRequests Off
                ProxyReceiveBufferSize 4096
                ProxyPass / https://lync-frontend.contoso.local:4443/ KeepAlive=on
                ProxyPassReverse / https://lync-frontend.contoso.local:4443/ KeepAlive=on

SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
CustomLog logs/lync_ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>                                  
### Публикуем веб сервис

 <VirtualHost *:443>

ServerName sfb-ext.atservers.net  

ErrorLog logs/lync_ssl_error_log
TransferLog logs/lync_ssl_access_log
LogLevel warn

SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \
EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \
EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"
SSLCertificateFile /etc/httpd/ssl/cert.crt
SSLCertificateKeyFile /etc/httpd/ssl/private.key

                SSLProxyEngine on
                ProxyPreserveHost on
                KeepAlive On
                ProxyRequests Off
                ProxyReceiveBufferSize 4096
                ProxyPass / https://lync-frontend.contoso.local:4443/ KeepAlive=on  ## меняем на свое значение
                ProxyPassReverse / https://lync-frontend.contoso.local:4443/ KeepAlive=on  ## меняем на свое значение

SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
CustomLog logs/lync_ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

## Публикуем Office Web Apps

<VirtualHost *:443>

ServerName wac-test.lin.by 

ErrorLog logs/wac_ssl_error_log
TransferLog logs/wac_ssl_access_log
LogLevel warn

SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \
EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \
EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"
SSLCertificateFile /etc/httpd/ssl/cert.crt
SSLCertificateKeyFile /etc/httpd/ssl/private.key

                SSLProxyEngine on
                ProxyPreserveHost on
                KeepAlive On
                ProxyRequests Off
                ProxyReceiveBufferSize 4096
                ProxyPass / https://wac.contoso.local:4443/ KeepAlive=on
                ProxyPassReverse / https://wac.contoso.local:4443/ KeepAlive=on

SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

CustomLog logs/wac_ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>


Теперь время добавить сертификат и ключ. Их надо разместить соответственно:

/etc/httpd/ssl/cert.crt
/etc/httpd/ssl/private.key

Перезапускаем Apache и проверяем подключение клиента:

/etc/init.d/httpd restart


Как видите, настройки элементарные. Если выполните правильно все пункты, то вопросов не будет, все заведется из коробки. Я специально приложил конфиги целиком.






















Комментариев нет:

Отправить комментарий