# ============================================================================= # Установка NetBird для сотрудников НИИКН # # Запуск: # PowerShell от имени администратора, одна строка: # irm https://dttb.ru/s//download | iex # или напрямую: # Set-ExecutionPolicy Bypass -Scope Process -Force # .\netbird-niikn-install.ps1 # # Что делает: # - Проверяет права администратора (требуется) # - Скачивает последнюю версию installer с pkgs.netbird.io # - Устанавливает silent # - Подключает с корпоративным setup-key → группа NIIKN → NetBird route # на 2.63.246.0/24 автоматом (для обхода блокировки nspd.gov.ru) # - Выводит статус подключения # # Версия: 2026-04-21 # ============================================================================= $ErrorActionPreference = 'Stop' $ProgressPreference = 'SilentlyContinue' [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 $SetupKey = '6507CC68-2919-4D04-AB8E-3F8507906220' $InstallerUrl = 'https://pkgs.netbird.io/windows/x64/netbird_installer_x64.exe' $TmpFile = Join-Path $env:TEMP 'netbird_installer_niikn.exe' $NbExe = 'C:\Program Files\Netbird\netbird.exe' $MgmtUrl = 'https://api.netbird.io:443' function Write-Step($msg) { Write-Host "[>] $msg" -ForegroundColor Cyan } function Write-Ok($msg) { Write-Host " OK: $msg" -ForegroundColor Green } function Write-Err($msg) { Write-Host "[X] $msg" -ForegroundColor Red } # --- Проверка: админ? --- $isAdmin = ([Security.Principal.WindowsPrincipal] ` [Security.Principal.WindowsIdentity]::GetCurrent() ` ).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) if (-not $isAdmin) { Write-Err 'Запустите PowerShell от имени администратора и выполните команду заново.' Write-Host '' Write-Host 'Как запустить от администратора:' -ForegroundColor Yellow Write-Host ' 1. Пуск -> наберите "PowerShell"' Write-Host ' 2. ПКМ по "Windows PowerShell" -> "Запустить от имени администратора"' Write-Host ' 3. В открывшемся окне выполните команду установки ещё раз' Read-Host 'Нажмите Enter для выхода' exit 1 } Write-Host '' Write-Host '============================================================' Write-Host ' Установка корпоративного VPN NetBird для НИИКН' Write-Host '============================================================' Write-Host '' # --- 1. Installer: нужен? --- if (Test-Path $NbExe) { Write-Step 'NetBird уже установлен - пропускаю скачку/установку' } else { Write-Step 'Скачиваю установщик NetBird...' try { Invoke-WebRequest -Uri $InstallerUrl -OutFile $TmpFile -UseBasicParsing Write-Ok "сохранён в $TmpFile" } catch { Write-Err "Не удалось скачать: $($_.Exception.Message)" Read-Host 'Нажмите Enter'; exit 1 } Write-Step 'Устанавливаю NetBird (silent, 30-60 сек)...' Start-Process -FilePath $TmpFile -ArgumentList '/S' -Wait Start-Sleep -Seconds 8 if (-not (Test-Path $NbExe)) { Write-Err 'Установка не прошла - netbird.exe не найден.' Read-Host 'Нажмите Enter'; exit 1 } Write-Ok 'установлен' } # --- 2. Подключение с setup-key --- Write-Step 'Подключаю к корпоративной сети (группа NIIKN)...' try { & $NbExe up --setup-key $SetupKey --management-url $MgmtUrl 2>&1 | ForEach-Object { Write-Host " $_" } } catch { Write-Err "Ошибка при подключении: $($_.Exception.Message)" Read-Host 'Нажмите Enter'; exit 1 } Start-Sleep -Seconds 3 # --- 3. Статус --- Write-Step 'Проверяю статус...' Write-Host '' & $NbExe status Write-Host '' # --- cleanup --- if (Test-Path $TmpFile) { Remove-Item $TmpFile -Force -ErrorAction SilentlyContinue } Write-Host '============================================================' -ForegroundColor Green Write-Host ' ГОТОВО' -ForegroundColor Green Write-Host '============================================================' -ForegroundColor Green Write-Host '' Write-Host ' Откройте https://nspd.gov.ru/ в браузере - должно работать.' Write-Host ' VPN подключается автоматически при каждой загрузке Windows.' Write-Host '' Read-Host 'Нажмите Enter для выхода'