netsh: мережевий швейцарський ніж Windows — огляд головних контекстів
Перед стартом
- Переважна більшість підкоманд потребує прав адміна. Виняток —
netsh show-і (деякі працюють від юзера).
- netsh можна запускати інтерактивно (
netsh → prompt netsh>) або одним рядком (netsh interface show interface). Одним рядком зручніше для скриптів.
- Коли заблукали —
? (знак питання) в інтерактивному режимі показує всі команди поточного контексту.
Структура: контексти, підконтексти, команди
Уявіть netsh як дерево файлової системи:
netsh — корінь.
interface, advfirewall, winsock, wlan, trace — «директорії» (контексти).
- У кожному — свої піддиректорії та команди. Наприклад
netsh interface ip show config: interface → ip → show config.
В інтерактивному режимі ви заходите в контекст, і далі команди набираєте без префіксу:
netsh
interface ip
show config
exit
Головні контексти — короткий перелік
| Контекст | Що в ньому | Сучасний PS-аналог |
interface | IP-адреси, шлюзи, DNS, маршрути, TCP параметри | Get-NetIPAddress, Set-DnsClientServerAddress, New-NetRoute |
advfirewall | Windows Defender Firewall: профілі, правила, логування | Get-NetFirewallRule, New-NetFirewallRule, Set-NetFirewallProfile |
winsock | Скидання TCP/IP-стеку, catalog providers | Прямого аналога нема — залишайте netsh winsock reset |
wlan | Wi-Fi профілі, підключення, експорт | Обмежений Get-NetConnectionProfile; для профілів — netsh |
trace | Захоплення мережевого трафіку (.etl/.cab) | New-NetEventSession / PktMon |
http | URL ACL, SSL binding (для IIS, WinRM) | Обмежений Set-NetFirewallRule; для SSL — netsh |
int tcp | TCP stack параметри (autotuning, RSS, chimney) | Get-NetTcpSetting, Set-NetTcpSetting |
ipsec | IPsec-політики | Get-NetIPsec* cmdlets |
Сценарій 1. netsh interface — IP, DNS, статична конфігурація
Подивитись конфігурацію всіх інтерфейсів:
netsh interface ip show config
Встановити статичний IP, маску, шлюз на інтерфейс «Ethernet»:
netsh interface ip set address name="Ethernet" static 192.168.1.50 255.255.255.0 192.168.1.1
Додати DNS-сервери:
netsh interface ip set dns name="Ethernet" static 192.168.1.10
netsh interface ip add dns name="Ethernet" 192.168.1.11 index=2
Повернути на DHCP:
netsh interface ip set address name="Ethernet" dhcp
netsh interface ip set dns name="Ethernet" dhcp
PowerShell еквівалент (якщо пишете новий скрипт — беріть саме його):
New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress 192.168.1.50 -PrefixLength 24 -DefaultGateway 192.168.1.1
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses 192.168.1.10,192.168.1.11
Сценарій 2. netsh advfirewall — Windows Firewall без GUI
Подивитись поточні правила:
netsh advfirewall firewall show rule name=all dir=in | more
Відкрити порт 8080 для вхідних з'єднань:
netsh advfirewall firewall add rule name="MyApp In 8080" dir=in action=allow protocol=TCP localport=8080
Видалити правило за назвою:
netsh advfirewall firewall delete rule name="MyApp In 8080"
Вимкнути фаєрвол (для тестів; не робіть у проді):
netsh advfirewall set allprofiles state off
PowerShell-еквівалент — переможно чистіший:
New-NetFirewallRule -DisplayName "MyApp In 8080" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow
Get-NetFirewallRule -DisplayName "MyApp In 8080" | Remove-NetFirewallRule
Порада
Для нових скриптів — завжди *-NetFirewallRule. netsh advfirewall краще тримати в пам'яті для інтерактивних правок старих серверів, де PowerShell ModulesLocation обмежений.
Сценарій 3. netsh winsock reset — скидання TCP/IP
Класичний жест, коли після сумнівного VPN-клієнта, проксі чи «оптимізатора» мережа стала поводитись дивно:
netsh winsock reset
netsh int ip reset
shutdown /r /t 0
Перша команда перезаписує Winsock Catalog (реєструє стандартні провайдери). Друга — скидає параметри IP-стеку. Обов'язковий reboot після, інакше мережа залишиться в напіврозібраному стані.
Обережно
Після netsh winsock reset злетять сторонні правила Windows Firewall (додані через GPO зазвичай повертаються, ручні — ні). Сторонні VPN-клієнти, які «ліпляться» через Winsock LSP, можуть перестати працювати й вимагати перевстановлення.
Сценарій 4. netsh wlan — Wi-Fi профілі
Переглянути збережені Wi-Fi профілі:
netsh wlan show profiles
Показати пароль збереженого профілю (корисно коли забули пароль від домашньої мережі):
netsh wlan show profile name="MyHomeWiFi" key=clear
Пароль буде у полі Key Content. Працює від адміна.
Експортувати всі профілі в XML (для перенесення між машинами):
netsh wlan export profile folder=C:\Temp\wifi key=clear
Імпортувати на іншій машині:
netsh wlan add profile filename="C:\Temp\wifi\Wi-Fi-MyHomeWiFi.xml"
Сценарій 5. netsh trace — захоплення трафіку без Wireshark
Коли Wireshark не встановлений, а треба зняти трейс мережевої проблеми:
netsh trace start capture=yes tracefile=C:\Temp\net.etl maxsize=512 filemode=circular overwrite=yes
Розблокувати проблему (відтворити її зараз). Потім:
netsh trace stop
Отриманий .etl можна відкрити у Microsoft Network Monitor або сконвертувати у .pcap через etl2pcapng.exe (GitHub microsoft/etl2pcapng).
Сценарно-обмежені захоплення (швидший триггер):
netsh trace start scenario=InternetClient tracefile=C:\Temp\internet.etl
Список scenarios:
netsh trace show scenarios
Сценарій 6. netsh http — SSL binding і URL ACL
Коли треба отримати/видалити SSL binding для IIS, WinRM чи власного HTTP-сервісу:
netsh http show sslcert
Додати binding (до порту 443 прив'язати сертифікат за його hash):
netsh http add sslcert ipport=0.0.0.0:443 certhash=ABCDEF0123456789... appid={00000000-0000-0000-0000-000000000000}
Видалити binding:
netsh http delete sslcert ipport=0.0.0.0:443
URL ACL — хто може слухати URL:
netsh http show urlacl
netsh http add urlacl url=http://+:8080/myapp/ user="NT AUTHORITY\NETWORK SERVICE"
Типові пастки
Пастка 1: ім'я інтерфейсу з пробілом
«Локальне підключення», «Ethernet 2» — імена з пробілами обов'язково у лапках: name="Ethernet 2". Без лапок netsh намагатиметься парсити «2» як окремий аргумент.
Пастка 2: netsh interface ip reset знищує GPO-ові налаштування
Reset повертає IP-стек до дефолтів, у тому числі TCP offload, RSS, параметри MTU. На сервері з кастомним тюнингом TCP (базу даних, VoIP) після reset може просісти продуктивність. Перед reset — netsh interface tcp show global і зафіксуйте значення.
Пастка 3: deprecation, але не depression
Microsoft офіційно рекомендує PowerShell cmdlets замість netsh, але самого netsh у Windows Server 2025 не видалено. Для легасі-скриптів і швидких інтерактивних операцій він залишається живим. Але для нового коду — беріть cmdlets.
Коротка пам'ятка
Топ-10 викликів netsh, які реально використовуються
netsh interface ip show config
netsh interface ip set address ...
netsh advfirewall firewall add rule ...
netsh advfirewall set allprofiles state off (тільки для тестів!)
netsh winsock reset
netsh int ip reset
netsh wlan show profile name="..." key=clear
netsh wlan export profile folder=... key=clear
netsh trace start capture=yes ... / netsh trace stop
netsh http show sslcert
Пов'язане
- ← Назад до Атласу команд Windows.
- Test-NetConnection (спиця) — перевірити TCP після змін у netsh.
- Get-WinEvent (спиця) — побачити, що саме Windows Firewall заблокував.
netsh виглядає громіздким, але якщо зрозуміти логіку «контекст → підконтекст → команда», він стає найшвидшим мережевим інструментом Windows для інтерактивної роботи. Для автоматизації — переходьте на PowerShell cmdlets. Але знати netsh — обов'язково: на старих серверах, у WinRE, у відсутності PS-модулів він ваш єдиний варіант.