WireGuardista ei näyttänyt ketjua vielä olevankaan. Onko porukalla siitä kokemusta?
Tuossa tein pikaiset testit nopeudesta ja ei se nyt ihan heti vakuuttanut, vaikka sillä mainostetaan mm. nopeudella.
Ihan hyvin toiminut, lokakuusta asti ollu OPNsense purkissa WireGuard tunneli Mullvad VPN:n suuntaan. Liittymänä 100/10 kaapelinetti ja ~90/9 nopeuksiin pääsee tunnelin läpi WG:llä, ennen sitä oli OpenVPN ja nopeudet ~75/9 tienoilla. Johtunee luultavasti vain siitä että viimeksi mainittu ruuhkaisempi. Prosessorin kuormituksessa ehkä tuntuvin ero, ennen load average siinä 0,5 tienoilla ja nykyään 0,3. Android luurissa myös jonkin verran testannut ja akku näyttäisi ainakin kestävän huomattavasti pidempään kun vertaa OpenVPN:ään.
Linus on näemmä antanut varovaisen hyväksynnän varhaiselle versiolle: Re: [GIT] Networking [LWN.net]
Ei näytä kannattavan silti pidätellä hengitystä siihen saakka, että v1.0 on tarjolla esim. pfSense-pakettina.
Joopa joo, tässä vastavuoroisesti todistetaan, että 949 Mbps on teoreettinen maksimi 1 Gbps NIC:llä https://forum.netgate.com/post/776882
Ks. myös kohta "To be absolutely fair, Wireguard uses UDP encapsulation to get past NAT devices, and..."
Tuohan vaikuttaa oikein hyvältä mutta voiko tosiaan 256bittinen kryptaus riittää. Itse tottunut aina käyttämään openvpn:llä 4096bittisiä avaimia. Ongelmana näkisin toistaiseksi puutteellisen tuen ulkoisille autentikointisysteemeille. Tuohan ei taida tukea esim älykortteja tai yubikeytä vielä. Kunhan tuota vähän vielä kehitetään niin uskon että hakkaa openvpn:n mennen tullen. Itsellä ainakin lähtee testiin. WireGuard VPN: pros and cons | Perfect Privacy
Tuohan vaikuttaa oikein hyvältä mutta voiko tosiaan 256bittinen kryptaus riittää. Itse tottunut aina käyttämään openvpn:llä 4096bittisiä avaimia. Ongelmana näkisin toistaiseksi puutteellisen tuen ulkoisille autentikointisysteemeille. Tuohan ei taida tukea esim älykortteja tai yubikeytä vielä. Kunhan tuota vähän vielä kehitetään niin uskon että hakkaa openvpn:n mennen tullen. Itsellä ainakin lähtee testiin. WireGuard VPN: pros and cons | Perfect Privacy
Varsinainen salaus tapahtuu symmetrisellä salausmenetelmällä kuten AES:illa ja 256 bittiä on aivan riittävä salausavaimen pituus. 256 bittiä on enemmän kuin tarpeeksi suojaamaan "brute force" -tyyppisiltä hyökkäyksiltä eli avainten kokeilulta yksi kerrallaan, ja muita hyökkäyksiä eli käytännössä algoritmin haavoittuvuuksia vastaan on ensisijaisesti suojauduttava algoritmin oikealla suunnittelulla, ei avaimen pituuden kasvattamisella.
Näiden salausavainten vaihtoon käytetään epäsymmetrisiä salausmenetelmiä, joiden turvallisuus toimii eri pohjalta. Niiden murtamiseen on luonnostaan olemassa tehokkaampia menetelmiä (lukujen tekijöihinjako, diskreetin logaritmin laskeminen...) kuin "brute force"-hyökkäykset. Esimerkiksi RSA vaatii oleellisesti pidemmän salausavaimen, esimerkiksi 4096-bittisen, ollakseen turvallinen.
En sanoisi päivän kokemuksella WireGuardia kovin paljon helpommaksi kuin IPsec:iä kaikkine variaationeen, OpenVPN:stä puhumattakaan.
OpenWRT näyttää erityisen helpolta tapaukselta. D-Link DIR-825 B2:ssa ei ollut riittävästi fläshiä (8 MB), jotta siihen olisi mahtunut OpenVPN kaikkine riippuvuuksineen.
Tässä pykälää isommassa TP-Link Archer C7 V2:ssa wg alkoi toimia laakista ja tilantarve on vain murto-osa OpenVPN/OpenSSL:stä.
Bonuksena iperf antaa parempia tuloksia kuin ilman VPN:ää, jolloin iperf2/3 tekee siirrossa suuremman osan työstä kuin kernel moduuleineen wg:n kanssa.
Toiveissa on, että joskus Android-client osaisi roamata paremmin ja kuluttaa vähemmän akkua kuin vanhemmat VPN:t.
Hakusessa olisi openvpn:ään verrattuna kevyempi tapa tunneloida liikennettä kotiverkkoon, kun tulee paljon käytettyä mobiililaitteen kautta ja virrankulutus on melkoista.
Vähän harmi, että netgaten puolella kiinnostus tätä kohtaan tuntuu olevan olematonta, mutta saahan sitä sitä vaikka raspin kautta tämän tietysti hoidettua. Kokeilis viikonloppuna virittää.
Minulle tuli tarve yhdistää kaksi verkkoa toisiinsa. Omassa verkossa on Asus RT-AC66U B1 ja Asus RT-N18. Toisessa verkossa TP-LINK Deco X50-4G. Näiden välille ei saa asetuksista määritettyä site-to-site VPN:ää. Omassa verkossa minulla on minipalvelimena Melen passiivijäähdytteinen kone, jossa Celeron J4125. Tämä prossu tukee AES-NI:tä. Mietin jo, että täytyykö tilata toinen Mele, koska esim. Raspberry P 3:ssa eikä ilmeisesti 4:ssakaan ole AES-kiihdytystä. Ilmeisesti versiossa 5 olisi? Nämä kuitenkin maksavat ja hoksasin, että vuosia sitten ostamassani Firendly Elecin NanoPi NEO2:ssa on AES-tuki. Tämä ei maksanut kuin joitakin kymppejä. Uusi NEO3 löytyy täältä NanoPi NEO3 .
Mele:
NanoPi NEO2 OLED-näytöllä:
VPN:ksi otin testiin ZeroTierin (ZeroTier | Global Area Networking), koska se muodostaa peer2peer-yhteyksiä ja osaa kiertää NAT:n, jolloin ei tarvitse avata julkista porttia. Nyt aluksi testaan yhteyttä kotiverkossa Asus RT-AC66U:n ja RT-N18:n verkkojen välillä, jotta saan testattua nopeuksia paremmin. Melen IP-osoite on 192.168.1.2 ja Neo2:n 192.168.10.240.
Molemmissa laitteissa on Ubuntu. ZeroTierin nettisivuilta loin privaattiverkon 10.147.18.0/24, jolla luodaan automaattisesti network id.
MELE:
Intel(R) Celeron(R) J4125 CPU @ 2.00GHz
Stepping: 8
CPU MHz: 800.000
CPU max MHz: 2700,0000
CPU min MHz: 800,0000
AES-tuki päällä:
openssl speed -elapsed -evp aes-128-cbc
You have chosen to measure elapsed time instead of user CPU time.
Doing aes-128-cbc for 3s on 16 size blocks: 65682463 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 64 size blocks: 34455426 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 256 size blocks: 10832492 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 1024 size blocks: 2956846 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 8192 size blocks: 380604 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 16384 size blocks: 189984 aes-128-cbc's in 3.00s
OpenSSL 1.1.1f 31 Mar 2020
built on: Fri Feb 16 15:41:31 2024 UTC
options:bn(64,64) rc4(16x,int) des(int) aes(partial) blowfish(ptr)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-ANcB0E/openssl-1.1.1f=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_TLS_SECURITY_LEVEL=2 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-128-cbc 350306.47k 735049.09k 924372.65k 1009270.10k 1039302.66k 1037565.95k
AES-tuki pois päältä:
OPENSSL_ia32cap="~0x200000200000000" openssl speed -elapsed -evp aes-128-cbc
You have chosen to measure elapsed time instead of user CPU time.
Doing aes-128-cbc for 3s on 16 size blocks: 31929762 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 64 size blocks: 9971593 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 256 size blocks: 2685172 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 1024 size blocks: 674757 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 8192 size blocks: 83795 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 16384 size blocks: 43146 aes-128-cbc's in 3.00s
OpenSSL 1.1.1f 31 Mar 2020
built on: Fri Feb 16 15:41:31 2024 UTC
options:bn(64,64) rc4(16x,int) des(int) aes(partial) blowfish(ptr)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-ANcB0E/openssl-1.1.1f=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_TLS_SECURITY_LEVEL=2 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
aes-128-cbc 170292.06k 212727.32k 229134.68k 230317.06k 228816.21k 235634.69k
NOE2:
Allwinner H5, Quad-core 64-bit high-performance Cortex A53
CPU max MHz: 1248.0000
CPU min MHz: 480.0000
openssl speed -elapsed -evp aes-128-cbc
You have chosen to measure elapsed time instead of user CPU time.
Doing aes-128-cbc for 3s on 16 size blocks: 29614773 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 64 size blocks: 19746745 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 256 size blocks: 8223847 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 1024 size blocks: 2555037 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 8192 size blocks: 343171 aes-128-cbc's in 3.00s
OpenSSL 1.0.2g 1 Mar 2016
built on: reproducible build, date unspecified
options:bn(64,64) rc4(ptr,char) des(idx,cisc,16,int) aes(partial) blowfish(ptr)
compiler: cc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
aes-128-cbc 157945.46k 421263.89k 701768.28k 872119.30k 937085.61k
Vertailun vuoksi sama Raspberry Pi 3 Model B Plus Rev 1.3 -versiolla:
openssl speed -elapsed -evp aes-128-cbc
You have chosen to measure elapsed time instead of user CPU time.
Doing aes-128-cbc for 3s on 16 size blocks: 6292596 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 64 size blocks: 2255997 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 256 size blocks: 634712 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 1024 size blocks: 163782 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 8192 size blocks: 20665 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 16384 size blocks: 10315 aes-128-cbc's in 3.00s
OpenSSL 1.1.1w 11 Sep 2023
built on: Wed Sep 13 19:21:33 2023 UTC
options:bn(64,32) rc4(char) des(long) aes(partial) blowfish(ptr)
compiler: gcc -fPIC -pthread -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -f file-prefix-map=/build/openssl-bafRra/openssl-1.1.1w=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DOPENSSL_PIC -DOPENSSL_ CPUID_OBJ -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -D SHA512_ASM -DKECCAK1600_ASM -DAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DNDEBUG -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 1 6384 bytes
aes-128-cbc 33560.51k 48127.94k 54162.09k 55904.26k 56429.23k 56333.65k
Edit 1:
Laitoin ZeroTierin myös kännykkään. En laittanut päälle Enable Default Route, jotta ainoastaan verkkoihin 10.147.18.0/24, 192.168.10.0/24 ja 192.168.1.0/24 menevä liikenne käyttää VPN:ää.
Sellainen vastoinkäyminen tuli, että TP-LINK Deco X50-4G:n asetuksissa ei voi määrittää lainkaan staattisia reittejä, joten sen kanssa en saa tätä VPN:ää toimimaan.