В этот раз возникла необходимость применить GPO к компьютерам в определённой IP подсети. В самом простом случае, когда данная подсеть включена в отдельный сайт Active Directory (и эта подсеть в сайте одна), можно назначить политику на сайт AD (пример привязки политики к сайту есть здесь), это простой и удобный метод. В нашем случае, назначить политику на весь сайт мы не можем, т.к. к сайту AD привязано несколько IP подсетей. Придется воспользоваться возможностями фильтрации политик с помощью WMI фильтров.
Ранее мы рассматривали, пример использования WMI фильтров для применения конкретной групповой политики только к определенным версиям ОС Windows. В данном случае аналогичным образом нужно создать WMI фильтр и изменить запрос так, чтобы он содержал условие на проверку IP адресов.
- Откройте консоль редактора GPMC.msc (Group Policy Management) и найдите раздел WMI Filters.
- Создадим новый фильтр. Для этого щелкните по разделу ПКМ и в контекстном меню выберите New.
- Укажите имя фильтра, его описание.
- Чтобы добавить WMI запрос на выборку нажмите кнопку Add.
- В качестве пространства имен оставьте значение root\CIMv2, а в окно запроса скопируйте следующий код.
Select * FROM Win32_IP4RouteTable
WHERE (Mask='255.255.255.255'
AND (Destination Like '191.168.55.%' OR Destination Like '191.168.56.%'))Примечание. В данном примере мы создали фильтр, позволяющий нацелить политику на клиентов с шаблонами IP адресов, удовлетворяющих маскам 191.168.55.x и 191.168.56.x. Замените IP подсети своими. - Сохраните запрос.
- Теперь в консоли GPMC нужно выбрать политику, которую вы хотите применить на клиентах.
- В параметрах данной политики в секции WMI Filtering в выпадающем списке нужно выбрать созданный фильтр и назначить политику на OU с компьютерами.
Теперь нужно обновить политики на клиентах (gpupdate /force) и проверить их применение (для проверки назначения GPO можно воспользоваться стандартной командой gpresult).
Итак, с помощью простого WMI фильтра мы можем назначить политику на клиентов, расположенных в определенных IP подсетях, или диапазоне IP адресов.
В статье, считаю, главный недостаток в том, что не описываются конкретные ситуации в которых «сайты» AD по какой-то причине не применяются по прямому назначению. То есть описывается процесс создания мягкой подвески для велосипеда с ромбовидными колесами, но не показывается, зачем.
У вас соблюдается условие 1 подсеть = 1 сайт AD?
В больших организациях обычно в состав сайта включены несколько подсетей (здания, кампусы), связанные оптикой. Либо разделение на подсети внутри сайта используется для разграничения доступа. Создавать отдельный сайт для каждой подсети не всегда целесообразно.
Спасибо, хорошая статья.
Подскажите пожалуйста — почему в запросе маска подсети указана как 255.255.255.255, а не 255.255.255.0?
Мы же хотим, чтобы в запрос попали сети 191.168.55.x и 191.168.56.x и по логике последний октет должен быть ноликом.
У меня запрос не выбирает по подсетям, тут работает логика клиента, входит ли его IP в этот диапазон. Посмотрите, что выдает команда на клиенте: get-wmiobject -query ‘Select * FROM Win32_IP4RouteTable’|select Mask,Destination |ft
В принципе вы можете использовать такой запрос на выборку, он тоже корректный:
Select * FROM Win32_IP4RouteTable
WHERE (Mask='255.255.255.0'
AND (Destination Like '191.168.55.0' OR Destination Like '191.168.56.0'))
Сделал фильтр, который который позволяет нацелить политику на подсеть 10.40.0.0/16
Get-WmiObject -Query "Select * FROM Win32_IP4RouteTable WHERE (Mask='255.255.255.255' AND (Destination Like '10.40.%.%'))"
А как сделать фильтр который позволяет нацелить на все, КРОМЕ 10.40.0.0/16?
По идее что-то такое
Get-WmiObject -Query "Select * FROM Win32_IP4RouteTable WHERE NOT (Mask='255.255.255.255' AND (Destination Like '10.40.%.%'))"
Спасибо, но не сработало.
10.40.*.* — ВПН подсеть. Кроме ВПН интерфейса есть интерфейс, через который клиент получает интернет, поэтому под этот фильтр попадают и простые ПК и ВПН клиенты.
Подскажите можно ли инвертировать WMI-фильтр?
А как в запросе три сети указать?
.... AND (Destination Like '191.168.1.%' OR Destination Like '191.168.2.%' OR Destination Like '191.168.3.%'))
Да понятно, но вот еще вопрос а если у меня разные макси на сетях?
Вы можете построить более сложную логическую комбинация с помощью OR, AND и круглых скобок.
Хочу сделать политику , например 192.168.1.0/ 24 , но у меня с 1 по 20 сервера. Как исключить адреса из диапазона?
Можно сделать конечно длинный запрос с кучей OR типа:
Select * FROM Win32_IP4RouteTable
WHERE (Mask='255.255.255.255' AND (Destination Like '191.168.1.%') and ( Destination Not Like '191.168.1.2' OR '191.168.1.3' or '191.168.1.4' or .... ))
Либо можно просто перетащить все сервера в отдельный OU и не навешивать на нее политику.