Задать вопрос
@NikanorovKir

Как ставить dcsp-метку на траффик приложений в домашних редакциях Windows?

Доброго времени суток.

Версия ОС Windows 10 Домашняя для одного языка 1909 (сборка 1863.1198)

1) Добавляю правило QoS командлетом

New-NetQosPolicy -name "dscp_skype" -NetworkProfile all -DSCPAction 32 -AppPathName skype.exe -IPProtocol Both

Проверяю:

PS C:\WINDOWS\system32> Get-NetQosPolicy



Name : dscp_skype

Owner : Group Policy (Machine)

NetworkProfile : All

Precedence : 127

AppPathName : skype.exe

JobObject :

IPProtocol : Both

DSCPValue : 32

Но траффик из приложения при этом не маркируется. Точно такая же настраиваю на редакции Prof (не в домене) и маркировка работает!

Проверяю, в "домашней" редакции в C:\Windows\System32\GroupPolicy\Machine\Registry.pol добавляются такие же записи как и в prof: 

Software\Policies\Microsoft\Windows\QoS\dscp_skype,Version,REG_SZ,"2.0"

Software\Policies\Microsoft\Windows\QoS\dscp_skype,NetProfile,REG_DWORD,"00000007"

Software\Policies\Microsoft\Windows\QoS\dscp_skype,Precedence,REG_DWORD,"0000007f"

Software\Policies\Microsoft\Windows\QoS\dscp_skype,AppName,REG_SZ,"skype.exe"

Software\Policies\Microsoft\Windows\QoS\dscp_skype,Protocol,REG_DWORD,"00000003"

Software\Policies\Microsoft\Windows\QoS\dscp_skype,DSCP,REG_DWORD,"00000020"

2) Добавляю в "домашней" редакции добавляю правило в хранилище ActiveStore командлетом:

New-NetQosPolicy -name "dscp_skype" -NetworkProfile all -DSCPAction 32 -AppPathName skype.exe -IPProtocol Both -PolicyStore "ActiveStore"

И маркировка работает!

По всей видимости, дело в хранилище GPO, но насколько я понимаю, даже в домашней редакции LGPO поддерживаются.

Собственно вопрос, как всё таки заставить траффик маркироваться?)

Можно, конечно, сделать задание при старте ПК выполнять добавление правила в ActiveStore, но это очень неудобно в настройке. 

Для некоторых других командлетов можно задавать в параметр -PolicyStore значение PersistentStore, но New-NetQosPolicy его не поддерживает. Возможно есть другой способ сохранять правила этим командлетом в "постоянное" хранилище?
  • Вопрос задан
  • 231 просмотр
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@NikanorovKir Автор вопроса
Офф. ответ от MS - никак, используйте prof-редакции.

Набросал скрипт, который создаёт задание в планировщике и добавляет маркировку, при старте системы:

Скрипт

Write-Host "Введите имя пользователя для задачи в планировщике:"
$UserName = Read-Host

Write-Host "Введите пароль пользователя для задачи в планировщике:"
$UserPassword = Read-Host

function CreateUser
{
$SecUserPassword = ConvertTo-SecureString($UserPassword) -AsPlainText -Force

New-LocalUser -Name $UserName -Password $SecUserPassword -PasswordNeverExpires

Add-LocalGroupMember -Group "Администраторы" -Member $UserName
}

function CreateScheduledJob
{
Write-Host "Введите имя задания (не используйте пробелы):"
$JobName = Read-Host

Write-Host "Введите имя процесса, трафик которого нужно маркировать (так, как он отображается в диспетчере задач, например, skype.exe):"
$AppPathName = Read-Host

Write-Host "Введите значение метки DSСP (0-63):"
$DSCPAction = Read-Host

$Trigger = New-ScheduledTaskTrigger -AtStartup

$Command = "New-NetQosPolicy -name $AppPathName -NetworkProfile all -DSCPAction $DSCPAction -AppPathName $AppPathName -IPProtocol Both -PolicyStore ActiveStore"

$Argument = "-command `"$Command`""

$Action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument $Argument

Register-ScheduledTask -TaskName $JobName -Trigger $Trigger -User $UserName -Password $UserPassword -Action $Action -RunLevel Highest -Force
}

do
{
Write-Host "Создать пользователя (Y/N)?"
$CreateUserYesNo = Read-Host
} until (($CreateUserYesNo -eq "y") -or ($CreateUserYesNo -eq "n"))

if($CreateUserYesNo -eq "y")
{
CreateUser
}

CreateScheduledJob
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы