пятница, 14 декабря 2012 г.

Раздача прав на папки.

Есть ситуации, когда присутствует структура папок (допустим свежесозданная командой maked folder из 40 конечных папок)... необходимо на последней отменить наследование (или просто изменить права... одной группе пользователей... или просто пользователю... клацать по всем 40 долго и есть вероятность ошибки - особенно если групп больше 5.
Поможет PowerShell 

PS C:\> $DogACL = get-acl c:\dog.txt
PS C:\> set-acl -path C:\cat.txt -AclObject $DogACL

PS C:\> set-acl -path C:\cat3.txt -AclObject $DogACL
PS C:\> set-acl -path C:\cat4.txt -AclObject $DogACL


все три файла будут иметь права идентичные c:\dog.txt

Скрип для добавления пользователей в AD c excel

Сам скрипт:
_______________________________________
_______________________________________

' UserSpreadsheet .vbs
' Sample VBScript to create User accounts from a spreadsheet
' ------------------------------------------------------'
Option Explicit
Dim objRootLDAP, objContainer, objUser, objShell
Dim objExcel, objSpread, intRow
Dim strUser, strOU, strSheet
Dim strCN, strSam, strFirst, strLast, strPWD, strDN, srtCompany, strEma, strPhone, strUPN, strL, strST, strAddress, strTitle, stripPhone, strOffice, strDep, strmobile

' -----------------------------------------------'
' Important change OU= and strSheet to reflect your domain
' -----------------------------------------------'

strOU = "OU=Accounts ," ' Note the comma
strSheet = "D:\work\scripts\AD\Users\CR.xls"

' Bind to Active Directory, Users container.
Set objRootLDAP = GetObject("LDAP://rootDSE")
'Set objRootLDAP = GetObject("LDAP://dc=ent, dc=com")
Set objContainer = GetObject("LDAP://" & strOU & _
objRootLDAP.Get("defaultNamingContext"))

' Open the Excel spreadsheet
Set objExcel = CreateObject("Excel.Application")
Set objSpread = objExcel.Workbooks.Open(strSheet)
intRow = 3 'Row 1 often contains headings

' Here is the 'DO...Loop' that cycles through the cells
' Note intRow, x must correspond to the column in strSheet
Do Until objExcel.Cells(intRow,1).Value = ""
   strSam = Trim(objExcel.Cells(intRow, 1).Value)
   strCN = Trim(objExcel.Cells(intRow, 2).Value)
   strFirst = Trim(objExcel.Cells(intRow, 3).Value)
   strLast = Trim(objExcel.Cells(intRow, 4).Value)
   strPWD = Trim(objExcel.Cells(intRow, 5).Value)
   ' Additional Info
   strDN = Trim(objExcel.Cells(intRow, 6).Value)
   srtCompany = Trim(objExcel.Cells(intRow, 7).Value)
   strEma = Trim(objExcel.Cells(intRow, 8).Value)
   strPhone = Trim(objExcel.Cells(intRow, 9).Value)
   strUPN = Trim(objExcel.Cells(intRow, 10).Value)
   strL = Trim(objExcel.Cells(intRow, 11).Value)
   strST = Trim(objExcel.Cells(intRow, 12).Value)
   strAddress = Trim(objExcel.Cells(intRow, 13).Value)
   strTitle = Trim(objExcel.Cells(intRow, 14).Value)
   strdep = Trim(objExcel.Cells(intRow, 15).Value)
   'strmobile = Trim(objExcel.Cells(intRow, 16).Value)
   strOffice = Trim(objExcel.Cells(intRow, 16).Value)
   ' Build the actual User from data in strSheet.
   Set objUser = objContainer.Create("User", "cn=" & strCN)
   objUser.sAMAccountName = strSam
   objUser.givenName = strFirst
   objUser.sn = strLast
   ' Additional Info
   objUser.displayName = strDN
   objUser.userPrincipalName = strUPN
   objUser.Company = srtCompany
   objUser.mail = strEma
   objUser.telephoneNumber = strPhone
   objUser.l = strL
   objUser.st = strST
   objUser.streetAddress = strAddress
   objUser.title = strTitle
   objUser.Department = strdep
   objUser.physicalDeliveryOfficeName = strOffice
   'objUser.mobile = strmobile
   'objUser.Department = strDep
   objUser.SetInfo

   ' Separate section to enable account with its password
   objUser.userAccountControl = 512
   objUser.pwdLastSet = 0
   objUser.SetPassword strPWD
   objUser.SetInfo

intRow = intRow + 1
Loop
objExcel.Quit

WScript.Quit

' End of free example UserSpreadsheet VBScript.
_________________________________________________
В excel-файле столбики должны соответствовать номеру! (то есть если атрибут не заполнен, то он исключается со скрипта , если столбик удален с файла, то номирация должна сдвинуться... не может идти атрибут 5 потом 10... и т.д.)

Пример файла.


в данной картинке есть ошибка... там где номер телефона, колонка номер 7, должно быть 7... дальше 8
в скрипте соответственно необходимо исправить тоже нумерацию в этих строках.


   strPhone = Trim(objExcel.Cells(intRow, 9).Value)
   strUPN = Trim(objExcel.Cells(intRow, 10).Value)

должно быть 7 и 8...
и так далее. или не смещать колонки.

четверг, 15 ноября 2012 г.

Установка .NET Framework 3.5 в Windows 8


Если установка платформы .NET Framework 3.5 по требованию или ее включение в Панели управления завершается ошибкой, можно получить одно из следующих сообщений об ошибке
  • 0x800f0906: «Windows не удалось подключиться к Интернету, чтобы загрузить необходимые файлы.Убедитесь, что вы подключены к Интернету, и щелкните повторить попытку.
  • 0x800F081F: “Не удается выполнить изменения. Перезагрузите компьютер и попробуйте еще раз".
Эти сообщения может быть отображены по следующим причинам:
  • Компьютер не подключен к интернету. Подключитесь к Интернету и затем повторите операцию.
    Если не удаётся подключиться компьютер к Интернету, можно включить .NET Framework 3.5 с помощью установочного носителя (образ ISO или DVD-диск), с которого производилась установка Windows 8.Подключите установочный носитель Windows 8 и введите следующую команду в командной строке с повышенными привилегиями:


    Dism /online /enable-feature /featurename:NetFx3 /All /Source:x:\sources\sxs /LimitAccess 

    где x: — буква диска, для образа ISO или DVD Windows 8 (загрузочной флешки).


четверг, 25 октября 2012 г.

Экспорт пользователей c AD c конкретной OU

Открываем из оснастки Администрирование
Active Directory Modul for Windows  PowerShell
и вставляем в него команду (со своими данными).

Get-ADUser  -Filter * -Properties * -Searchbase   "OU=Users,OU=_BLA,DC=ent,DC=com," | ft -Autosize description, CN, displayname, mail, title, Userprincipalname, Company, country, state ,city, postalcode, streetaddress, department, telephonenumber, mobile, ipphone, physicaldeliveryofficename, manager | out-string -width 4096 >>  "c:/_bla_111.txt"


пятница, 12 октября 2012 г.

Отправка и прием почты через telnet


Отправка почты через telnet
 Команда для подключения к почтовому серверу на 25 порт:
telnet xxxx.yy 25
Trying aaa.bbb.ccc.ddd
Connected to xxxx.yy (aaa.bbb.ccc.ddd).
Escape character is ‘^]’.
220 mail.server.ua ESMTP Sendmail x.y.z/x.y.z; Fri, 7 Mar 2008 10:09:22 +0200
Введите команду приветствия: 
helo eee.fff.ggg.hhh
(где eee.fff.ggg.hhh ваш IP-адрес с которого вы запустили telnet)
250 mail.server.ua Hello mail.server.ua [aaa.bbb.ccc.ddd] pleased to meet you
Укажите адрес отправителя (должен быть в том же домене, что и почтовый сервер: server.ua)
mail from: taras@server.ua 
250 2.1.0 taras@server.ua … Sender ok
Укажите адресата ( mailto@mail.kiev.ua ):
rcpt to: mailto@mail.kiev.ua 
250 2.1.5 taras… Recipient ok
Введите команду 
data
354 Enter mail, end with «.» on a line by itself
Subject: тема тестового письма
Текст письма,
а в конце письма одну точку в строке, чтобы закончить
.
250 2.0.0 x2789MjQ008048 Message accepted for delivery
Введите для выхода
quit
221 2.0.0 mail.server.ua closing connection
Connection closed by foreign host.

Проверка почты через telnet
Команда для входа на почтовый сервер:

telnet mail.server.ua 110
Задать имя пользователя: 
user user@server.ua
Задать пароль для пользователя: 
pass PassW0rd
Получить список писем: 
list
Прочитать письмо 
retr x (где x — это номер письма)
Для выхода введите команду 
quit

пятница, 5 октября 2012 г.

Удаление сообщений из ящиков PowerShell


Время от времени администратор Exchange сталкивается с ситуацией, когда сообщения соответствующие определенным критериям должны быть удалены из большого числа почтовых ящиков или транспортных очередей сервера Exchange. Такая необходимость может возникнуть из-за какой-либо массовой рассылки, когда сообщение отправлено случайно в большую группу рассылки или большому числу отдельных получателей или когда нужно предпринять усилия по очистке от последствий распространения вируса массовой почтовой рассылки (хотя они встречаются все реже и являются предметом заботы антивирусных сканеров серверов Exchange).
Соответствующие шаги описаны в различных местах документации Exchange, но может быть достаточно трудно, чтобы обратиться к нескольким источникам, если вы имеете смешанную среду содержащую несколько версий Exchange сервера. Мы хотели бы собрать в одном месте в некоторой степени обобщенные инструкции о том, как выполнить эти задачи во всех ныне поддерживаемых версиях Exchange Server - Exchange 2010, Exchange 2007.

Удаление сообщений из почтовых ящиков

Удаление сообщений из командной строки в Exchange 2010 RTM и Exchange 2007

В Exchange 2010 RTM и в Exchange 2007 вы можете использовать командлет Export-Mailbox для того, чтобы экспортировать или удалять сообщения. В Exchange 2010 SP1 действия по экспорту почтового ящика выполняются командлетом New-MailboxExportRequest и рассматриваются в отдельной статье. Действия по поиску и удалению сообщений выполняются командлетом Search-Mailbox.

Разрешения

В Exchange 2010 учетной записи должна быть назначена роль экспорта и импорта почтового ящика для того, чтобы выполнять операцию, используя Export-Mailbox в  Exchange 2010 RTM или Search-Mailbox в Exchange 2010 SP1. Если эта роль не назначена, то вы не сможете выполнять или «видеть» этот командлет.
Многофункциональный командлет Export-Mailbox может экспортировать содержимое почтового ящика на основе имен папок, диапазонов даты и времени, имен вложенных файлов и многих других фильтров. Сужение поиска предотвращает случайное удаление полезной почты. Для дополнительной информации, описания синтаксиса и параметров, смотрите следующие ссылки:
Учетная запись, используемая для экспорта информации, должна быть учетной записью Exchange Server Administrator, членом локальной группы Administrators целевого сервера и иметь полные права (Full Access) на исходный и целевой почтовые ящики. Целевой почтовый ящик должен быть заранее создан, как и целевая папка, которую вы указываете, тоже должна быть создана до выполнения команды.

Добавление и удаление необходимых разрешений

Следующий пример показывает, как извлечь все почтовые ящики организации Exchange и назначить полные права учетной записи MyAdmin. Вы должны выполнить эту операцию перед экспортом или удалением сообщений из почтовых ящиков пользователей. Отметим, что если вам необходимо экспортировать или удалить сообщения только из нескольких почтовых ящиков, то вы можете использовать командлет Get-Mailbox с соответствующими фильтрами или перечислить все исходные почтовые ящики.
Get-Mailbox -ResultSize unlimited | Add-MailboxPermission -User MyAdmin -AccessRights FullAccess -InheritanceType all
После экспорта или удаления сообщений из почтовых ящиков вы можете удалить полные права, как показано в следующем примере:
Get-Mailbox -ResultSize unlimited | Remove-MailboxPermission -User MyAdmin -AccessRights FullAccess -InheritanceType all

Удаление сообщений

Вот несколько примеров удаления сообщений.
В следующем примере удаляются все сообщения из папки Inbox почтовых ящиков на сервере Server1, которые содержат ключевые слова «Friday Party» и получены между 7-м и 9-м сентября. Эти сообщения будут удаляться из почтовых ящиков и копироваться в папку DeleteMsgs почтового ящика  MyBackupMailbox. После этого администратор может просмотреть сообщения в почтовом ящике MyBackupMailbox и удалить их. Формат параметров StartDate и EndDate должен соответствовать формату даты установленной на сервере: это или mm-dd-yyyy или dd-mm-yyyy.
Get-Mailbox -Server Server1 -ResultSize Unlimited | Export-Mailbox -SubjectKeywords "Friday Party" -IncludeFolders "\Inbox" -StartDate "09/07/2010" -EndDate "09/09/2010" -DeleteContent -TargetMailbox MyBackupMailbox -TargetFolder DeleteMsgs -Confirm:$false
В этом примере из всех почтовых ящиков удаляются все сообщения содержащие ключевые слова «Friday Party» в теле или заголовке.
 В зависимости от размеров вашей среды лучше выполнять извлечение/удаление в пакетном режиме, либо используя командлет Get-Mailbox с параметрами Server или Database (Get-Mailbox -Server servername -ResultSize Unlimited или Get-Mailbox -Database DB_Name -ResultSize Unlimited), либо указывая фильтр в параметре Filter. Вы можете также использовать командлет Get-DistributionGroupMember, чтобы выполнить эту операцию над членами группы рассылки.
Get-Mailbox -ResultSize Unlimited | Export-Mailbox -ContentKeywords "Friday Party" -TargetMailbox MyBackupMailbox -TargetFolder 'Friday Party' -DeleteContent
Рекомендуется всегда использовать целевой почтовый ящик (указывая параметры TargetMailbox и TargetFolder), чтобы иметь копию удаляемых сообщений. Вы можете просмотреть сообщения перед окончательным их удалением, так что любые нормальные сообщения, попавшие под действие фильтра, могут быть импортированы обратно в исходный почтовый ящик владельца. Однако можно просто удалить все сообщения без вспомогательного копирования их в другой почтовый ящик.
В этом примере из всех почтовых ящиков удаляются все сообщения, содержащие ключевые слова «Friday Party» в теле или заголовке, без копирования их в целевой почтовый ящик:
Get-Mailbox | Export-Mailbox -ContentKeywords "Friday Party" -DeleteContent

Удаление сообщений из почтовых очередей Exchange 2010 RTM и Exchange 2007

Удаление сообщения из очереди  это процесс из двух шагов.  Первая вещь, которую надо сделать  это приостановить (suspend) само сообщение. Как только сообщение приостановлено, вы можете продолжить и удалить его из очереди. Следующие команды приостанавливают  и удаляют сообщение на основе его заголовка.

Exchange 2007 SP1 и SP2

Следующая команда приостанавливает сообщения со строкой «Friday Party» в транспортных очередях на всех транспортных серверах организации:
Get-TransportServer | Get-Queue | Get-Message -ResultSize unlimited | where{$_.Subject -eq "Friday Party" -and $_.Queue -notlike "*\Submission*"} | Suspend-Message
На серверах Exchange 2007 RTM, SP1 и SP2 вы не можете приостановить и удалить сообщения в очередиSubmission. Так что эта команда не будет воздействовать на сообщения в этой очереди.
Следующая команда удаляет все приостановленные сообщения, исключая очередь Submission:
Get-TransportServer | Get-Queue | Get-Message -ResultSize unlimited | where{$_.status -eq "suspended" -and $_.Queue -notlike "*\Submission*"} | Remove-Message -WithNDR $False

Exchange 2010 и Exchange 2007 SP3

Следующая команда приостанавливает сообщения со строкой «Friday Party» в заголовке во всех  транспортных очередях на всех транспортных серверах организации:
Get-TransportServer | Get-Queue | Get-Message -ResultSize unlimited | where {$_.Subject -eq "Friday Party"} | Suspend-Message
Следующая команда удаляет все приостановленные предыдущей командой сообщения:
Get-TransportServer | Get-Queue | Get-Message -ResultSize unlimited | Where {$_.Subject -eq "Friday Party"} | Remove-Message -WithNDR $False
Отметим, что вы можете выполнять эти команды на конкретном транспортном сервере, указав его имя после Get-TransportServer.

Приостановка и удаление сообщений в заданной транспортной очереди

Вы можете приостановить и удалить сообщения из конкретной очереди. Чтобы получить список очередей на транспортном сервере, используйте командлет Get-Queue.
Следующая команда приостанавливает сообщения со строкой «Friday Party» в заголовке из заданной очереди:
Get-Message -Queue "server\queue" -ResultSize unlimited | where{$_.Subject -eq "Friday Party"} | Suspend-Message
Следующая команда удаляет все приостановленные предыдущей командой сообщения из заданной очереди:
Get-Message -Queue "server\queue" -ResultSize unlimited | where{$_.Subject -eq "Friday Party" } | Remove-Message -WithNDR $False

Предотвращение доставки сообщений с помощью транспортных правил

В Exchange 2010 и Exchange 2007 вы можете использовать транспортные правила для того, чтобы проверять сообщения в транспортном потоке и выполнять необходимые действия, подобные удалению сообщений, на основе заданных критериях. Для дополнительной информации смотрите Общие сведения о правилах транспорта.
В Exchange 2010 и Exchange 2007 вы можете использовать визард создания нового транспортного правила (New Transport Rule) в оснастке EMC, чтобы легко создавать транспортные правила. Следующие примеры иллюстрируют, как добиться того же самого через командную строку. Отметим различия синтаксиса между версиями. (В Exchange 2010 командлеты транспортных правил упрощены, позволяя вам создавать и модифицировать транспортные правила в одну строку).

Создание транспортного правила для удаления сообщения в Exchange 2010

В следующем примере создается транспортное правило для удаления сообщения со строкой «Friday Party» в заголовке:
New-TransportRule -Name "purge Friday Party messages" -Priority '0' -Enabled $true -SubjectContainsWords 'Friday Party' -DeleteMessage $true

вторник, 31 июля 2012 г.

Для чего нужен кластер


Кластеры применяют в организациях, которым нужна круглосуточная и бесперебойная доступность сервисов и где любые перерывы в работе нежелательны и недопустимы. Или в тех случаях, когда возможен всплеск нагрузки, с которым может не справиться основной сервер, тогда ее помогут компенсировать дополнительные хосты, выполняющие обычно другие задачи. Для почтового сервера, обрабатывающего десятки и сотни тысяч писем в день, или веб-сервера, обслуживающего онлайн-магазины, использование кластеров очень желательно. Для пользователя подобная система остается полностью прозрачной - вся группа компьютеров будет выглядеть как один сервер. Использование нескольких, пусть даже более дешевых, компьютеров позволяет получить весьма существенные преимущества перед одиночным и шустрым сервером. Это равномерное распределение поступающих запросов, повышенная отказоустойчивость, так как при выходе одного элемента его нагрузку подхватывают другие системы, масштабируемость, удобное обслуживание и замена узлов кластера, а также многое другое. Выход из строя одного узла автоматически обнаруживается, и нагрузка перераспределяется, для клиента все это останется незамеченным.

Возможности Win2k3

Вообще говоря, одни кластеры предназначены для повышения доступности данных, другие - для обеспечения максимальной производительности. В контексте статьи нас будут интересовать MPP (Massive Parallel Processing) - кластеры, в которых однотипные приложения выполняются на нескольких компьютерах, обеспечивая масштабируемость сервисов. Существует несколько технологий, позволяющих распределять нагрузку между несколькими серверами: перенаправление трафикатрансляция адресовDNS Round Robinиспользование специальных программ, работающих на прикладном уровне, вроде веб-акселераторов. В Win2k3, в отличие от Win2k, поддержка кластеризации заложена изначально и поддерживается два типа кластеров, отличающихся приложениями и спецификой данных:
1. Кластеры NLB (Network Load Balancing) - обеспечивают масштабируемость и высокую доступность служб и приложений на базе протоколов TCP и UDP, объединяя в один кластер до 32 серверов с одинаковым набором данных, на которых выполняются одни и те же приложения. Каждый запрос выполняется как отдельная транзакция. Применяются для работы с наборами редко изменяющихся данных, вроде WWW, ISA, службами терминалов и другими подобными сервисами.
2. Кластеры серверов – могут объединять до восьми узлов, их главная задача - обеспечение доступности приложений при сбое. Состоят из активных и пассивных узлов. Пассивный узел большую часть времени простаивает, играя роль резерва основного узла. Для отдельных приложений есть возможность настроить несколько активных серверов, распределяя нагрузку между ними. Оба узла подключены к единому хранилищу данных. Кластер серверов используется для работы с большими объемами часто изменяющихся данных (почтовые, файловые и SQL-серверы). Причем такой кластер не может состоять из узлов, работающих под управлением различных вариантов Win2k3: Enterprise или Datacenter (версии Web и Standart кластеры серверов не поддерживают).
В Microsoft Application Center 2000 (и только) имелся еще один вид кластера - CLB (Component Load Balancing), предоставляющий возможность распределения приложений COM+ между несколькими серверами.

NLB-кластеры

При использовании балансировки нагрузки на каждом из хостов создается виртуальный сетевой адаптер со своим независимым от реального IP и МАС-адресом. Этот виртуальный интерфейс представляет кластер как единый узел, клиенты обращаются к нему именно по виртуальному адресу. Все запросы получаются каждым узлом кластера, но обрабатываются только одним. На всех узлах запускается служба балансировки сетевой нагрузки (Network Load Balancing Service), которая, используя специальный алгоритм, не требующий обмена данными между узлами, принимает решение, нужно ли тому или иному узлу обрабатывать запрос или нет. Узлы обмениваются heartbeat-сообщениями, показывающими их доступность. Если хост прекращает выдачу heartbeat или появляется новый узел, остальные узлы начинают процесс схождения (convergence), заново перераспределяя нагрузку. Балансировка может быть реализована в одном из двух режимов:
1) unicast – одноадресная рассылка, когда вместо физического МАС используется МАС виртуального адаптера кластера. В этом случае узлы кластера не могут обмениваться между собой данными, используя МАС-адреса, только через IP (или второй адаптер, не связанный с кластером);
2) multicast – многоадресная рассылка, МАС-адрес кластера назначается физическому адресу, но не затирая его. Для реализации этого метода маршрутизаторы должны поддерживать групповые МАС-адреса.
В пределах одного кластера следует использовать только один из этих режимов.
Можно настроить несколько NLB-кластеров на одном сетевом адаптере, указав конкретные правила для портов. Такие кластеры называют виртуальными. Их применение дает возможность задать для каждого приложения, узла или IP-адреса конкретные компьютеры в составе первичного кластера, или блокировать трафик для некоторого приложения, не затрагивая трафик для других программ, выполняющихся на этом узле. Или, наоборот, NLB-компонент может быть привязан к нескольким сетевым адаптерам, что позволит настроить ряд независимых кластеров на каждом узле. Также следует знать, что настройка кластеров серверов и NLB на одном узле невозможна, поскольку они по-разному работают с сетевыми устройствами.
Администратор может сделать некую гибридную конфигурацию, обладающую достоинствами обоих методов, например, создав NLB-кластер и настроив репликацию данных между узлами. Но репликация выполняется не постоянно, а время от времени, поэтому информация на разных узлах некоторое время будет отличаться.
С теорией на этом закончим, хотя о построении кластеров можно рассказывать еще долго, перечисляя возможности и пути наращивания, давая различные рекомендации и варианты конкретной реализации. Все эти тонкости и нюансы оставим для самостоятельного изучения и перейдем к практической части.

Настройка NLB-кластера

Для организации NLB-кластеров дополнительное ПО не требуется, все производится имеющимися средствами Win2k3. Для создания, поддержки и мониторинга NLB-кластеров используют компонент «Диспетчер балансировки сетевой нагрузки» (Network Load Balancing Manager), который находится во вкладке «Администрирование» «Панели управления» (команда NLBMgr). Так как компонент «Балансировка нагрузки сети» ставится как стандартный сетевой драйвер Windows, установку NLB можно выполнять и при помощи компонента «Сетевые подключения», в котором доступен соответствующий пункт. Но лучше использовать только первый вариант, одновременное задействование диспетчера NLB и «Сетевых подключений» может привести к непредсказуемым результатам.
Диспетчер NLB позволяет настраивать и управлять из одного места работой сразу нескольких кластеров и узлов.
Возможна также установка NLB-кластера на компьютере с одним сетевым адаптером, связанным с компонентом «Балансировка нагрузки сети», но в этом случае при режиме unicast диспетчер NLB на этом компьютере не может быть использован для управления другими узлами, а сами узлы не могут обмениваться друг с другом информацией.
Для упрощения будем считать, что операционные системы установлены, сетевые подключения настроены (как обычно), узлы будущего кластера подключены к Active Directory и у тебя есть соответствующие права.
Теперь вызываем диспетчер NLB. Кластеров у нас пока нет, поэтому появившееся окно не содержит никакой информации. Выбираем в меню «Кластер» пункт «Новый» и начинаем заполнять поля в окне «Параметры кластера». В поле «Настройка IP-параметров кластера» вводим значение виртуального IP-адреса кластера, маску подсети и полное имя. Значение виртуального МАС-адреса устанавливается автоматически. Чуть ниже выбираем режим работы кластера: одноадресный или многоадресный. Обрати внимание на флажок «Разрешить удаленное управление» - во всех документах Microsoft настоятельно рекомендует его не использовать во избежание проблем, связанных с безопасностью. Вместо этого следует применять диспетчер или другие средства удаленного управления, например инструментарий управления Windows (WMI). Если же решение об его использовании принято, следует выполнить все надлежащие мероприятия по защите сети, прикрыв дополнительно брандмауэром UDP-порты 1717 и 2504.
После заполнения всех полей нажимаем «Далее». В окне «IP-адреса кластера» при необходимости добавляем дополнительные виртуальные IP-адреса, которые будут использоваться этим кластером. В следующем окне «Правила для портов» можно задать балансировку нагрузки для одного или для группы портов всех или выбранного IP по протоколам UDP или TCP, а также блокировать доступ к кластеру определенным портам (что межсетевой экран не заменяет). По умолчанию кластер обрабатывает запросы для всех портов (0–65365); лучше этот список ограничить, внеся в него только действительно необходимые. Хотя, если нет желания возиться, можно оставить все, как есть. Кстати, в Win2k по умолчанию весь трафик, направленный к кластеру, обрабатывал только узел, имевший наивысший приоритет, остальные узлы подключались только при выходе из строя основного.
Например, для IIS потребуется включить только порты 80 (http) и 443 (https). Причем можно сделать так, чтобы, например, защищенные соединения обрабатывали только определенные серверы, на которых установлен сертификат. Для добавления нового правила нажимаем «Добавить», в появившемся диалоговом окне вводим IP-адрес узла, или если правило распространяется на всех, то оставляем флажок «Все». В полях «С» и «По» диапазона портов устанавливаем одно и то же значение – 80. Ключевым полем является «Режим фильтрации» (Filtering Mode) - здесь задается, кем будет обработан этот запрос. Доступно три поля, определяющие режим фильтрации: «Несколько узлов», «Один узел» и «Отключить этот диапазон портов». Выбор «Один узел» означает, что трафик, направленный на выбранный IP (компьютера или кластера) с указанным номером порта, будет обрабатываться активным узлом, имеющим наименьший показатель приоритета (о нем чуть ниже). Выбор «Отключить…» значит, что такой трафик будет отбрасываться всеми участниками кластера.
В режиме фильтрации «Несколько узлов» можно дополнительно указать вариант определения сходства клиентов, чтобы направлять трафик от заданного клиента к одному и тому же узлу кластера. Возможны три варианта: «Нет», «Одно» или «Класс C». Выбор первого означает, что на любой запрос будет отвечать произвольный узел. Но не следует его использовать, если в правиле выбран протокол UDP или «Оба». При избрании остальных пунктов сходство клиентов будет определяться по конкретному IP или диапазону сети класса С.
Итак, для нашего правила с 80-м портом остановим свой выбор на варианте «Несколько узлов - класс C». Правило для 443 заполняем аналогично, но используем «Один узел», чтобы клиенту всегда отвечал основной узел с наименьшим приоритетом. Если диспетчер обнаружит несовместимое правило, будет выведено предупреждающее сообщение, дополнительно в журнал событий Windows будет внесена соответствующая запись.
Далее подключаемся к узлу будущего кластера, введя его имя или реальный IP, и определяем интерфейс, который будет подключен к сети кластера. В окне «Параметры узла» выбираем из списка приоритет, уточняем сетевые настройки, задаем начальное состояние узла (работает, остановлен, приостановлен). Приоритет одновременно является уникальным идентификатором узла; чем меньше номер, тем выше приоритет. Узел с приоритетом 1 является мастер-сервером, в первую очередь получающим пакеты и действующим как менеджер маршрутизации.
Флажок «Сохранить состояние после перезагрузки компьютера» позволяет в случае сбоя или перезагрузки этого узла автоматически ввести его в строй. После нажатия на «Готово» в окне Диспетчера появится запись о новом кластере, в котором пока присутствует один узел.
Следующий узел добавить также просто. Выбираем в меню «Добавить узел» либо «Подключить к существующему», в зависимости от того, с какого компьютера производится подключение (он уже входит в кластер или нет). Затем в окне указываем имя или адрес компьютера, если прав для подключения достаточно, новый узел будет подключен к кластеру. Первое время значок напротив его имени будет отличаться, но когда завершится процесс схождения, он будет такой же, как и у первого компьютера.
Так как диспетчер отображает свойства узлов на момент своего подключения, для уточнения текущего состояния следует выбрать кластер и в контекстном меню пункт «Обновить». Диспетчер подключится к кластеру и покажет обновленные данные.
После установки NLB-кластера не забудь изменить DNS-запись, чтобы разрешение имени теперь показывало на IP-кластера.

Изменение загрузки сервера

В такой конфигурации все серверы будут загружены равномерно (за исключением варианта «Один узел»). В некоторых случаях необходимо перераспределить нагрузку, большую часть работы возложив на один из узлов (например, самый мощный). Применительно к кластеру правила после их создания можно изменить, выбрав в контекстном меню, появляющемся при щелчке на имени, пункт «Свойства кластера». Здесь доступны все те настройки, о которых мы говорили выше. Пункт меню «Свойства узла» предоставляет несколько больше возможностей. В «Параметрах узла» можно изменить значение приоритета для конкретно выбранного узла. В «Правилах для портов» добавить или удалить правило нельзя, это доступно только на уровне кластера. Но, выбрав редактирование конкретного правила, мы получаем возможность скорректировать некоторые настройки. Так, при установленном режиме фильтрации «Несколько узлов» становится доступным пункт «Оценка нагрузки», позволяющий перераспределить нагрузку на конкретный узел. По умолчанию установлен флажок «Равная», но в «Оценке нагрузки» можно указать другое значение нагрузки на конкретный узел, в процентах от общей загрузки кластера. Если активирован режим фильтрации «Один узел», в этом окне появляется новый параметр «Приоритет обработки». Используя его, можно сделать так, что трафик к определенному порту будет в первую очередь обрабатываться одним узлом кластера, а к другому – другим узлом.

Журналирование событий

Как уже говорилось, компонент «Балансировка нагрузки сети» записывает все действия и изменения кластера в журнал событий Windows. Чтобы их увидеть, выбираем «Просмотр событий – Система», к NLB относятся сообщения WLBS (от Windows Load Balancing Service, как эта служба называлась в NT). Кроме того, в окне диспетчера выводятся последние сообщения, содержащие информацию об ошибках и обо всех изменениях в конфигурации. По умолчанию эта информация не сохраняется. Чтобы она записывалась в файл, следует выбрать «Параметры –> Параметры журнала», установить флажок «Включить ведение журнала» и указать имя файла. Новый файл будет создан в подкаталоге твоей учетной записи в Documents and Settings.

Настраиваем IIS с репликацией

Кластер кластером, но без службы он смысла не имеет. Поэтому добавим IIS (Internet Information Services). Сервер IIS входит в состав Win2k3, но, чтобы свести к минимуму возможность атак на сервер, он по умолчанию не устанавливается.
Инсталлировать IIS можно двумя способами: посредством «Панели управления» или мастером управления ролями данного сервера. Рассмотрим первый. Переходим в «Панель управления – Установка и удаление программ» (Control Panel - Add or Remove Programs), выбираем «Установку компонентов Windows» (Add/Remove Windows Components). Теперь переходим в пункт «Сервер приложений» и отмечаем в «Службах IIS» все, что необходимо. По умолчанию рабочим каталогом сервера является \Inetpub\wwwroot. После установки IIS может выводить статические документы.
Вот, собственно, и все. Если в файл hosts, который находится в C:\Windows\System32\Drivers\Etc, добавить запись для разрешения имени веб-сервера и IP-адрес кластера, то, обратившись с локального узла, можно получить документ с веб-сервера. Для репликации данных между узлами кластера используй службу DFS, о которой подробно говорилось в последнем номере за прошлый год.

суббота, 21 апреля 2012 г.

Отключение терминальных сессий (RDP) из командной строки


Многим знакома ситуация когда при подключения к удаленному рабочему столу мы получаем ошибку -
The terminal server has exceeded the maximum number of allowed connections
 
То бишь подключится мы не можем. Не будем говорить о нехватке лицензий на терминальный сервер, а также о том, что не выставлены периоды сброса отключенных или неактивных сеансов.
Для просмотра терминальных сессии используют команду -
 
Command Prompt> qwinsta /server:terminal.example.com
где terminal.example.com - это имя нашего сервера
 
Если у пользователя под которым вы работаете не хватает прав для администрирования служб терминалов, то вы получите ошибку -
Command Prompt> qwinsta /server:terminal.example.com
Error opening Terminal server terminal.example.com
 Error [5]:Access is denied. 
 
Тогда необходимо подключить ресурс IPC от имя пользователя у которого есть права на работу с сессиями.
Command Prompt> net use \\terminal.example.com\IPC$ /u:username
 
Теперь можно просмотреть кто у нас подключен -
Command Prompt> qwinsta /server:terminal.example.com
 SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE
 console                                                0  Conn    wdcon
 rdp-tcp                                          65536  Listen  rdpwd
 rdp-tcp#25           vasya                        3  Active  rdpwd
 
Для отключения сессии пользователя используем команду
Command Prompt> rwinsta /server:terminal.example.com  
 
То бишь в нашем примере для отключения пользователя vasya, смотрим id его сессии, из примера - 3 и даем команду на отключение
Command Prompt> rwinsta /server:terminal.example.com 3
 
Все пользоатель  Vasya отключен от терминальной сессии, если он в этот момент работал с ней, то получит предупреждение, о том что он отключен администратором.

понедельник, 12 марта 2012 г.

Используем Remote Assistance и Remote Desktop для доступа к рабочим столам пользователей


Версия для печати
В Windows XP появилась технология для удаленного подключения к рабочему столу с целью помочь пользователю в решении проблем - Remote Assistance, или Удаленный Помощник.
Технология не очень удобная потому, что для подключения администратора к компьютеру клиента самому пользователю тоже надо кое-что сделать (отправить запрос Remote Assistance). Но в арсенале администратора такой метод доступа может быть не лишним. Иногда это удобно, если нет radmin-а или DameWare - Remote Assistance уже встроен в систему, и не нужно ничего устанавливать. Единственное ограничение - оба компьютера, и клиент (компьютер администратора) и сервер (компьютер пользователя, которому помогает администратор через Remote Assistance) должны работать под управлением Windows XP (и, возможно, клиент может еще работать под Windows 2003, поскольку эта система родственна XP). Во время запуска Remote Assistance на сервере временно автоматически отключается файервол (если верить справке Windows XP, но лучше на всякий случай файервол отключить). С точки зрения сетевых коммуникаций Remote Assistance использует встроенный в XP терминальный сервер и работает точно так же, как и Remote Desktop. Отличие от Remote Desktop в том (и это важное отличие, если необходима именно помощь пользователю), что при работе Remote Assistance экран сервера видят обе стороны (как в radmin и DameWare), а при использовании Remote Desktop происходит принудительное завершение сессии локального пользователя. Как использовать Remote Assistance, процесс по шагам:
1. На сервере (компьютер пользователя, которому помогает администратор через Remote Assistance) включаем Remote Assistance: Start -> Settings -> Control Panel -> System -> закладка Remote -> должна стоять галка Allow users to connect remotely to this computer (панель Remote Desktop). Там же ставим галку Allow Remote Assistance invitations to be sent from this computer (панель Remote Assistance). На всякий случай поверяем, что запущена служба Terminal Services (Start -> Settings -> Control Panel -> Administrative Tools -> Services или net start TermService).
2. Отключаем файервол на всякий случай (хотя в help Windows говорится, что это не требуется (Start -> Settings -> Control Panel -> Windows Firewall), либо останавливаем службу Windows Firewall/Internet Connection Sharing (ICS) - Start -> Settings -> Control Panel -> Administrative Tools -> Services или net stop SharedAccess.
3. Готовим запрос на доступ администратора через Remote Assistance. На сервере (компьютер пользователя, которому помогает администратор через Remote Assistance) делаем Start -> All Programs -> Accessories -> Remote Assistance. Щелкаем по ссылке "Invite someone to help you". Запускается нехитрый мастер, который сразу предлагает отправить запрос либо через Windows Messenger, либо через Outlook Express. Если по каким-то причинам они не настроены, есть еще третий способ - ссылка "Save invitation as a file (Advanced)" внизу. Она позволяет сохранить запрос в виде файла с расширением "*.msrcincident", и потом Вы должны этот файл каким-то образом передать администратору, чтобы он мог подключиться. Способы передачи могут быть разные - дискета, общая сетевая папка, ftp, email.
4. Администратор на своем компьютере двойным щелчком открывает полученный файл запроса, запускается клиент Remote Assistance, который подключается к серверу (в качестве сервера выступает компьютер пользователя, отправившего запрос) по протоколу RDP. При этом пользователь получает сообщение, что к его серверу производится попытка подключения Remote Assistance, и если пользователь подтвердит подключение, то оно устанавливается. И пользователь, и администратор видят один и тот же экран десктопа, и получают набор утилит для совместной работы, в числе которых есть текстовый чат.
5. В некоторых конфигурациях сетей необходимо предварительно подправить файл запроса. Например, если сервер находится за роутером NAT и имеет приватные адреса (192.168.x.y и т. п.). Это легко сделать, так как файл запроса - всего лишь обычный текстовый файл, где в понятной форме можно найти параметры подключения. Вот пример такого файла RAInvitation.msrcincident:

Как можно догадаться, возможные адреса (куда будет коннектиться клиент Remote Assistance) в виде пар IP(или имя):порт прописаны с параметре RCTICKET. Эти адреса берутся от всех доступных на компьютере интерфейсов (терминальный сервер по умолчанию слушает их все на порту 3389). В этом примере на сервере есть 3 интерфейса с адресами 192.168.7.1 (адрес внутри локальной сети), 192.168.55.1 (VMware Virtual Ethernet Adapter for VMnet1) и 192.168.255.1 (VMware Virtual Ethernet Adapter for VMnet8), и, кроме этого, сервер имеет имя vm. Проблем не будет, если мы подключаемся через одну из этих доступных сетей. Если же, например, нам нужно подключиться через Интернет, то в файл запроса необходимо внести исправления. Предположим, что NAT-маршрутизатор транслирует приватный адрес и порт192.168.7.1:3389 в публичный адрес и порт 93.128.79.149:3390. В этом случае содержимое файла RAInvitation.msrcincident будет таким:

Использовался материал статьи http://www.avkuzmin.ru/2007/07/remote-assistance-remote-desktop.html.