abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 03:11 | Nová verze

    Program pro generování 3D lidských postav MakeHuman (Wikipedie, GitHub) byl vydán ve verzi 1.3.0. Hlavní novinkou je výběr tvaru těla (body shapes).

    Ladislav Hagara | Komentářů: 0
    včera 23:11 | Bezpečnostní upozornění

    Intel vydal 41 upozornění na bezpečnostní chyby ve svých produktech. Současně vydal verzi 20240514 mikrokódů pro své procesory řešící INTEL-SA-01051, INTEL-SA-01052 a INTEL-SA-01036.

    Ladislav Hagara | Komentářů: 0
    včera 16:22 | IT novinky

    Společnost Raspberry Pi patřící nadaci Raspberry Pi chystá IPO a vstup na Londýnskou burzu.

    Ladislav Hagara | Komentářů: 0
    včera 13:22 | IT novinky

    Google na své vývojářské konferenci Google I/O 2024 představil řadu novinek. Keynote byl věnován umělé inteligenci (DeepMind, Gemini, Responsible AI).

    Ladislav Hagara | Komentářů: 1
    včera 12:33 | Bezpečnostní upozornění

    V Gitu bylo nalezeno 5 zranitelností. Opraveny jsou ve verzích 2.45.1, 2.44.1, 2.43.4, 2.42.2, 2.41.1, 2.40.2 a 2.39.4. Útočník může připravit repozitář tak, že při jeho klonování (git clone) může dojít ke spuštění libovolného kódu.

    Ladislav Hagara | Komentářů: 0
    včera 04:11 | IT novinky

    Virtualizační softwary VMware Workstation Pro a VMware Fusion Pro jsou nově pro osobní použití zdarma. Softwary VMware Workstation Player a VMware Fusion Player končí.

    Ladislav Hagara | Komentářů: 2
    včera 02:11 | Nová verze

    Linuxová distribuce Endless OS (Wikipedie) byla vydána ve verzi 6.0.0. Přehled novinek i s náhledy v příspěvku na blogu, poznámkách k vydání a také na YouTube.

    Ladislav Hagara | Komentářů: 0
    14.5. 15:44 | Nová verze

    Byl vydán Mozilla Firefox 126.0. Přehled novinek v poznámkách k vydání, poznámkách k vydání pro firmy a na stránce věnované vývojářům. Vylepšena byla funkce "Zkopírovat odkaz bez sledovacích prvků". Přidána byla podpora zstd (Zstandard). Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 126 je již k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    14.5. 15:22 | Nová verze

    Grafana (Wikipedie), tj. open source nástroj pro vizualizaci různých metrik a s ní související dotazování, upozorňování a lepší porozumění, byla vydána ve verzi 11.0. Přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    14.5. 14:55 | Nová verze

    Byla vydána nová verze 24.0 linuxové distribuce Manjaro (Wikipedie). Její kódové jméno je Wynsdey. Ke stažení je v edicích GNOME, KDE PLASMA a XFCE.

    Ladislav Hagara | Komentářů: 2
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (74%)
     (5%)
     (10%)
     (10%)
    Celkem 279 hlasů
     Komentářů: 16, poslední 14.5. 11:05
    Rozcestník

    Náhrada MS Always On VPN Wireguardem

    26.12.2020 10:43 | Přečteno: 2838× | Výběrový blog | poslední úprava: 18.10.2022 23:16

    Úvodní upozornění: tento text se netýká Linuxu, zabývá se automatickým ovládáním Wireguardu na Windows.

    Wireguardu jsem už pár let odolávala. Vadilo mi, že není v jádře, že je kolem něj neskutečný humbuk, že ho neumí RouterOS... Časem ovšem humbuk trochu utichl, jádro už patchovat není potřeba a i ten Mikrotik už ho má v betaverzích RouterOS7. Což ještě nemusí nic znamenat, ale příslib tu je. :-)

    A tak jsem zkusila. A zamilovala se...

    Dnes na něj mám z IPSecu převedenou většinu tunelů používaných pro propojení zabbixových proxy s centrálním serverem, používám ho pro připojení notebooku do své soukromé VPNky a nakonec jsem začala i zkoumat, jestli by nešel smysluplně využít na klientských stanicích se systémem od Microsoftu.

    U implementace pro Windows mě příjemně překvapilo, že je možné přes wireguardí tunel - po drobné úpravě nastavení - využívat skupinové politiky aplikované při startu (čili automatické instalace a updaty aplikací, či spouštění startovacích skriptů), čímž je tento software do jisté míry schopen suplovat microsoftí Always On VPN device tunnel, obsažený v nejvyšších edicích Windows. V dnešní době, kdy všichni i s počítači zmizeli z kanceláří na home office, se podobná funkčnost hodí.

    Jediná chyba na kráse byla v absenci ekvivalentu Trusted Network Detection, který u AOVPN automaticky shazuje VPNku v případě, že se počítač připojí do interní firemní sítě. Ne každý má potřebu protunelovávat se gigabitovými linkami uvnitř firmy. V Linuxu není problém si automatické shazování a nahazování tunelů naskriptovat v Network Manageru, ale jak na to ve Windows?

    Na prvním místě se nabízelo spouštění ovládacího skriptu přes naplánované úlohy [Scheduled Tasks]. Windows umějí spouštět naplánované úlohy v reakci na zápisy do eventlogu, takže jsem začala pátrat a celkem rychle se dobrala k eventu 4004 v protokolu Microsoft-Windows-NetworkProfile, který se objevuje v okamžiku, kdy Windows detekují změny stavu sítě.

    Na tento event jsem tedy navázala ovládací powershellový skript, který jsem nakonec vyrobila ve dvou variantách. První varianta detekuje interní síť podle DNS suffixu servírovaného DHCP serverem (podobně jako to dělá AOVPN), druhá funguje jen u firemních sítí s podporou IPv6 a orientuje se podle připojených šestkových prefixů.

    Varianta 1: identifikace podle nastavení DNS

    Trusted Network Detection v AOVPN ověřuje přítomnost ve firemní síti podle přípony DNS, kterou počítač dostane od DHCP serveru. V první chvíli jsem se tedy vydala tímto směrem. V úvodu skriptu je nejprve potřeba nastavit několik proměnných:

    Vlastní skript, v mém případě pojmenovaný wgchange-dns.ps1, pak vypadá takto:

    # Nazev WG tunelu
    $tunnelIf = "wg-pokus"
    # Domena, podle jejiz pritomnosti v prohledavanych suffixech
    # se rozhoduje, zda shodit ci nahodit tunel
    $domain = "janaj.firma"
    # Pokud je nastaveno na true, bude pred nahozenim WG
    # kontrolovat existenci pocitanych pripojeni
    $checkCost = $true
    # Cesta k souboru, do ktereho je zapisovana aktualni cinnost.
    # Pokud neni nastaveno, nezapisuje se nikam.
    $logFile = ""
    
    $wgDir    = "$([Environment]::GetEnvironmentVariable("ProgramFiles"))\WireGuard"
    $wgExe    = "$($wgDir)\wireguard.exe"
    $wgConfig = "$($wgDir)\Data\Configurations\$($tunnelIf).conf"
    $wgConfigEncrypted = "$($wgConfig).dpapi"
    
    # Pripadne donacteni lokalnich zmen konfigurace z externiho souboru
    $configFile = "$(split-path -parent $MyInvocation.MyCommand.Definition)\wgchange-dns.config.ps1"
    if ( Test-Path -Path $configFile -PathType Leaf ) {
        . ($configFile)
    }
    
    # --------------------------------------------------
    # Zapise aktualni cas a zpravu na standardni vystup,
    # pripadne do souboru $logFile
    # --------------------------------------------------
    function Write-Log {
        param ( $msg )
        Get-Date -Format "HH:mm:ss" | Write-Host -NoNewline 
        Write-Host ": $($msg)"
        if($logFile -ne "") {
            Get-Date -Format "HH:mm:ss" | Out-File -Append -FilePath $logFile -NoNewline -Force
            Write-Output ": $($msg)" | Out-File -Append -FilePath $logFile -Force
        }
    }
    
    # -----------
    # Shodi tunel
    # -----------
    function Down {
        Write-Log "Vypinam tunel."
        & $wgExe /uninstalltunnelservice $tunnelIf
    }
    
    # ------------
    # Nahodi tunel
    # ------------
    function Up {
        
        $uninstallManager = 0
        if(Test-Path -PathType Leaf -Path $wgConfig) {
            Write-Log "Zapinam ManagerService pro aktualizaci konfigurace."
            & $wgExe /installmanagerservice
            $uninstallManager = 1
            Start-Sleep -Seconds 1
        }
    
        if(Test-Path -PathType Leaf -Path $wgConfig) {
            Write-Log "Aktualizuji a nahazuji tunel."
            & $wgExe /installtunnelservice $wgConfig
        }
        else {
            Write-Log "Nahazuji tunel."
            & $wgExe /installtunnelservice $wgConfigEncrypted
        }
    
        if($uninstallManager -eq 1) {
            Write-Log "Vypinam ManagerService."
            Stop-Service -Name "WireguardManager"
            & $wgExe /uninstallmanagerservice
        }
    
    }
    
    # ------------------------------------------------------
    # Spocte pocet adapteru s nazvem odpovidajicim $tunnelIf
    # (logicky 1 nebo 0)
    # ------------------------------------------------------
    function Get-WgCount {
        Get-NetAdapter | where { $_.Name -match $tunnelIf } |
            Measure-Object -Line | Select-Object -ExpandProperty Lines
    }
    
    # Pokud se system vypina, nereagujeme.
    if ([ System.Environment ]:: HasShutdownStarted) {
        Wrile-Log "System se vypina, stav propojeni neresim. Konec"
        exit 0
    }
    
    $netAdapters = Get-NetAdapter
    # Spocitani pripojenych adapteru, pokud neni pripojeny zadny, shodime tunel.
    $activeCount = $netAdapters | where { $_.Status -match "Up" } |
                 where { $_.Name -notmatch $tunnelIf } |
                Measure-Object -Line | Select-Object -ExpandProperty Lines
    
    if ( $activeCount -eq 0 ) {
        # Pokud nechceme shazovat tunel pri odpojene siti,
        # můzeme tuhle podminku smazat
        if ( Get-WgCount -gt 0) {
            Write-Log "Vsechny adaptery jsou odpojene, shazuji tunel."
            Down
            exit 0
        }
        Write-Log "Vsechny adaptery jsou odpojene, koncim."
        exit 0
    }
    
    # Kontrola pocitanych spojeni, pokud existuje nejake aktivni, shodime Wireguard
    if ($checkCost) {
        $b = $false
        [void][Windows.Networking.Connectivity.NetworkInformation, Windows, ContentType = WindowsRuntime]
        $profiles = [Windows.Networking.Connectivity.NetworkInformation]::GetConnectionProfiles()
        if ( $profiles -ne $null ) {
            $activeProfiles = Get-NetConnectionProfile
            $profiles | ForEach-Object {
                $profile = $_
                $cost = $_.GetConnectionCost()
                $ac = $activeProfiles | where { $_.Name -eq $profile.ProfileName } |
                        Measure-Object -Line | Select-Object -ExpandProperty Lines
                $rc = $cost.NetworkCostType -ne "Unrestricted" | where { $_ -ne $false } |
                        Measure-Object -Line | Select-Object -ExpandProperty Lines
                $bd = $costs.BackgroundDataUsageRestricted | where { $_ -ne $false } |
                        Measure-Object -Line | Select-Object -ExpandProperty Lines
                $rm = $costs.Roaming | where { $_ -ne $false } |
                        Measure-Object -Line | Select-Object -ExpandProperty Lines
                if( $ac -gt 0 ) {
                    if( ($rc -ne 0) -or ($bd -ne 0) -or ($rm -ne 0) ) { 
                        $b = $true
                    }
                }
            }
        }
        if( $b ) {
            if( Get-WgCount -gt 0) {
                Write-Log "Nektere spojeni je pocitane, shazuji tunel."
                Down
                exit 0
            }
            else {
                Write-Log "Nektere spojeni je pocitane, nechavam tunel shozeny."
                exit 0
            }
        }
    }
    
    
    # Zjisteni poctu adapteru, ktere maji­ nastaveny suffix zadany v $domain
    $domainCount = 0
    $dnsClient = Get-DnsClient
    $netAdapters | ForEach-Object {
        $netAdapter = $_
        $dnsClient | ForEach-Object {
            if ( ($_.InterfaceIndex -eq $netAdapter.InterfaceIndex) `
                 -and ($_.ConnectionSpecificSuffix -cmatch "^$($domain)\.{0,1}$" )`
                 -and $($netAdapter.Status -match "Up") ) {
                $domainCount++
            }
        }
    }
    
    # Spocteni aktivnich WG tunelu
    $wgCount = Get-WgCount
    
    # Pokud zadne adaptery nevyhledavaji v $domain a zaroven neni nahozeny WG, nahodime ho.
    if( ($domainCount -eq 0) -and ($wgCount -eq 0) ) {
        Up
    }
    # Pokud naopak takovy adapter existuje a WG je nahozeny, shodime ho.
    elseif ( ($domainCount -gt 0) -and ($wgCount -gt 0) ) {
        Down
    }
    # Jinak jen zapiseme hlasku.
    else {
        Write-Log "Neni potreba cokoli menit."
    }
    

    Varianta 2: identifikace podle prefixu IPv6

    Hodí se tam, kde je ve firemní síti nasazený protokol IPv6. Šestkový prefix by teoreticky měl být jedinečný a není závislý na rozmarech DHCPka či SLAAC. Oproti DNSkové variantě zmizela proměnná $domain, kterou nahradila proměnná $prefix. Prefix je porovnáván jako prostý řetězec proti zkrácenému zápisu adres z powershellového příkazu Get-NetIPAddress, pokud tedy například chceme identifikovat firemní ULA prefix fd0a:4eec:658e::/48, vložíme do proměnné $prefix řetězec fd0a:4eec:658e:.

    Skript wgchange-ipv6.ps1 je zde:

    # Nazev WG tunelu
    $tunnelIf = "wg-pokus"
    # Prefix IPv6, podle jehoz pritomnosti mezi lokalne nastavenymi
    # adresami se rozhoduje, zda shodit ci nahodit tunel.
    $prefix = "fd0a:4eec:658e:"
    # Pokud je nastaveno na true, bude pred nahozenim WG
    # kontrolovat existenci pocitanych pripojeni
    $checkCost = $true
    # Cesta k souboru, do ktereho je zapisovana aktualni cinnost.
    # Pokud neni nastaveno, nezapisuje se nikam.
    $logFile = ""
    
    $wgDir    = "$([Environment]::GetEnvironmentVariable("ProgramFiles"))\WireGuard"
    $wgExe    = "$($wgDir)\wireguard.exe"
    $wgConfig = "$($wgDir)\Data\Configurations\$($tunnelIf).conf"
    $wgConfigEncrypted = "$($wgConfig).dpapi"
    
    # Pripadne donacteni zmen konfigurace z externiho souboru
    $configFile = "$(split-path -parent $MyInvocation.MyCommand.Definition)\wgchange-ipv6.config.ps1"
    if ( Test-Path -Path $configFile -PathType Leaf ) {
        . ($configFile)
    }
    
    # --------------------------------------------------
    # Zapise aktualni cas a zpravu na standardni vystup,
    # pripadne do souboru $logFile
    # --------------------------------------------------
    function Write-Log {
        param ( $msg )
        Get-Date -Format "HH:mm:ss" | Write-Host -NoNewline 
        Write-Host ": $($msg)"
        if($logFile -ne "") {
            Get-Date -Format "HH:mm:ss" | Out-File -Append -FilePath $logFile -NoNewline -Force
            Write-Output ": $($msg)" | Out-File -Append -FilePath $logFile -Force
        }
    }
    
    # -----------
    # Shodi tunel
    # -----------
    function Down {
        Write-Log "Vypinam tunel."
        & $wgExe /uninstalltunnelservice $tunnelIf
    }
    
    # ------------
    # Nahodi tunel
    # ------------
    function Up {
        $uninstallManager = 0
        if(Test-Path -PathType Leaf -Path $wgConfig) {
            Write-Log "Zapinam ManagerService pro aktualizaci konfigurace."
            & $wgExe /installmanagerservice
            $uninstallManager = 1
            Start-Sleep -Seconds 1
        }
    
        if(Test-Path -PathType Leaf -Path $wgConfig) {
            Write-Log "Aktualizuji a nahazuji tunel."
            & $wgExe /installtunnelservice $wgConfig
        }
        else {
            Write-Log "Nahazuji tunel."
            & $wgExe /installtunnelservice $wgConfigEncrypted
        }
    
        if($uninstallManager -eq 1) {
            Write-Log "Vypinam ManagerService."
            Stop-Service -Name "WireguardManager"
            & $wgExe /uninstallmanagerservice
        }
    }
    
    # ------------------------------------------------------
    # Spocte pocet adapteru s nazvem odpovidajicim $tunnelIf
    # (logicky 1 nebo 0)
    # ------------------------------------------------------
    function Get-WgCount {
        Get-NetAdapter | where { $_.Name -match $tunnelIf } |
            Measure-Object -Line | Select-Object -ExpandProperty Lines
    }
    
    
    # Pokud se system vypina, nereagujeme.
    if ([ System.Environment ]:: HasShutdownStarted) {
        Wrile-Log "System se vypina, stav propojeni neresim. Konec"
        exit 0
    }
    
    # Spocitani pripojenych adapteru, pokud neni pripojeny zadny, shodime tunel.
    $activeCount = Get-NetAdapter | where { $_.Status -match "Up" } |
                 where { $_.Name -notmatch $tunnelIf } |
                Measure-Object -Line | Select-Object -ExpandProperty Lines
    if ( $activeCount -eq 0 ) {
        # Pokud nechceme shazovat tunel pri odpojene siti,
        # můzeme tuhle podminku smazat
        if ( Get-WgCount -gt 0) {
            Write-Log "Vsechny adaptery jsou odpojene, shazuji tunel."
            Down
            exit 0
        }
        Write-Log "Vsechny adaptery jsou odpojene, koncim."
        exit 0
    }
    
    
    # Kontrola pocitanych spojeni, pokud existuje nejake aktivni, shodime Wireguard
    if ($checkCost) {
        $b = $false
        [void][Windows.Networking.Connectivity.NetworkInformation, Windows, ContentType = WindowsRuntime]
        $profiles = [Windows.Networking.Connectivity.NetworkInformation]::GetConnectionProfiles()
        if ( $profiles -ne $null ) {
            $activeProfiles = Get-NetConnectionProfile
            $profiles | ForEach-Object {
                $profile = $_
                $cost = $_.GetConnectionCost()
                $ac = $activeProfiles | where { $_.Name -eq $profile.ProfileName } |
                        Measure-Object -Line | Select-Object -ExpandProperty Lines
                $rc = $cost.NetworkCostType -ne "Unrestricted" | where { $_ -ne $false } |
                        Measure-Object -Line | Select-Object -ExpandProperty Lines
                $bd = $costs.BackgroundDataUsageRestricted | where { $_ -ne $false } |
                        Measure-Object -Line | Select-Object -ExpandProperty Lines
                $rm = $costs.Roaming | where { $_ -ne $false } |
                        Measure-Object -Line | Select-Object -ExpandProperty Lines
                if( $ac -gt 0 ) {
                    if( ($rc -ne 0) -or ($bd -ne 0) -or ($rm -ne 0) ) { 
                        $b = $true
                    }
                }
            }
        }
        if( $b ) {
            if( Get-WgCount -gt 0) {
                Write-Log "Vychozi spojeni je pocitane, shazuji tunel."
                Down
                exit 0
            }
            else {
                Write-Log "Vychozi spojeni je pocitane, nechavam tunel shozeny."
                exit 0
            }
        }
    }
    
    
    # Zjisteni indexu wireguardiho adapteru, podle nej pak bude v nasledujicim
    # prikazu tento adapter vyrazen z vyhledavani
    $wgIndex = Get-NetAdapter | where { $_.Name -match $tunnelIf } | Select-Object -ExpandProperty ifIndex
    if("$($wgIndex)" -eq "") {
        $wgIndex = -1
    }
    
    # Spocteni aktivnich adres odpovidajicich hledanemu prefixu
    $addrCount = Get-NetIPAddress | where { $_.InterfaceIndex -notmatch $wgIndex } |
                where { $_.AddressState -notmatch "Deprecated" } |
                Select-Object -ExpandProperty IPAddress | where { $_ -cmatch "^$($prefix)" } |
                Measure-Object -Line | Select-Object -ExpandProperty Lines
    # Spocteni aktivnich WG tunelu
    $wgCount = Get-WgCount
    
    # Pokud zadne adaptery nemaji adresu odpovidajici prefixu a neni nahozeny tunel, nahodime ho.
    if( ($addrCount -eq 0) -and ($wgCount -eq 0) ) {
        Up
    }
    # Pokud naopak takovy adapter existuje a WG je nahozeny, shodime ho.
    elseif ( ($addrCount -gt 0) -and ($wgCount -gt 0) ) {
        Down
    }
    # Jinak jen zapiseme hlasku.
    else {
        Write-Log "Neni potreba cokoli menit."
    }
    

    Testování

    Při zkušebním spuštění skriptu nejspíš napoprvé skončíme hláškou že spouštění skriptů není povolené. Toto chování lze ovlivnit poweshellovým příkazem Set-ExecutionPolicy, ovšem to ovlivní všechny spouštěné skripty. Včetně těch, které uživatel dostane mailem odněkud z Číny a poklepe na ně.

    Proto raději použijeme parametr příkazového řádku:

    poweshell.exe -executionpolicy remotesigned -File "wgchange-ipv6.ps1"
    

    Automatické spouštění

    Pokud máme nastaveno a otestováno, můžeme přistoupit k automatickému spouštění. Otevřeme si MMC snap-in Správa počítače [Computer Management] (případně rovnou spustíme compmgmt.msc) a v plánovači úloh vytvoříme novou úlohu. Zadáme název, účet pod kterým to celé má běžet, povolíme spouštění nezávisle na přihlášení a spouštění s nejvyššími oprávněními.

    Přepneme se na kartu Aktivační události [Triggers] a vytvoříme novou událost. Listbox Začátek úlohy [Begin the task] přepneme na Při události [On an event], v listboxu Protokol [Log] vyhledáme Microsoft-Windows-NetworkProfile/Operational, Zdroj [Source] přepneme na Network Profile a do ID události [Event ID] zapíšeme 4004. Můžeme pro jistotu nastavit i položku Zastavit úlohu spuštěnou déle než [Stop task if running longer than].

    Přepneme se na kartu Akce [Actions] a vytvoříme novou akci. Do textového pole Program či skript [Program/script] vepíšeme

    %SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe

    a do Přidat argumenty [Add arguments] zadáme

    -executionpolicy remotesigned -File "Disk:\cesta\k\nasemu\skriptu\wgchange-ipv6.ps1"

    Cestu ke skriptu a jeho název je samozřejmě nutné upravit tak, aby odpovídaly skutečnosti.

    Na kartě Podmínky [Conditions] zrušíme Spustit úlohu pouze při připojení k napájení [Start the task only if the computer is on AC power].

    Všechno uložíme a zkusíme, co to bude dělat. Není špatné si pro první testy zapnout ve spouštěném skriptu logování nastavením proměnné $logFile.

    Pokud vše funguje, můžeme si celé nastavení zkusit zautomatizovat přes skupinové politiky.

    Drobnosti

    Tunelování IPv6 ULA adres

    Pokud máte firemní síť s dualstackem a tunel chcete - třeba kvůli případným konfliktům síťových rozsahů - provozovat jen přes IPv6 ULA rozsah, bude vhodné přidat prefix tohoto rozsahu do tabulky prefixových politik tak, aby mu počítač dával přednost před prefixem ::ffff:0:0/96, to jest před adresami IPv4.

    Nějaké povídání na toto téma najdete zde, já k tomu jen doplním, že podle mě je lepší místo manipulace s celým prefixem fc00::/7 přidat jen ten jeden konkrétní firemní prefix na pozici vyšší než 35. S adresami uvedenými ve skriptu by tedy úprava proběhla pomocí příkazu netsh interface ipv6 add prefixpolicy fd0a:4eec:658e::/48 37 25 store=persistent. Alespoň tedy teoreticky. V praxi se všechno tvářilo pohodově do chvíle, než jsem počítač restartovala; pak jsem skončila s tabulkou obsahující jen ten jeden přidaný prefix.

    C:\WINDOWS\system32>netsh interface ipv6 show prefixpolicies
    Querying active state...
    
    Precedence  Label  Prefix
    ----------  -----  --------------------------------
            37     25  fd0a:4eec:658e::/48
    

    Řešením bylo přidat ten jeden prefix a ostatní explicitně znovu nastavit. Vypadalo by to nějak takto:

    netsh interface ipv6 set prefixpolicy ::1/128             50 0  store=persistent
    netsh interface ipv6 set prefixpolicy ::/0                40 1  store=persistent
    netsh interface ipv6 add prefixpolicy fd0a:4eec:658e::/48 37 25 store=persistent
    netsh interface ipv6 set prefixpolicy ::ffff:0:0/96       35 4  store=persistent
    netsh interface ipv6 set prefixpolicy 2002::/16           30 2  store=persistent
    netsh interface ipv6 set prefixpolicy 2001::/32           5  5  store=persistent
    netsh interface ipv6 set prefixpolicy fc00::/7            3  13 store=persistent
    netsh interface ipv6 set prefixpolicy fec0::/10           1  11 store=persistent
    netsh interface ipv6 set prefixpolicy 3ffe::/16           1  12 store=persistent
    netsh interface ipv6 set prefixpolicy ::/96               1  3  store=persistent
    

    Čekání na nahození tunelu při startu

    Pokud chceme spouštět skupinové politiky při startu přes tunel, je vhodné nastavit dobu čekání na dostupnost Active Directory. Toho můžeme dosáhnout pomocí skupinových politik (či lokálně přes gpedit.msc) v položce 'Konfigurace počítače/Šablony pro správu/Systém/Zásady skupiny/Zadat dobu čekání pro zpracování zásad při spuštění' [Computer Configuration/Adminitrative templates/System/Group policy/Specify startup policy processing wait time]. Podle dokumentace by ve výchozím nenastaveném stavu měl systém používat hodnotu 30 sekund, ale při testech to jaksi nefungovalo, nečekalo. Poté, co jsem tam těch třicet sekund explicitně zadala, se aplikace politik chytla.

    DNS

    A ještě k DNS - pokud se používají DNS za tunelem, Wireguard si podle všeho při nahození tunelu zapne i blokování DNS komunikace mimo tunel, patrně kvůli ochraně proti případným DNS leakům. A protože Wireguard nijak nedetekuje, jestli je tunel průchozí nebo ne, může nastat situace, kdy firemní síť přestane odpovídat (výpadek spojení, problém se serverem atd.) a uživatel se najednou nedostane ani na Seznam/Novinky/Facebook/atd.

    Řešením samozřejmě je buď umístit druhou stranu tunelu na opravdu spolehlivou linku (například někam do datacentra), nebo raději mít k dispozici druhý nameserver, přístupný přes druhého nezávislého peera (třeba v jiné pobočce firmy).

    A to je asi tak vše.

    Nasazení do ostrého provozu plánuji po novém roce, uvidíme, co na mě pak ještě vypadne. Kdyžtak to sem doplním.

    Testováno s Wireguardem 0.3.4 a Windows 10 rel. 1909 a 20H2.


    Edit 12.4.2021: Opravila jsem u obou skriptů rozpoznávání počítaných spojení, které v původní verzi shazovalo wifinu i v případě, že byl na daný adaptér navázaný jakýkoli profil se zapnutým počítáním dat bez ohledu na to, jestli se právě používal.

    Edit 5.7.2022:
    - do funkce "Up" jsem doplnila přešifrování konfiguračního souboru v případě, že uživatel s administrátorskými právy vypnul ikonku Wireguardu v tray liště.
    - u připojení závislém na DNS suffixu jsem opravila chybu, která nastávala v případě, že bylo nahozené VPN spojení se stejným DNS suffixem (z nějakého důvodu Windows neberou VPNky jako síťový adaptér).

    Edit 10.7.2022:
    Metoda GetInternetConnectionProfile() objektu NetworkInformation nevrací připojení s výchozí routou do Internetu, takže orientovat se podle ní u detekce počítaného spojení není vhodné. Přepsala jsem to tak, aby se tunel shodil, pokud je kterékoli ze spojení nastavené jako počítané.

    Edit 18.10.2022:
    Po předchozí úpravě to shazovalo spojení i v okamžiku, kdy bylo spojení, nastavené jako počítané, neaktivní. Opraveno.

           

    Hodnocení: 100 %

            špatnédobré        

    Obrázky

    Náhrada MS Always On VPN Wireguardem, obrázek 1 Náhrada MS Always On VPN Wireguardem, obrázek 2 Náhrada MS Always On VPN Wireguardem, obrázek 3

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    Gréta avatar 26.12.2020 18:29 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
    Rozbalit Rozbalit vše Re: Náhrada MS Always On VPN Wireguardem

    sem toteďka myslela že *.ps1 sou zdrojáky v pascalu :D

    26.12.2020 20:11 Jana J. | skóre: 4 | blog: Sem_vlozte_jmeno_blogu | Praha
    Rozbalit Rozbalit vše Re: Náhrada MS Always On VPN Wireguardem
    Případné stížnosti, prosím, směrovat do Redmondu... :-)
    29.12.2020 10:58 Luděk Postrašil (SEO UX Experts s.r.o.)
    Rozbalit Rozbalit vše PS/1, PS/2, OS/2
    PS/1 je architektura počítačů od IBM. Pak byla ještě PS/2 - z ní se dodnes používá např. stejnojmenný konektor pro připojení klávesnic a myší. Také dělali skvělý operační systém OS/2 - ten se dodnes používá v některých bankomatech, ale i jinde. Naši zákazníci na něj nedají dopustit.
    26.12.2020 20:06 SPT Telecon
    Rozbalit Rozbalit vše Re: Náhrada MS Always On VPN Wireguardem
    Dekuji mnohokrat za poskytnute informace. Velmi uzitecne!
    26.12.2020 21:22 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Náhrada MS Always On VPN Wireguardem
    A tučňáček nebude?
    Max avatar 26.12.2020 22:01 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: Náhrada MS Always On VPN Wireguardem
    Přidán.
    Zdar Max
    Měl jsem sen ... :(
    26.12.2020 22:45 Jana J. | skóre: 4 | blog: Sem_vlozte_jmeno_blogu | Praha
    Rozbalit Rozbalit vše Re: Náhrada MS Always On VPN Wireguardem
    A přitom to není o Linuxu. :-)

    Díky...
    26.12.2020 23:39 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Náhrada MS Always On VPN Wireguardem
    Šťastné a veselé! 8-D
    26.12.2020 23:41 Jana J. | skóre: 4 | blog: Sem_vlozte_jmeno_blogu | Praha
    Rozbalit Rozbalit vše Re: Náhrada MS Always On VPN Wireguardem
    Nápodobně... :-)
    Max avatar 27.12.2020 01:25 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: Náhrada MS Always On VPN Wireguardem
    Tučňák není za Linux, ale za kvalitní článek, já kdysi dostal tučňáka za článek o Win. Značí to technickou úroveň/kvalitu článku, nikoli zaměření. A to je myslím dobře.
    Zdar Max
    Měl jsem sen ... :(
    29.12.2020 11:14 Luděk Postrašil (SEO UX Experts s.r.o.)
    Rozbalit Rozbalit vše VPN pro starší verze
    Pominu teď, že provozovat Windows je zvrácenost.

    Bude to fungovat i na starších verzích? Ono, když má někdo tento legacy systém, tak právě obvykle nepoužívá nejnovější verzi 10. Dobré VPN řešení by mělo fungovat minimálně na Windows XP, ty jsou stále běžně v provozu. Znám i nadšence, kteří dodnes používají Windows 98 a přímo si v tom libují. Mají to vytuněné i po vizuální stránce (desktopové styly Akt X nebo Matrixu atd. včetně nastylovaného WinAmpu). Ale to je spíš v domácnostech - firem a organizací se týkají víc ty XPčka.
    29.12.2020 11:15 Jana J. | skóre: 4 | blog: Sem_vlozte_jmeno_blogu | Praha
    Rozbalit Rozbalit vše Re: VPN pro starší verze
    Netuším. Můžete to vyzkoušet a poreferovat.
    Max avatar 29.12.2020 13:02 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: VPN pro starší verze
    Ve firemním prostředí se WinXP sice stále používají, ale né pro klienty, ale pro různé kiosky a další průmyslové zařízení.
    Pro klientská zařízení nemá smysl cokoli podporovat pro Windows Vista a starší.
    Pokud to budu vztahovat na to, co znám a co spravuji, tak je i tlak se těch WinXP zbavit. A tam jsou dvě možnosti, buď migrace na Linux, nebo výměna hw.
    Visty se ani nezačaly používat, toho se hned každý zbavil. Kdo měl Win8, ten přešel na Win10 a zbyla jen hrstka lidí, co tento OS bez podpory, používá.
    V dnešní době se tedy bavíme o Windows 7 a Windows 10. Kdo měl Win7 ve firmě, tak pokud mohl, přešel na Win10. Pak tu jsou opět průmyslová zařízení, kde je pak podobná cesta jako u těch s WinXP, tj. přechod na Linux, nebo výměna hw.
    S Win7 na desktopu je to pak paralela jako u lidí s WinXP. Prostě nechtějí přejít na supportovaný OS z nějakých vlastních důvodů, tj. většinou nejsou schopni se přizpůsobit změnám, nebo ani nechtějí a raději sestrvají na OS, který nemá bezpečnostní update. Jejich nejčastější argument je, že oni vir nikdy nechytli. A to, že někteří přeinstalovávají PC každý rok je pak jen náhoda :). Stejně tak je nezajímá, že kdokoli bude chtít (cílit na ně), tak se do PC dostane hnedle jedle.
    Zdar Max
    Měl jsem sen ... :(
    29.12.2020 13:29 Jana J. | skóre: 4 | blog: Sem_vlozte_jmeno_blogu | Praha
    Rozbalit Rozbalit vše Re: VPN pro starší verze
    Já si teda taky myslím, že lézt na Internet z (v případě XP léta) nepodporovaného systému je docela kaskadéřina. Když už není jiná možnost, tak provozovat je někde v oddělené síti bez přístupu ven.

    Ale na druhou stranu nejsou to moje data... ;-)
    xkucf03 avatar 29.12.2020 13:39 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Jak provozovat MS Windows

    Tímhle způsobem je správné přistupovat ke každým Windows (nebo jinému proprietárnímu OS). Ideálně virtualizovat, udělat obraz disku a když něco ve Windows shnije, tak se prostě obnoví celý disk. Ta virtuálka nebo fyzický počítač pak běží v oddělené síti, za firewallem, nemůže s nikým komunikovat a nic nemůže komunikovat s ní – kromě počítače, který slouží jako překladiště pro výměnu dat.

    Díky tomu odpadá i ten problém s VPN – ten případný VPN klient běží jinde než na těch Windows (dávat do nich heslo k firemní VPN nebo soukromé klíče je hazard).

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    29.12.2020 13:43 Jana J. | skóre: 4 | blog: Sem_vlozte_jmeno_blogu | Praha
    Rozbalit Rozbalit vše Re: Jak provozovat MS Windows
    Hmm, ideální svět je fajn, ale já musím pracovat s běžným lidským materiálem. Čili co nejvíc blbuvzdorně.
    29.12.2020 21:50 j
    Rozbalit Rozbalit vše Re: VPN pro starší verze
    Hele a co ti na tom prijde kaskaderskyho? Realne kdyz u toho bude sedet bfu, spusti na tom maximalne browser. Ten muze mit principielne zcela aktualni. A na druhou stranu, kdyz mas deravej browser, tak te ani nejaktualnejsi system nezachrani.

    A pokud se budem bavit na tema smb pusteny do verejnyho netu, tak nevidim zasadni rozdil v tom, jestli to je na xp, w7 nebo w10. Nejzasadnejsi problem je stejne v tom, ze kokoti z M$ naprosto nezvladaj system nastavit nejak svepravne bydefault a jeste ti hazou klacky pod nohy, kdyz si to chces nastavit osobne.

    ---

    Dete s tim guuglem dopice!
    Max avatar 29.12.2020 22:01 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: VPN pro starší verze
    No, moc browserů, co podporují WinXP, není. Každopádně není pravda, že s děravým browserem jsi druhej. Záleží, jaké bezpečnostní techniky máš na stroji nasazeny. Pravdou ale je, že pro WinXP toho už moc neexistuje (= není podporováno).
    Takže ve finále jsi druhej už jen tím, že používáš WinXP.
    Zdar Max
    Měl jsem sen ... :(
    30.12.2020 00:14 Jana J. | skóre: 4 | blog: Sem_vlozte_jmeno_blogu | Praha
    Rozbalit Rozbalit vše Re: VPN pro starší verze
    Navíc málokdo používá jen prohlížeč. A u některých chyb stačí třeba otevřít obrázek co došel mailem nebo i jen zobrazit v Průzkumníku náhled dokumentu.
    29.12.2020 13:33 j
    Rozbalit Rozbalit vše Re: VPN pro starší verze
    Az na to, ze win7 jsou supportovany jeste nejmin 2 roky.

    Pricemz widloaktualizace jeste nikdy nezabranili nikomu si spustit virus. M$ "antivir" sem videl v "akci" jednou jedinkrat ... alergickej je na hwidgen.

    Lidi preinstalovavaji widle predevsim proto, ze je to zdaleka nejrychlejsi a casto jedina cesta, jak na widlich resit libovolnej problem. Ty si myslis, ze kdyz moje ovecka dorazi s tim, ze ji neco nefunguje, ze tomu obetuju vic nez 10 minut? Pokud to neni kravina na prave tech 10 minut, tak mu stroj prepisu nacisto a problem je za cca dalsich 15 minut vyresen.

    Stejne neexistujou zadny pouzitelny logy naprosto niceho ... u poloviny erroru si na webech kokotu z M$ prectes, ze je mas ignorovat ... tak proc je ti kreteni generujou.

    BTW: Ve vetsine prumyslovych stroju ktery sem videl jsou vevnitr prave XP. A jeste nejmin 20-30let tam budou. Protoze tyhle stroje se nekupujou na 5 let a pak do popelnice. Ze stejnyho duvodu spousta firem udrzuje ty XP/w7 na desktopech. Protoze jim na tom bezi nejaka aplikace ktera generuje vystupy prave pro ten stroj, a novejsi verzi vystupu z novejsi verze aplikace ten stroj neumi pouzit.

    ---

    Dete s tim guuglem dopice!
    Max avatar 29.12.2020 17:58 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: VPN pro starší verze
    Support W7 skončil před rokem. Nyní už běží jen placený support, který moc lidí mít asi nebude. Stejně tak si ho asi moc firem platit nebude. Navíc komerční programy přestávají oficiálně podporovat Win7, příkladem budiž velmi rozšířený informační systém Helios.
    Já zásadně nic nepřeinstalovávám, vždy se snažím vše vyřešit a kápnout na problém, i když bych to měl řešit celý den. Výsledkem je, že jsem tím ve finále ušetřil spoustu času nejen sobě, ale i jiným správcům, co si přišli pro radu. Ten, kdo problémy řeší přeinstalací a reálně je tedy neřeší, se nikdy nic nenaučí, neposune ho to nikam a zůstane zamrzlý a vlak bude ujíždět a ujíždět.
    Zdar Max
    Měl jsem sen ... :(
    xkucf03 avatar 29.12.2020 18:04 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Svobodný software vs. černá skříňka – odlišný přístup k řešení problémů
    Já zásadně nic nepřeinstalovávám, vždy se snažím vše vyřešit a kápnout na problém, i když bych to měl řešit celý den. Výsledkem je, že jsem tím ve finále ušetřil spoustu času nejen sobě, ale i jiným správcům, co si přišli pro radu.

    Tohle mi dává smysl u svobodného softwaru, kde máš možnost se podívat dovnitř a zjistit, jak to tam funguje (byť i to může zabrat dost času). Ale ne u proprietárního softwaru, který funguje jako černá skříňka, kde se věci prostě dějí a ty často nemáš šanci zjistit proč, natož, abys to chování mohl změnit.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    Max avatar 29.12.2020 21:37 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: Svobodný software vs. černá skříňka – odlišný přístup k řešení problémů
    To, co jsem napsal, se vztahuje k Windows. A ano, jde to těžce diagnostikovat, ale zatím mám celkem slušnou úspěšnost.
    Zdar Max
    Měl jsem sen ... :(
    Jendа avatar 31.12.2020 15:57 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Svobodný software vs. černá skříňka – odlišný přístup k řešení problémů
    Já teda naprostou většinu problémů se svobodným softwarem vyřešil bez koukání do zdrojáku, natož jeho měnění. Jedná se tedy o věc návrhu a architektury, ne o svobodnost.
    xkucf03 avatar 31.12.2020 16:13 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Svobodný software vs. černá skříňka – odlišný přístup k řešení problémů

    Já se do něj párkrát dívat musel nebo jsem i něco měnil. Ale i když to sám neděláš a jen třeba najdeš hotové řešení na internetu, tak toto řešení dost často pochází od někoho, kdo se do těch zdrojáků podíval – a v případě proprietární černé skříňky tohle nikdo udělat nemůže – jen výrobce toho softwaru, který na to má monopol a na kterého jsi odkázaný.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    29.12.2020 21:36 j
    Rozbalit Rozbalit vše Re: VPN pro starší verze
    Jasne, takze celej den resis problem, abys ve finale zjistil, ze si stejne nic nezjistil a firma plati zamestnance, kterej nic nedela, protoze ceka az uspokojis svoje ego. Efektivita sama. Z toho uz ti co maji zkusenosti davno vyrostli a predevsim je za to nikdo neplati.

    Myslis ten helios (green), kterej uz par let nasazujou v CT a kazdej kdo kolem toho jen projde nadava kudy projde? Myslis ten, co pro nej soudruzi vyrobili novy (a zcela nefukcni)* UI, pojmenovali to Nephrite a snazej se to prodat jako novej system, pochopitelne za plnotucnou cenu?

    BTW: helios (green) bezi na .NET a vcelku vpohode i (nativne) v tuxovi, ale pst, to se nesmi rikat moc nahlas. A pochopitelne to neni oficielne podporovana konfigurace.

    BTW2: To sis pri tom svym sedmickobijstvy nestacil vsimnout, ze M$ vydal dx12 pro win7 ze? Procpak oni to safra asi tak delaj, kdyz je to ten unsupported system pro kterej dx12 "NIKDY" nebude (do w98se byl backportovanej dx9 taky vpodstate az v okamziku, kdy uz byly nepodporovany).

    *Jen z toho co mi ted z hlavy prijde na mysl, tak pokud nekdo ve widlich pouziva jiny nez 100% meritko, tak se to rozpadne zcela dokonale, vcetne toho ze zmizej vsechny ikony. Dalsi ubeficura je to, ze naprosto cokoli kdekoli vytece z obrazovky, takze se naprosto bezne stava, ze to cosi na co ma user kliknout, je nekde asi tak metr vedle monitoru.

    ---

    Dete s tim guuglem dopice!
    Max avatar 29.12.2020 21:45 Max | skóre: 72 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: VPN pro starší verze
    Takže to, že se mi vložená energie do zjištění řešení vrátila + pomohla i jiným, chápeš tak, že to není rentabilní? :D. Já si naopak myslím, že to, co děláš ty, je nerentabilní. Neustále něco přeinstalovávat, protože něco nevím, to je podle mně vyhozený čas, který bych ti nezaplatil ;-).

    Jinak to s tím dx12 je z roku 2019, jak to souvisí s tím, že v roce 2020 skončil bezplatný support? Nijak, prostě už na to většina lidí nesežene security update.

    Pokud jde o Helios, mně se to řešení také nelíbí. Je to tlustý klient, je to celkem líný atd. To ale nemění nic na faktu, že je to hodně rozšířené.
    A podobně to mají se supportem MSSQL, starší verze nepodporují a běh na Linuxu také ne, protože nemají lidi, co by to supportovali.
    Zdar Max
    Měl jsem sen ... :(
    30.12.2020 00:21 Jana J. | skóre: 4 | blog: Sem_vlozte_jmeno_blogu | Praha
    Rozbalit Rozbalit vše Re: VPN pro starší verze
    Totéž třeba Abra Gen, taky v létě zrušili podporu Windows 7. Vím že u jednoho zákazníka na jednom archivním počítači se sedmičkami, co se prý nesměl upgradovat, pak začala padat. Takže už upgradovaný je... :-)
    29.12.2020 13:18 j
    Rozbalit Rozbalit vše Re: VPN pro starší verze
    Nebude ...

    Problem (libovolnyho) ps scriptu je v tom, ze at uz je v nem napsano cokoli, je to zavisly na konkretnich revizich vseho kolem. Staci o 0.00.1 jina verze ps, a zjitis, ze tam neco neni nebo to funguje jinak. A to nemluvim o tom, ze chces mit script, kterej bude fungovat na rekneme 3 ruznych verzich widli, to je skoro nerealizovatelny, a i kdyz takovej script odladis a funguje ti, tak za tyden prestane, protoze se neco opatchuje.

    Tohle je naprosto nejzasadnejsi rozdil proti tuxlike systemu "vsechno je text".

    Jinak widlovpnky jsou katastrofa samy o sobe. A ano, mluvim v mnoznym cisle. Protoze ve widlich je nekolik systemu jak vpn zprovoznit, a realne nefunguje zadnej. Nejvetsi rit je ta, ze kdyz nastavis neco trebas prave z ps, tak ti pak UIcko nadava, ze VPN obsahuje nepodporovany parametry a kdyz pak nedej boze zmenis neco z toho UI, tak se to zesere naprosto dokonale.

    Jakykoli bezpecny sifrovani je pak pro M$ sprosty slovo. Ostatne, nejhorsi mozna varianta se kterou se jeste strongswan bydefault spokoji odpovida nejlepsi variante, kterou ti widle (a mluvim samo o nejposlednejsich desitkach) bydefault dovolej nastavit.

    ---

    Dete s tim guuglem dopice!

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.