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
Как видите, настройки элементарные. Если выполните правильно все пункты, то вопросов не будет, все заведется из коробки. Я специально приложил конфиги целиком.
Комментариев нет:
Отправить комментарий