PDA

Показать полную графическую версию : netsh advfirewall firewall - не находит правило по имени


__sa__nya
16-01-2020, 04:07
Доброе время суток. Имеется Windows Server Standard 2016, имеется брандмауэр и некоторые стандартные правила. Нужно выключить некоторое правило, например "Удаленный рабочий стол - пользовательский режим (входящий трафик UDP)". При написании команды выключения ( уже в контексте netsh advfirewall firewall):
>set rule name="Удаленный рабочий стол - пользовательский режим (входящий трафик UDP)" new enable=no
Получаю ошибку "Ни одно правило не соответствует указанным критериям."
Разбираясь в проблеме, вижу, что netsh в принципе не "видит" это правило по имени:
Пишу в контексте cmd "netsh advfirewall firewall show rule name=all | find "Удаленный рабочий стол"
- получаю 3 строчки, копирую результат "Удаленный рабочий стол - пользовательский режим (входящий трафик UDP)",
пишу (уже в контексте netsh advfirewall firewall) show rule name="Удаленный рабочий стол - пользовательский режим (входящий трафик UDP)"
- получаю "Ни одно правило не соответствует указанным критериям."
Думаю что может попробовать в контексте cmd, пишу в cmd "netsh advfirewall firewall show rule name="Удаленный рабочий стол - пользовательский режим (входящий трафик UDP)"
- получаю ту же ошибку
- Почему так ?

Ageron
16-01-2020, 08:19
посмотрите через powershell

Get-NetFirewallRule | where {($_.displayname -match 'Удаленный рабочий')} | ft

существует ли это правило, скорее всего написано не правильно

Denis Dyagilev
16-01-2020, 10:37
А если использовать
netsh advfirewall firewall set rule dir=in name="Remote Desktop - User Mode (UDP-In)" new enable=no

или в PowerShell
Disable-NetFirewallRule -DisplayName "RemoteDesktop-UserMode-In-UDP"

?

paranoya
16-01-2020, 17:42
:)
Это же МС, из-за их локализации там где не надо, такие вещи не работают.
Зато работают такие: netsh advfirewall firewall show rule name="@FirewallAPI.dll,-28780"

Upd. Если имя правила начинается с латинской буквы и содержит русские, то такие правила отображаются через show rule. Как пример: "Secure Socket Tunneling Protocol (SSTP-входящий)"

__sa__nya
16-01-2020, 18:12
Ageron, правило точно существует, т.к. команда "netsh advfirewall firewall show rule name=all | find "Удаленный рабочий стол" показывает правило.
Denis Dyagilev, - "Ни одно правило не соответствует критериям" - по netsh
Хотел использовать netsh, PowerShell неудобно для этих команд.
paranoya, - ни одно правило не соответствует указанным критериям.
Я тоже думаю что из-за локализации, как говорится "Не читайте советскую прессу" :-). Посмотрю можно ли в Windows Core сменить локализацию, и сменятся ли при этом названия правил в брандмауэре.

Ageron
17-01-2020, 08:26
правило точно существует, т.к. команда "netsh advfirewall firewall show rule name=all | find "Удаленный рабочий стол" показывает правило. »
вот, смотри

Ageron
17-01-2020, 08:34
Длинное тире — : Alt + 0151
Короткое (среднее) тире – : Alt + 0150

paranoya
17-01-2020, 09:53
__sa__nya, я проверял на Win10, значит на сервере 2016 другая строка стоит.
Ageron, на ноутбуке c win10 без вариантов такое набрать. Через charmap копируешь нужное, но вставляется в консоль обычный дефис. Работает только через bat-файл.

__sa__nya
17-01-2020, 13:58
Ageron, с длинным тире работает. Интересно ( и одновременно злит) то, что когда смотришь это правило через вывод show rule name - там тире недлинное. В общем, либо MS, либо команда ответственная за перевод ОС на русский накосячила.

Iska
17-01-2020, 16:32
Коллеги, на всякий случа́́й: «рулят» подходящие шрифты и/или вывод в файл с последующим просмотром кодов выведенных символов.

__sa__nya
18-01-2020, 06:13
Коллеги, на всякий случа́́й: «рулят» подходящие шрифты и/или вывод в файл с последующим просмотром кодов выведенных символов.
Iska, можно подробнее про "последующий просмотр кодов символов"

Iska
18-01-2020, 16:31
Hex-dump, любой hex-редактор, любой редактор, умеющий показывать коды символов (я пользую Far Manager):
https://i.imgur.com/xsmZxS9.png

https://i.imgur.com/LO6P8Ll.png

Как я понимаю, в Вашем примере, на всякий случай, ещё желательно перенаправление вывода в файл делать из-под консоли PowerShell'a, а не cmd.exe, потому как в кодировке OEM/866 есть только «-», и нет ни «–», ни «—».

__sa__nya
19-01-2020, 16:35
Iska, все равно не понял, что анализировать hex-редактором, что за дамп ? Можете объяснить "для тех кто на бронепоезде" более подробно :-)
Кстати, мне было интересно, где кроется косяк MS. Поставил английскую версию OS, там команды по поиску правил по имени отрабатывают без проблем, указанных в шапке темы, все с обычными пробелами. В общем ошибку допустили локализаторы ОС на русскую. Надо было сразу ставить английскую версию, частично сам допустил ошибку.

paranoya
20-01-2020, 11:53
__sa__nya,
Имена "Удалённый рабочий стол бла-бал-бла" лежат как сторковые ресурсы в .dll. В самом правиле фаервола написано (в моём случае) имя="@FirewallAPI.dll,-28780", то есть, идёт подстановка и в имя правила подставляется ресурс -28780, а это как раз и есть строка на русском с тире вместо дефиса. В английской версии нет локализации, поэтому там поиск идёт нормально. В русском версии Винды есть локализация, но она сделана по правилам русского языка с тире, а не по правилам "компьютерного языка", где вместо тире используется дефис, так как знака тире нет на клавиатуре.
Самый простой способ - взять любой "dll resoure viewer" и открыть им файл FirewallAPI.dll и найти в нём строки "Удалённый рабочий стол ...."

__sa__nya
22-01-2020, 17:35
paranoya, спасибо. По мне, самый простой способ, если ставить Windows Server, на котором пользователи не будут работать терминально, лучше ставить редакцию на английском языке, чтобы в принципе подобные проблемы исключить :-)




© OSzone.net 2001-2012