<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Булдаков.ru</title>
	<atom:link href="http://www.buldakov.ru/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.buldakov.ru</link>
	<description>Записки сисадмина</description>
	<lastBuildDate>Fri, 04 May 2012 09:22:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Записки о репликации</title>
		<link>http://www.buldakov.ru/?p=1992</link>
		<comments>http://www.buldakov.ru/?p=1992#comments</comments>
		<pubDate>Fri, 04 May 2012 09:04:44 +0000</pubDate>
		<dc:creator>Stanislav Buldakov</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[Из жизни]]></category>

		<guid isPermaLink="false">http://www.buldakov.ru/?p=1992</guid>
		<description><![CDATA[Читая Windows Server 2008 Active Directory Resource Kit наткнулся на забавный момент: If a user has just changed his or her password using a down-level client, the change was made on the PDC emulator. The PDC emulator will replicate that change to a replication partner in the same site within a 15 seconds. If there [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone  wp-image-1994" title="446" src="http://www.buldakov.ru/wp-content/uploads/2012/05/446-150x150.jpg" alt="" width="90" height="90" align="left" />Читая <a title="Windows® Server 2008 Active Directory Resource Kit" href="http://www.microsoft.com/learning/en/us/book.aspx?id=9552&amp;locale=en-us" target="_blank">Windows Server 2008 Active Directory Resource Kit</a> наткнулся на забавный момент:</p>
<blockquote><p>If a user has just changed his or her password using a down-level client, the change was made on the PDC emulator. The PDC emulator will replicate that change to a replication partner in the same site within a 15 seconds. If there is no replication partner in the same site, the password replication will not occur until the next schedule intersite replication.</p></blockquote>
<p>Вроде бы странное утверждение. Давайте смотреть как у нас происходит распространение изменений. Всего существует три типа распространения изменений объектов AD в зависимости от типа изменения:</p>
<ul>
<li><strong>Обычная репликация</strong>. Изменения большинства объектов происходит следующим образом: на контроллере домена происходит изменение объекта, контроллер домена ждёт 15 секунд (если он на базе Windows 2000, то 300 секунд), затем пытается уведомлять ближайшего партнёра по репликации в сайте об изменении объекта. Затем с интервалом в 3 секунды ((если он на базе Windows 2000, то 30 секунд)) уведомляются остальные контроллеры домена в сайте. Изменения на другие сайты доходят через сервера-плацдармы в соответствии с расписанием, указанным в настройках межсайтового коннектора.</li>
<li><strong>Срочная репликация</strong>. Происходит при осуществлении изменений следующих типов: блокировка учётной записи в результате превышения числа разрешённых попыток ввода пароля, изменение политик блокировки учётных записей, изменение доменных политик паролей, изменение пароля компьютерного объекта контроллера домена, изменение ключа LSA, смена владельца роли FSMO RID Master. Как следует из названия, репликация таких изменений внутри сайта происходит сразу же после их появления. Между сайтами репликация происходит сразу же только в случае <a title="How To Enable Change Notification On All Site Links " href="http://www.expta.com/2009/03/how-to-enable-change-notification-on.html" target="_blank">включения уведомления об изменениях между сайтами</a> (по умолчанию выключено на межсайтовом коннекторе). Иначе по расписанию.</li>
<li><strong>Репликация изменения пароля</strong>. При изменении пароля, контроллер домена, на котором произошло изменение, сразу же пересылает его на контроллер домена с FSMO ролью PDC Emulator. Дальнейшее распространение изменения происходит через обычную репликацию. Почему не происходит распространения изменений дальше через срочную репликацию? Дело в том, что при попытке аутентификации с помощью нового пароля на контроллере домена, содержащем старую реплику пароля, он обратится к PDC Emulator&#8217;у и тот подтвердит актуальность вводимых пользователем данных. То есть пользователь сможет аутентифицироваться, даже если ближайший контроллер домена не содержит актуальную реплику пароля.</li>
</ul>
<p><span style="text-decoration: underline;">Интересные ссылки:</span><br />
<a title="How the Active Directory Replication Model Works" href="http://technet.microsoft.com/en-us/library/cc772726(v=ws.10).aspx" target="_blank">How the Active Directory Replication Model Works</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.buldakov.ru/?feed=rss2&#038;p=1992</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enterprise Vault 10.0.1: новый плагин для Outlook</title>
		<link>http://www.buldakov.ru/?p=1989</link>
		<comments>http://www.buldakov.ru/?p=1989#comments</comments>
		<pubDate>Mon, 02 Apr 2012 12:56:02 +0000</pubDate>
		<dc:creator>Stanislav Buldakov</dc:creator>
				<category><![CDATA[Applications]]></category>

		<guid isPermaLink="false">http://www.buldakov.ru/?p=1989</guid>
		<description><![CDATA[В появившемся на днях Enterprise Vault 10.0.1 наконец-то появился нормальный плагин для Outlook. Обещают следующее: Полная поддержка всех последних версий Outlook (напомню, что раньше для Outlook 2010 был доступен только облегченный клиент, который не позволял менять настройки политик хранения). Больше не будет разделения на полную и облегчённую версию дистрибутива. Дистрибутив будет один (для каждого языка). [...]]]></description>
			<content:encoded><![CDATA[<p>В появившемся на днях Enterprise Vault 10.0.1 наконец-то появился нормальный плагин для Outlook. Обещают следующее:</p>
<ul>
<li>Полная поддержка всех последних версий Outlook (напомню, что раньше для Outlook 2010 был доступен только облегченный клиент, который не позволял менять настройки политик хранения).</li>
<li>Больше не будет разделения на полную и облегчённую версию дистрибутива. Дистрибутив будет один (для каждого языка). А функциональность, доступная для клиента (полный/облегченный), будет регулироваться на уровне политик рабочего стола.</li>
<li>Плагин теперь работает с сервером исключительно по HTTP/HTTPS.</li>
</ul>
<p>На этом, пожалуй, всё.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.buldakov.ru/?feed=rss2&#038;p=1989</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Срок хранения удалённых объектов AD в зависимости от версии Windows</title>
		<link>http://www.buldakov.ru/?p=1975</link>
		<comments>http://www.buldakov.ru/?p=1975#comments</comments>
		<pubDate>Tue, 20 Mar 2012 18:06:09 +0000</pubDate>
		<dc:creator>Stanislav Buldakov</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[Из жизни]]></category>

		<guid isPermaLink="false">http://www.buldakov.ru/?p=1975</guid>
		<description><![CDATA[Как известно, объекты AD удаляются не сразу. Вместо них создаются объекты-захоронения (tombstone objects) имеющие лишь незначительную часть аттрибутов первоначального объекта. Помимо этого параметр isDeleted такого объекта равен true. В связи с этим имеется интересный вопрос &#8212; как долго такие объекты хранятся? Время хранения определяется свойством tombstoneLifetime объекта CN=Configuration,DC=ForestRootDomainName, CN=Services,CN=Windows NT,CN=Directory Service. Что интересно &#8212; по [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone  wp-image-1015" title="kot" src="http://www.buldakov.ru/wp-content/uploads/2010/12/kot.jpg" alt="" width="107" height="71" align="left" />Как известно, объекты AD удаляются не сразу. Вместо них создаются объекты-захоронения (tombstone objects) имеющие лишь незначительную часть аттрибутов первоначального объекта. Помимо этого параметр isDeleted такого объекта равен true. В связи с этим имеется интересный вопрос &#8212; как долго такие объекты хранятся? Время хранения определяется свойством <strong><a title="Tombstone-Lifetime attribute" href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms680306(v=vs.85).aspx" target="_blank">tombstoneLifetime</a></strong> объекта <a title="Determine the tombstone lifetime for the forest" href="http://technet.microsoft.com/ru-ru/library/cc784932(v=ws.10).aspx" target="_blank"><strong>CN=Configuration,DC=</strong><em>ForestRootDomainName</em>, <strong>CN=Services</strong>,</a><strong><a title="Determine the tombstone lifetime for the forest" href="http://technet.microsoft.com/ru-ru/library/cc784932(v=ws.10).aspx" target="_blank">CN=Windows NT,</a><strong><a title="Determine the tombstone lifetime for the forest" href="http://technet.microsoft.com/ru-ru/library/cc784932(v=ws.10).aspx" target="_blank">CN=Directory Service</a>.</strong></strong></p>
<p>Что интересно &#8212; по умолчанию этот параметр не задаётся. Это может означать, что его значение может меняться от версии к версии. В итоге у меня получилась следующая табличка по значениям этого аттрибута:</p>
<table border="1" cellspacing="1">
<tbody>
<tr>
<th>Первый контроллер домена в лесу</th>
<th>Значение tombstoneLifetime</th>
</tr>
<tr>
<td>Windows 2000</td>
<td>60 days</td>
</tr>
<tr>
<td>Windows Server 2003</td>
<td>60 days</td>
</tr>
<tr>
<td>Windows Server 2003 with Service Pack 1</td>
<td>180 days</td>
</tr>
<tr>
<td>Windows Server 2003 R2</td>
<td>60 days</td>
</tr>
<tr>
<td>Windows Server 2003 with Service Pack 2</td>
<td>180 days</td>
</tr>
<tr>
<td>Windows Server 2008</td>
<td>180 days</td>
</tr>
<tr>
<td>Windows Server 2008 R2</td>
<td>180 days</td>
</tr>
</tbody>
</table>
<p>Следует так же помнить, что значение tombstoneLifetime наследуется при обновлении операционных систем контроллеров доменов. Это значит, что если лес создавался на базе Windows 2000/2003 (без SP1)/2003 R2, затем контроллеры домена менялись на серверы на базе следующих версий Windows, то срок хранения удалённых объектов будет 60 дней. Если же лес создавался на базе Windows 2003 SP1/2008/2008 R2, то 180 дней, даже после обновления на следующие версии Windows.</p>
<p>Ещё один небольшой штрих. При установке на Windows Server 2003 SP1 версии R2 значение аттрибута менялось на 60 дней, но это поведение считается ошибкой и исправляется установкой SP2, о чём говорится в статье ниже.</p>
<p><span style="text-decoration: underline;">Интересные ссылки:</span><br />
<a title="Information about lingering objects in a Windows Server Active Directory forest" href="http://support.microsoft.com/kb/910205/en-us" target="_blank">Information about lingering objects in a Windows Server Active Directory forest</a><br />
<a title="New Active Directory features in Windows Server 2003 with Service Pack 1 (SP1)" href="http://technet.microsoft.com/en-us/library/cc739255(v=ws.10).aspx" target="_blank">New Active Directory features in Windows Server 2003 with Service Pack 1 (SP1)</a><br />
<a title="The default tombstone lifetime (TSL) value remains at 60 days instead of increasing to 180 days in Windows Server 2003 R2" href="http://support.microsoft.com/kb/924890/en-us" target="_blank">The default tombstone lifetime (TSL) value remains at 60 days instead of increasing to 180 days in Windows Server 2003 R2</a><br />
<a title="Scenario Overview for Restoring Deleted Active Directory Objects" href="http://technet.microsoft.com/en-us/library/dd379542(v=ws.10).aspx" target="_blank">Scenario Overview for Restoring Deleted Active Directory Objects</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.buldakov.ru/?feed=rss2&#038;p=1975</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Exchange 2010: язык сообщений NDR и DSN</title>
		<link>http://www.buldakov.ru/?p=1968</link>
		<comments>http://www.buldakov.ru/?p=1968#comments</comments>
		<pubDate>Mon, 19 Mar 2012 13:04:10 +0000</pubDate>
		<dc:creator>Stanislav Buldakov</dc:creator>
				<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Из жизни]]></category>

		<guid isPermaLink="false">http://www.buldakov.ru/?p=1968</guid>
		<description><![CDATA[По умолчанию Exchange 2010 язык сообщений NDR (Non Delivery Report) и DSN (Delivery Status Notification) пытается выбрать исходя из языка получаемого сообщения (в ответ на которое генерируются NDR/DSN). Если это сделать не получается, то выбирается язык, указанный в региональных настройках сервера, на котором развёрнута роль Hub Transport, на котором генерируются сообщения DNR/DSN. Например, если письмо получено на [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-730" title="e2010" src="http://www.buldakov.ru/wp-content/uploads/2009/11/e2010.jpg" alt="" width="57" height="73" align="left" />По умолчанию Exchange 2010 язык сообщений NDR (Non Delivery Report) и DSN (Delivery Status Notification) пытается выбрать исходя из языка получаемого сообщения (в ответ на которое генерируются NDR/DSN). Если это сделать не получается, то выбирается язык, указанный в региональных настройках сервера, на котором развёрнута роль Hub Transport, на котором генерируются сообщения DNR/DSN.</p>
<p>Например, если письмо получено на немецком языке, а в настройках сервера стоит русский, то NDR/DSN будет сформирован на русском языке (если на сервер не установлен немецкий язык). Проблемы нет, если компания работает на территории одной страны. Однако, если компания работает на территории нескольких стран и имеет разветвлённую почтовую инфраструктуру, то может случиться ситуация, когда немецкий клиент получит сообщение NDR/DSN на русском языке, что может его поставить в тупик. Чтобы это исправить необходимо изменить поведение транспортной подсистемы почтовой организации, которое отвечает за выбор языка для сообщений NDR/DSN. За это отвечают два параметра настроек транспортной подсистемы &#8212; ExternalDsnLanguageDetectionEnabled и ExternalDsnDefaultLanguage. По умолчанию они выглядят следующим образом:</p>
<pre class="brush: bash; title: ; notranslate">[PS] C:\Windows\system32&gt;Get-TransportConfig | fl externalds*lang*

ExternalDsnDefaultLanguage          :
ExternalDsnLanguageDetectionEnabled : True</pre>
<p>По умолчанию транспортный сервер пытается определить язык входящего сообщения (ExternalDsnLanguageDetectionEnabled), и если не получается это сделать, то использует язык, указанный в региональных настройках. Чтобы поменять это поведение используем командлет:</p>
<pre class="brush: powershell; title: ; notranslate">Set-TransportConfig -ExternalDsnDefaultLanguage en-us
-ExternalDsnLanguageDetectionEnabled $false</pre>
<p>То есть выключаем автоопределение и включаем в качестве языка для NDR/DSN английский. В Exchange 2007 эти настройки хранятся в параметрах транспортного сервера (доступны через Get/Set-TransportServer).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.buldakov.ru/?feed=rss2&#038;p=1968</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Внезапно!</title>
		<link>http://www.buldakov.ru/?p=1961</link>
		<comments>http://www.buldakov.ru/?p=1961#comments</comments>
		<pubDate>Fri, 16 Mar 2012 19:12:23 +0000</pubDate>
		<dc:creator>Stanislav Buldakov</dc:creator>
				<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Из жизни]]></category>

		<guid isPermaLink="false">http://www.buldakov.ru/?p=1961</guid>
		<description><![CDATA[Буду отвечать на вопросы про кошек и Exchange!]]></description>
			<content:encoded><![CDATA[<p><a href="http://social.technet.microsoft.com/Forums/ru-RU/exchange2010ru/thread/7e0f83f5-de86-4f56-8c03-895faebd54bb"><img class="alignnone size-full wp-image-1962" title="Станислав-Булдаков" src="http://www.buldakov.ru/wp-content/uploads/2012/03/Станислав-Булдаков.gif" alt="" width="300" height="250" border="0" /></a></p>
<p>Буду отвечать на вопросы про кошек и Exchange!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.buldakov.ru/?feed=rss2&#038;p=1961</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reverse Proxy на базе IIS</title>
		<link>http://www.buldakov.ru/?p=1912</link>
		<comments>http://www.buldakov.ru/?p=1912#comments</comments>
		<pubDate>Fri, 02 Mar 2012 19:27:10 +0000</pubDate>
		<dc:creator>Stanislav Buldakov</dc:creator>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Из жизни]]></category>

		<guid isPermaLink="false">http://www.buldakov.ru/?p=1912</guid>
		<description><![CDATA[Данный пост появился в результате демонстрации, проведённой для меня Александром Станкевичем. О возможности организовать Reverse Proxy-сервер на базе IIS я до этого не знал. В стандартном комплекте IIS этой возможности нет — нужно установить специальный компонент IIS, который называется Application Request Routing. После установки ARR в окне просмотра функций нашего IIS сервера (в оснастке Internet [...]]]></description>
			<content:encoded><![CDATA[<p>Данный пост появился в результате демонстрации, проведённой для меня <a href="http://cid-62c708b019adff92.profile.live.com/" target="_blank">Александром Станкевичем</a>. О возможности организовать Reverse Proxy-сервер на базе IIS я до этого не знал. В стандартном комплекте IIS этой возможности нет — нужно установить специальный компонент IIS, который называется <a title="Application Request Routing" href="http://www.iis.net/download/ApplicationRequestRouting" target="_blank">Application Request Routing</a>.</p>
<p>После установки ARR в окне просмотра функций нашего IIS сервера (в оснастке Internet Information Services Manager) появится «URL Rewrite», а в дереве сайтов — пункт «Server Farms»:</p>
<p><img class="alignnone size-full wp-image-1913" title="Capture01" src="http://www.buldakov.ru/wp-content/uploads/2012/02/Capture011.jpg" alt="" width="526" height="338" /></p>
<p>На базе модуля «URL Rewrite» и можно построить Reverse Proxy-сервер. Важно помнить, что «URL Rewrite» доступен как на уровне всего сервера, так и на уровне отдельных сайтов и приложений, расположенных в этих сайтах. Поэтому Reverse Proxy на базе IIS сервера можно очень гибко настраивать.<span id="more-1912"></span></p>
<p style="text-align: center;"><strong>Фермы</strong></p>
<p>Для начала имеет смысл создать ферму серверов, которые будут получателями трафика, пересылаемого Reverse Proxy-сервером:</p>
<p><img class="alignnone size-full wp-image-1916" title="Capture02" src="http://www.buldakov.ru/wp-content/uploads/2012/02/Capture021.jpg" alt="" width="283" height="178" /></p>
<p>Затем надо будет указать имя фермы и добавить имена серверов. Из интересного — в дополнительных настройках серверов можно указать какие порты будут слушать HTTP/HTTPS-трафик, а так же вес сервера:</p>
<p><img class="alignnone size-full wp-image-1917" title="Capture03" src="http://www.buldakov.ru/wp-content/uploads/2012/02/Capture031.jpg" alt="" width="419" height="211" /></p>
<p>Последним шагом будет предложено создать правило, которое будет перенаправлять весь входящий трафик на новую ферму. Имеет смысл с этим согласиться.</p>
<p>Бонусов в создании фермы достаточно много. Для фермы мы можем включить кэширование, настроить проверку доступности нашего Web-сервера, балансировку (доступно большое количество условий, по которым можно выполнять балансировку) и т. д. Полный набор доступных функций ниже:</p>
<p><img class="alignnone size-full wp-image-1918" title="Capture04" src="http://www.buldakov.ru/wp-content/uploads/2012/02/Capture04.jpg" alt="" width="533" height="100" /></p>
<p style="text-align: center;"><strong>Правила</strong></p>
<p>По завершении создания фермы можно посмотреть на только что созданное правило. Оно будет находиться на уровне сервера IIS в «URL Rewrite» и называться «ARR_FarmName_loadbalance». Правило пересылает все запросы, приходящие на сервер IIS и подходящие под шаблон «*», на нашу новую ферму и по завершении останавливает выполнение других правил:</p>
<p><img class="alignnone size-full wp-image-1919" title="Capture05" src="http://www.buldakov.ru/wp-content/uploads/2012/02/Capture05.jpg" alt="" width="578" height="529" /></p>
<p>Остановимся подробнее на правилах. Правила состоят из четырёх компонентов:</p>
<ul>
<li><strong>Match URL</strong> — фильтр URL, который выбирает только те запросы для обработки правилом, которые подходят под шаблон, указанный в фильтре</li>
<li><strong>Conditions</strong> - условия, которые определяют дополнительную логику работы правила с теми запросами, которые прошли фильтр URL</li>
<li><strong>Action</strong> — действия, которые выполняются с запросами, которые прошли фильтр URL и удовлетворяют условиям, указанным в Conditions</li>
</ul>
<p>Запросы, проходящие через наш Reverse Proxy-сервер, содержат URL сервера, к которому обращается клиент. В общем случае он выглядит следующим образом:</p>
<p><strong>http(s)://&lt;host&gt;:&lt;port&gt;/&lt;path&gt;?&lt;querystring&gt;</strong></p>
<p>Match URL работает с <strong>&lt;path&gt;</strong> из части запроса URL. Части <strong>&lt;host&gt;</strong>, <strong>&lt;port&gt;</strong> и <strong>&lt;querystring&gt;</strong> доступны в Conditions через переменные «<strong>HTTP_HOST</strong>», «<strong>SERVER_PORT</strong>» и «<strong>QUERY_STRING</strong>». Так же в Conditions доступны переменные «<strong>SERVER_PORT_SECURE</strong>» и «<strong>HTTPS</strong>» для обработки HTTP-запросов.</p>
<p>Подробнее о компонентах.</p>
<p style="text-align: center;"><strong>Match URL</strong></p>
<p>Для фильтрации используются шаблоны на основе регулярных выражений или подстановочных знаков (wildcards). Можно делать инвертированные правила (которые обрабатывают все запросы, не удовлетворяющие данному шаблону). Так же есть возможность включить/выключить игнорирование строчных и прописных букв в запросе.</p>
<p><img class="alignnone size-full wp-image-1920" title="Capture06" src="http://www.buldakov.ru/wp-content/uploads/2012/02/Capture06.jpg" alt="" width="579" height="196" /></p>
<p style="text-align: center;"><strong>Conditions</strong></p>
<p>Для использования дополнительных условий фильтрации доступны переменные, указанные выше. Можно требовать одновременного выполнения всех условий, либо любого условия из списка (Match All или Match Any). Например, на картинке ниже, мы указали, чтобы в фильтр попадали все запросы, в которых содержится URL с доменным именем «cwapp.domain.com» и доступ осуществлялся по HTTPS:</p>
<p><img class="alignnone size-full wp-image-1921" title="Capture07" src="http://www.buldakov.ru/wp-content/uploads/2012/02/Capture07.jpg" alt="" width="579" height="280" /></p>
<p>Помимо стандартных переменных, список которых я указал выше, можно использовать любые переменные, находящиеся в HTTP-запросе, который проходит через Reverese Proxy. Имя такой новой переменной собирается следующим образом:</p>
<ul>
<li>Все знаки «<strong>-</strong>» заменяются на знаки «<strong>_</strong>»</li>
<li>Все буквы заменяются на заглавные</li>
<li>Спереди дописывается приставка «<strong>HTTP_</strong>»</li>
</ul>
<p>Прекрасным примером использования переменных может служить правило, созданное на сервере переднего плана Lync,  для мобильных клиентов:</p>
<p><img class="alignnone size-full wp-image-1922" title="Capture08" src="http://www.buldakov.ru/wp-content/uploads/2012/02/Capture08.jpg" alt="" width="578" height="280" /></p>
<p style="text-align: center;"><strong>Action</strong></p>
<p>В Action указывается действие, которому подвергается HTTP-запрос, удовлетворяющий Match URL и Conditions. Доступны следующие действия:</p>
<ul>
<li><strong>Rewrite -</strong> Заменяется URL входящего запроса на тот, который мы укажем. Следует помнить, что в случае использования абсолютного URL-пути запрос будет выполняться по всем правилам, то есть за пределами сервера, реализуя тем самым полноценный Reverse Proxy.</li>
<li><strong>Redirect -</strong> Клиент получает ответ о перенаправлении HTTP-запроса на URL, который мы укажем, клиенту при этом возвращается статус 301, 302, 303 или 307. Указываемый в URL путь может быть абсолютным (http://cwapp.domain.com/default.aspx) или относительным (test/index.htm)</li>
<li><strong>Route to Server Farm -</strong> Доступен только при наличии фермы и только на глобальном уровне (на уровне сайта или приложения не доступен). Запрос перенаправляется на ферму.</li>
<li><strong>CustomResponse -</strong> Клиенту возвращается указанный статус и причина возвращения запроса.</li>
<li><strong>AbortRequest -</strong> Отбрасывается клиентский запрос.</li>
<li><strong>None -</strong> Никаких действий не производится.</li>
</ul>
<p>Возвращаемся к Reverse Proxy. Предположим, нам необходимо перенаправлять запросы, идущие к «http://cwapp.domain.com», на сервер переднего плана Lync. Для этого укажем по какому IP-адресу будет отвечать наш сайт, отвечающий за Reverse Proxy. В DNS необходимо будет прописать хост «cwapp.domain.com» с IP-адресом, который мы закрепили за Web-сайтом. Затем, на уровне сайта заходим в URL Rewrite и добавляем правило (Add Rule(s)…), указываем тип правила — «Reverse Proxy»:</p>
<p><img class="alignnone size-full wp-image-1924" title="Capture09" src="http://www.buldakov.ru/wp-content/uploads/2012/02/Capture09.jpg" alt="" width="414" height="158" /></p>
<p>Затем вводим, на какой сервер перенаправлять запросы:</p>
<p><img class="alignnone size-full wp-image-1935" title="Capture10" src="http://www.buldakov.ru/wp-content/uploads/2012/03/Capture10.jpg" alt="" width="446" height="135" /></p>
<p>В итоге получаем простейшее правило, которое будет перенаправлять запросы, приходящие к нашему сайту, на сервер переднего плана Lync (или на любой другой, который укажем).</p>
<p>Используя новые знания, можно попробовать настроить более хитрое обратное Proxy’рование запросов, приходящих на наш сайт IIS (и не только на него).</p>
<p>Попробуем настроить перенаправление клиентских запросов к «https://meet.domain.com». Для этого на уровне сервера IIS заходим в «URL Rewrite» и создаём новое правило:</p>
<p><img class="alignnone size-full wp-image-1930" title="Capture11" src="http://www.buldakov.ru/wp-content/uploads/2012/03/Capture11.jpg" alt="" width="407" height="148" /></p>
<p>Далее нужно будет указать название для правила, а так же шаблон для запросов, попадающих под его действие (можно использовать подстановку «*»):</p>
<p><img class="alignnone size-full wp-image-1931" title="Capture12" src="http://www.buldakov.ru/wp-content/uploads/2012/03/Capture12.jpg" alt="" width="579" height="244" /></p>
<p>В дополнительных условиях указываем имя хоста (meet.domain.com) и использование в запросе HTTPS-протокола:</p>
<p><img class="alignnone size-full wp-image-1932" title="Capture13" src="http://www.buldakov.ru/wp-content/uploads/2012/03/Capture13.jpg" alt="" width="580" height="281" /></p>
<p>В действиях правила указываем перенаправлять запрос на ферму серверов Lync по HTTPS. Не забываем включить настройку отключения выполнения других правил:</p>
<p><img class="alignnone size-full wp-image-1933" title="Capture14" src="http://www.buldakov.ru/wp-content/uploads/2012/03/Capture14.jpg" alt="" width="579" height="217" /></p>
<p>Таким образом, решение на базе сервера IIS и дополнительного компонента «Application Request Routing» вполне может заменить, в некоторых случаях, более тяжёлые решения на базе «Microsoft Threat Management Gateway» или аппаратных балансировщиков нагрузки.</p>
<p>Особая благодарность выражается <a href="http://cid-62c708b019adff92.profile.live.com/">Александру Станкевичу</a> за помощь в написании данной статьи. Если вас заинтересовала данная тема, можете посмотреть его <a title="Развёртывание Lync Server 2010 Mobility и Reverse Proxy на IIS" href="http://imamyshev.wordpress.com/2012/02/21/lync_mobility/" target="_blank">видео-демонстрацию</a> по установке и настройке «Application Request Routing» в контексте использования для «Lync Mobility».</p>
]]></content:encoded>
			<wfw:commentRss>http://www.buldakov.ru/?feed=rss2&#038;p=1912</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Интеграция OWA/Lync Server: тонкости</title>
		<link>http://www.buldakov.ru/?p=1892</link>
		<comments>http://www.buldakov.ru/?p=1892#comments</comments>
		<pubDate>Wed, 22 Feb 2012 11:13:48 +0000</pubDate>
		<dc:creator>Stanislav Buldakov</dc:creator>
				<category><![CDATA[Lync]]></category>
		<category><![CDATA[Из жизни]]></category>

		<guid isPermaLink="false">http://www.buldakov.ru/?p=1892</guid>
		<description><![CDATA[Процесс интеграции подробнейшим образом описан в отдельной статье в библиотеке технета. В требованиях к процессу имеется один занимательнейший пункт: Obtained a certificate that&#8217;s trusted by the Lync Server 2010 server and the Client Access server and is issued by the same authority. The certificate must have the Client Access server namespace as the subject on [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone  wp-image-1905" title="kotespyat" src="http://www.buldakov.ru/wp-content/uploads/2012/02/kotespyat.jpg" alt="" width="101" height="76" align="left" />Процесс интеграции подробнейшим образом описан в отдельной <a title="Configure Outlook Web App and Lync Server 2010 Integration" href="http://technet.microsoft.com/en-us/library/gg420962.aspx" target="_blank">статье</a> в библиотеке технета. В требованиях к процессу имеется один занимательнейший пункт:</p>
<blockquote><p>Obtained a certificate that&#8217;s trusted by the Lync Server 2010 server and the Client Access server and is issued by the same authority. The certificate must have the Client Access server namespace as the subject on the Subject line. The namespace may be the name of a particular Client Access server, or it may be a DNS name that&#8217;s used for load balancing across multiple Client Access servers.</p></blockquote>
<p>Вроде бы достаточно чётко указано, что в поле Subject в CN должно быть указано DNS-имя либо сервера клиентского доступа, либо балансировщика нагрузки. Возникает вопрос &#8212; а что будет, если в нашем сертификате в CN имён ни сервера клиентского доступа ни балансировщика нет и никогда не было? Что делать?<span id="more-1892"></span></p>
<p>Если при настройке интеграции на сервере переднего плана для TrustedApplicationPool указывать имя сервера клиентского доступа или балансировщика, то при заходе в OWA мы увидим следующую замечательную картинку:</p>
<p><img class="alignnone size-full wp-image-1893" title="untitled" src="http://www.buldakov.ru/wp-content/uploads/2012/02/untitled.bmp" alt="" /></p>
<p>Более того, если запускать логгирование на Lync Server, то появится примерно следующая ошибка:</p>
<pre class="brush: plain; title: ; notranslate">
LogType: connection
Severity: error
Text: The peer is not a configured server on this network interface
Peer-IP: xx.xx.xx.xx:15365
Transport: TLS
Result-Code: 0xc3e93d6a SIPPROXY_E_CONNECTION_UNKNOWN_SERVER
Data: fqdn=&quot;domain.com&quot;
$$end_record</pre>
<p>Где domain.com &#8212; это то, что находится у нас в поле Subject сертификата на сервере клиентского доступа. Фактически ошибка эта говорит о том, что сервер переднего плана не может найти у себя в конфигурации объект для domain.com и поэтому рвёт связь с сервером клиентского доступа. Это и приводит к появлению картинки, которая указана выше.</p>
<p>Чтобы такой объект появился &#8212; необходимо его создать через командлет New-CsTrustedApplicationPool:</p>
<pre class="brush: powershell; title: ; notranslate">New-CsTrustedApplicationPool -Identity &quot;domain.com&quot; -Registrar &quot;FE-server&quot;
-Site &quot;siteId&quot; -RequiresReplication $false</pre>
<p>На предупреждение, что сервер переднего плана не может найти в AD такой компьютер можно не обращать внимания. По аналогии создаём приложение:</p>
<pre class="brush: powershell; title: ; notranslate">New-CsTrustedApplication -ApplicationId ExchangeOWA
-TrustedApplicationPoolFqdn &quot;domain.com&quot;  -Port &lt;some available port&gt;</pre>
<p>Не забываем обновить топологию.</p>
<p>Небольшой довесок. Пул приложений мы создаём в определённом сайте (его идентификатор указывается при создании пула). Если у нас имеется несколько AD-сайтов, каждый из которых имеет свои CAS-сервера, которые при этом используют один сертификат, то создавать в каждом сайте Lync пула приложений под свои CAS-сервера не нужно (Lync Server это и не даст сделать, так как имя пула не может дублироваться в нескольких сайтах). Все удалённые CAS-сервера будут без особых проблем пользоваться пулом приложений созданным только в одном сайте, хотя в их настройках необходимо будет указывать в качестве InstantMessagingServerName имя ближайшего сервера переднего плана.</p>
<p><span style="text-decoration: underline;">Полезные ссылки</span>:<br />
<a title="Configure Outlook Web App and Lync Server 2010 Integration" href="http://technet.microsoft.com/en-us/library/gg420962.aspx" target="_blank">Configure Outlook Web App and Lync Server 2010 Integration</a><br />
<a title="What FQDN to use when Setting Up OWA/Lync Integration?" href="http://blogs.technet.com/b/dodeitte/archive/2011/12/22/what-fqdn-to-use-when-setting-up-owa-lync-integration.aspx" target="_blank">What FQDN to use when Setting Up OWA/Lync Integration?</a><br />
<a title="Troubleshooting Lync-Exchange OWA Integration" href="http://blogs.technet.com/b/ilvancri/archive/2010/10/10/troubleshooting-lync-exchange-owa-integration.aspx" target="_blank">Troubleshooting Lync-Exchange OWA Integration</a></p>
<p>Особая благодарность <a href="http://cid-62c708b019adff92.profile.live.com/">Александру Станкевичу</a> за предоставление полезных ссылок.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.buldakov.ru/?feed=rss2&#038;p=1892</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lync Server: настройка веб-сервисов в многосайтовой среде</title>
		<link>http://www.buldakov.ru/?p=1876</link>
		<comments>http://www.buldakov.ru/?p=1876#comments</comments>
		<pubDate>Tue, 21 Feb 2012 07:46:20 +0000</pubDate>
		<dc:creator>Stanislav Buldakov</dc:creator>
				<category><![CDATA[Lync]]></category>

		<guid isPermaLink="false">http://www.buldakov.ru/?p=1876</guid>
		<description><![CDATA[Внешние веб-службы в Lync Server предоставляют доступ клиентам к следующим сервисам: Адресная книга Служба автообнаружения Группа сервисов, связанных с организацией конференц-связи Служба доступа для мобильных клиентов (Mobility Service) Служба групп ответа (Response Groups) Так же веб-службы отвечают за разворачивание групп рассылок Внутренние веб-службы помимо этого предоставляют доступ к: Панели управления Lync Службе, предоставляющей доступ к [...]]]></description>
			<content:encoded><![CDATA[<p>Внешние веб-службы в Lync Server предоставляют доступ клиентам к следующим сервисам:</p>
<ul>
<li>Адресная книга</li>
<li>Служба автообнаружения</li>
<li>Группа сервисов, связанных с организацией конференц-связи</li>
<li>Служба доступа для мобильных клиентов (Mobility Service)</li>
<li>Служба групп ответа (Response Groups)</li>
<li>Так же веб-службы отвечают за разворачивание групп рассылок</li>
</ul>
<p>Внутренние веб-службы помимо этого предоставляют доступ к:</p>
<ul>
<li>Панели управления Lync</li>
<li>Службе, предоставляющей доступ к информации о расположении клиента</li>
<li>Службе для удалённого подключения с помощью PowerShell</li>
</ul>
<p>В связи с важностью сервисов, к которым предоставляют доступ веб-службы, необходимо правильно настраивать доступ к ним. При настройке внешних веб-служб в случае, если у нас имеется несколько серверов переднего плана и/или несколько сайтов необходимо будет создавать отдельное внешнее dns-имя для каждого сервера переднего плана. Кроме этого, нужно будет добавлять это имя в поле SAN сертификата, который используется обратным прокси для публикации наших веб-сервисов.</p>
<p>Dns-имя для внешних веб-служб задаётся при создании сервера переднего плана в Topology Builder:</p>
<p><img class="alignnone size-full wp-image-1883" title="Capture01" src="http://www.buldakov.ru/wp-content/uploads/2012/02/Capture01.jpg" alt="" width="337" height="251" /></p>
<p>Позднее оно может быть исправлено через свойства сервера переднего плана:</p>
<p><img class="alignnone size-full wp-image-1884" title="Capture02" src="http://www.buldakov.ru/wp-content/uploads/2012/02/Capture02.jpg" alt="" width="349" height="142" /></p>
<p>Либо через командлет Set-CsWebServer, но делать это надо осторожно, так как предупреждения о неправильных настройках при использовании командлета не будет. В то время как Topology Builder будет предупреждать об ошибках:</p>
<p><img class="alignnone size-full wp-image-1885" title="Capture03" src="http://www.buldakov.ru/wp-content/uploads/2012/02/Capture03.jpg" alt="" width="517" height="87" /></p>
<p>Таким образом, для правильной работы веб-служб необходимо выполнение следующих условий:</p>
<ul>
<li>В свойствах серверов переднего плана необходимо указывать существующее внешнее dns-имя. Оно должно быть разным для каждого сервера переднего плана/пула серверов переднего плана.</li>
<li>Это внешнее dns-имя должно существовать в виде a-записи во внешней dns-зоне и указывать на ip-адрес сервера, выполняющего роль обратного прокси-сервера.</li>
<li>На обратном прокси-сервере под каждый сервер переднего плана/пул серверов переднего плана должно быть отдельное правило типа &#171;внешнее dns-имя веб-службы → внутреннее dns-имя сервера переднего плана&#187;</li>
<li>Все внешние dns-имена веб-служб должны содержаться в поле SAN сертификата используемого на сервере, выполняющем роль обратного прокси-сервера.</li>
</ul>
<p><span style="text-decoration: underline;">Ссылки по теме</span>:<br />
<a title="Request and Configure a Certificate for Your Reverse HTTP Proxy" href="http://technet.microsoft.com/en-us/library/gg429704.aspx" target="_blank">Request and Configure a Certificate for Your Reverse HTTP Proxy</a><br />
<a title="DNS Requirements for Front End Pools" href="http://technet.microsoft.com/en-us/library/gg412910.aspx" target="_blank">DNS Requirements for Front End Pools</a><br />
<a title="Set-CsWebServer" href="http://technet.microsoft.com/en-us/library/gg398759.aspx" target="_blank">Set-CsWebServer</a><br />
<a title="Change the Web Services URL" href="http://technet.microsoft.com/en-us/library/gg520992.aspx" target="_blank">Change the Web Services URL</a></p>
<p>Спасибо <a href="http://cid-62c708b019adff92.profile.live.com/">Александру Станкевичу</a> за помощь в освещении данной темы.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.buldakov.ru/?feed=rss2&#038;p=1876</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lync: назначение политик</title>
		<link>http://www.buldakov.ru/?p=1857</link>
		<comments>http://www.buldakov.ru/?p=1857#comments</comments>
		<pubDate>Fri, 03 Feb 2012 11:47:47 +0000</pubDate>
		<dc:creator>Stanislav Buldakov</dc:creator>
				<category><![CDATA[Lync]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.buldakov.ru/?p=1857</guid>
		<description><![CDATA[Задача &#8212; назначить определённую политику конференц-связи (Conferencing Policy) в Lync Server для учёток сотрудников, объединённых в группу. По одному назначать политики через Grant-CsConferencingPolicy грустно и долго. Хочется сделать это быстро и с минимальными затратами времени. На помощь приходит наш любимый PowerShell. В консоли Lync Server Management Shell получается следующее:]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone  wp-image-1137" title="LyncLogo" src="http://www.buldakov.ru/wp-content/uploads/2011/01/LyncLogo.jpg" alt="" width="88" height="74" align="left" />Задача &#8212; назначить определённую политику конференц-связи (Conferencing Policy) в Lync Server для учёток сотрудников, объединённых в группу. По одному назначать политики через Grant-CsConferencingPolicy грустно и долго. Хочется сделать это быстро и с минимальными затратами времени. На помощь приходит наш любимый PowerShell. В консоли Lync Server Management Shell получается следующее:</p>
<pre class="brush: powershell; title: ; notranslate">Import-Module ActiveDirectory

foreach ($User in (Get-ADGroupMember &quot;Group Name&quot;)) {Grant-CsConferencingPolicy
-Identity &quot;$($User.distinguishedName)&quot; -PolicyName &quot;Policy Name&quot;}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.buldakov.ru/?feed=rss2&#038;p=1857</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PST Capture Tool</title>
		<link>http://www.buldakov.ru/?p=1847</link>
		<comments>http://www.buldakov.ru/?p=1847#comments</comments>
		<pubDate>Tue, 31 Jan 2012 12:15:18 +0000</pubDate>
		<dc:creator>Stanislav Buldakov</dc:creator>
				<category><![CDATA[Из жизни]]></category>

		<guid isPermaLink="false">http://www.buldakov.ru/?p=1847</guid>
		<description><![CDATA[Сегодня было объявлено о выпуске PST Capture Tool &#8212; утилиты для сбора сообщений из pst-файлов пользователей в почтовые ящики пользователей и/или архивы. Поддерживается импорт в Exchange 2010/Office 365/Exchange Online. Можно так же импортировать в почтовые ящики на Exchange 2007, но этот сценарий официально не поддерживается. Архитектура утилиты выглядит следующим образом: Утилита состоит из следующих компонентов: [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone  wp-image-1852" title="kotolupa" src="http://www.buldakov.ru/wp-content/uploads/2012/01/kotolupa.jpg" alt="" width="127" height="71" align="left" />Сегодня было <a title="PST, Time to Walk the Plank" href="http://blogs.technet.com/b/exchange/archive/2012/01/30/pst-time-to-walk-the-plank.aspx" target="_blank">объявлено</a> о выпуске PST Capture Tool &#8212; утилиты для сбора сообщений из pst-файлов пользователей в почтовые ящики пользователей и/или архивы. Поддерживается импорт в Exchange 2010/Office 365/Exchange Online. Можно так же импортировать в почтовые ящики на Exchange 2007, но этот сценарий официально не поддерживается.</p>
<p>Архитектура утилиты выглядит следующим образом:</p>
<p><a href="http://eightwone.com/2012/01/30/exchange-pst-capture-tool-released/" target="_blank"><img class="alignnone" title="PST Architecture Overview" src="http://eightwone.files.wordpress.com/2012/01/pst_architecture_overview1.gif" alt="PST Architecture Overview" width="619" height="572" border="0" /></a></p>
<p>Утилита состоит из следующих компонентов:</p>
<ul>
<li>Серверная часть (Central Service)</li>
<li>Консоль администратора (PST Importer Console)</li>
<li>Агенты, установленные на компьютеры пользователей (PST Agent)</li>
</ul>
<p>Процесс сбора происходит в два этапа:</p>
<ul>
<li>Сначала через консоль администратора создаётся задание на поиск pst-файлов. Далее через агентов осуществляется поиск (можно его достаточно гибко настраивать &#8212; например искать только на определённых дисках). Список найденных pst-файлов затем отображается в консоли администратора.</li>
<li>Затем создаётся список из pst-файлов, которые планируется импортировать в почтовый ящик пользователя. После чего можно сопоставить разные pst-файлы разным почтовым ящикам и запустить процесс импорта.</li>
</ul>
<p>Скачать утилиту можно <a title="Microsoft Exchange PST Capture" href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=28767" target="_blank">отсюда</a>. Документация доступна <a title="Microsoft Exchange PST Capture" href="http://technet.microsoft.com/en-us/library/hh781036.aspx" target="_blank">здесь</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.buldakov.ru/?feed=rss2&#038;p=1847</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

