Проверка текущего типа сети на сервере командой Get‑NetConnectionProfile

Определение: Get‑NetConnectionProfile — cmdlet PowerShell из модуля NetTCPIP, который отображает активные сетевые профили (Public, Private, DomainAuthenticated) для каждого сетевого интерфейса Windows Server. С его помощью администратор быстро определяет текущий тип сети, уровень доступности по IPv4/IPv6 и контекст, от которого зависят правила брандмауэра и политики обнаружения устройств.

Что показывает команда и зачем это нужно 🖥️🔐

Тип сети напрямую влияет на поведение брандмауэра, доступность служб (RDP, SMB, WinRM), видимость сервера в локальной сети и применение некоторых политик безопасности. В 2025 году это особенно важно для серверов в облаке и гибридных средах, где один ВМ может иметь несколько интерфейсов с разными профилями.

Основные свойства вывода Get‑NetConnectionProfile

Свойство Что означает Тип данных Пример значения
Name Имя сети/подключения, присвоенное системой (для Wi‑Fi — SSID). String Network, CorpNet, Unidentified network
InterfaceAlias Человекочитаемое имя интерфейса. String Ethernet, vEthernet (Default Switch), Ethernet 2
InterfaceIndex Числовой идентификатор сетевого интерфейса. Int32 12
NetworkCategory Категория сети: Public, Private или DomainAuthenticated. Enum Private
IPv4Connectivity Уровень связности по IPv4. Enum Internet, LocalNetwork, Subnet, NoTraffic
IPv6Connectivity Уровень связности по IPv6. Enum NoTraffic, LocalNetwork

Быстрые примеры использования ⚙️

# Показать профиль для всех активных интерфейсов
Get-NetConnectionProfile

# Вывести компактно только ключевые поля
Get-NetConnectionProfile | Select Name, InterfaceAlias, NetworkCategory

# Фильтр по конкретному интерфейсу
Get-NetConnectionProfile -InterfaceAlias "Ethernet"

# Сортировка по категории (удобно, когда много NIC)
Get-NetConnectionProfile | Sort-Object NetworkCategory

Фильтрация, массовые проверки и удалённый доступ 🌐

# Найти все интерфейсы с публичным профилем на сервере
Get-NetConnectionProfile | Where-Object NetworkCategory -eq 'Public'

# Проверка на нескольких серверах и выгрузка в CSV
$servers = 'SRV-A','SRV-B','SRV-C'
Invoke-Command -ComputerName $servers -ScriptBlock {
  Get-NetConnectionProfile | Select-Object PSComputerName,Name,InterfaceAlias,NetworkCategory,IPv4Connectivity,IPv6Connectivity
} | Export-Csv .net-profiles.csv -NoTypeInformation -Encoding UTF8

# Альтернатива через CIM (полезно при закрытом WinRM)
Get-CimInstance -Namespace root/StandardCimv2 -ClassName MSFT_NetConnectionProfile |
  Select-Object Name, InterfaceAlias, InterfaceIndex, NetworkCategory, IPv4Connectivity, IPv6Connectivity

Для Invoke-Command требуется включённый WinRM и соответствующие права; при работе через файрволы в DMZ чаще подходит вариант через CIM с правильно настроенными портами.

Как изменить тип сети (осторожно) 🔧

Изменение профиля требует прав администратора и может сразу изменить набор активных правил брандмауэра. На боевых серверах применяйте через Change Advisory и в заранее согласованное окно.

# Перевести профиль интерфейса в Private
Set-NetConnectionProfile -InterfaceAlias "Ethernet" -NetworkCategory Private

# Вернуть в Public
Set-NetConnectionProfile -InterfaceAlias "Ethernet" -NetworkCategory Public

Категория DomainAuthenticated назначается автоматически, когда сервер корректно определяет домен через службу NLA и может пройти аутентификацию контроллеру домена. Вручную установить DomainAuthenticated нельзя.

Связь с Active Directory и GPO

  • Профиль DomainAuthenticated появляется только на присоединённых к домену машинах при успешной сети AD.
  • Если контроллеры недоступны (VPN не поднят, DNS сломан), профиль может «упасть» в Private/Public.
  • GPO управляет правилами брандмауэра по профилям, а не самим назначением профиля.

Типовые сценарии применения

  1. Быстрая проверка, почему не открывается RDP/SMB: профиль оказался Public и режет входящие.
  2. Аудит сервера с несколькими NIC: DMZ‑интерфейс — Public, внутренний — Private/DomainAuthenticated.
  3. Контроль после клонирования ВМ: убедиться, что профиль не остался Public на prod‑интерфейсе.

Устранение неполадок

  • Профиль «застрял» в Public: проверьте службу Network Location Awareness (NlaSvc), корректность маршрутизации и DNS.
  • Интерфейс «Unidentified network»: задайте корректные шлюз/DNS, проверьте метрики маршрутов и отключите лишние виртуальные свитчи.
  • Удалённая проверка не работает: откройте WinRM (5985/5986), настройте TrustedHosts или используйте CredSSP при необходимости делегирования.
  • Гипервизор/контейнеры: vEthernet‑интерфейсы Hyper‑V/WSL могут создавать дополнительные профили — фильтруйте по Alias.
  • Непоследовательность IPv4/IPv6: если IPv6Connectivity=NoTraffic, но нужен доступ по IPv6, проверьте RA/DHCPv6 и фильтры ICMPv6.

Практические приёмы автоматизации

# Отчёт обо всех публичных профилях в домене
$servers = (Get-ADComputer -Filter {OperatingSystem -like "*Server*"}).Name
Invoke-Command -ComputerName $servers -ScriptBlock {
  Get-NetConnectionProfile | Where-Object NetworkCategory -eq 'Public' |
    Select-Object PSComputerName, InterfaceAlias, IPv4Connectivity, IPv6Connectivity
} | Export-Csv .public-profiles.csv -NoTypeInformation

# Мониторинг изменений профиля через планировщик (одна строка лога)
$before = (Get-NetConnectionProfile | Select InterfaceAlias,NetworkCategory | ConvertTo-Json)
Start-Sleep -Seconds 10
$after  = (Get-NetConnectionProfile | Select InterfaceAlias,NetworkCategory | ConvertTo-Json)
if ($before -ne $after) { Add-Content .profile-changes.log "$(Get-Date) profile changed" }

Рекомендации безопасности

  • Для интерфейсов в Интернет/DMZ используйте Public и явно открывайте только необходимые порты.
  • Во внутреннем сегменте — Private/DomainAuthenticated для корректной работы файловых сервисов и обнаружения.
  • Регулярно инвентаризируйте профили на серверах с несколькими NIC, особенно в облаках и Kubernetes‑нодах.

FAQ по смежным темам ❓

Как понять, какой профиль брандмауэра сейчас активен?

Брандмауэр Windows использует профили, соответствующие сетевым категориям. Проверить можно так:

Get-NetFirewallProfile | Select-Object Name, Enabled, DefaultInboundAction, DefaultOutboundAction

Также сопоставьте с Get‑NetConnectionProfile: Public ↔ Domain ↔ Private.

Почему я не могу установить NetworkCategory = DomainAuthenticated?

Эта категория назначается автоматически службой NLA при успешной аутентификации в домене и обнаружении контроллера. Убедитесь в корректном DNS, времени (NTP), доступности DC и сетевых портов AD.

Чем отличается профиль сети от профиля брандмауэра?

Сетевой профиль (Public/Private/DomainAuthenticated) описывает контекст подключения; профиль брандмауэра — набор правил, применяемых в этом контексте. Они связаны, но настраиваются разными средствами.

Как массово изменить профиль на Private для всех «Unidentified network»?
Get-NetConnectionProfile | Where-Object {$_.Name -eq "Unidentified network"} |
  ForEach-Object { Set-NetConnectionProfile -InterfaceIndex $_.InterfaceIndex -NetworkCategory Private }

Запускайте из повышенной PowerShell и протестируйте на стенде.

Можно ли это делать на Server Core и через PowerShell 7?

Да. Модуль NetTCPIP доступен в Windows PowerShell на Server Core. В PowerShell 7 доступ осуществляется через совместное использование Windows‑модулей; команда работает при наличии совместимости и прав.

Как увидеть, есть ли у интерфейса доступ в Интернет по IPv4/IPv6?

Смотрите поля IPv4Connectivity и IPv6Connectivity. Значение Internet означает выход во внешний сегмент, LocalNetwork — связь внутри подсети/сети без выхода в Интернет.

Оцените:
( Пока оценок нет )
Фотофайл - лучшие картинки и фото
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Теперь напиши комментарий!x