Wireguard
Wireguard (https://www.wireguard.com/) on VPN tarkvara, mis väidab ennast olevat hulga kiirem ja lihtsam kahest suuremast konkurendist IPSecist ja OpenVPNist. Vaatame siis.
Artikli kirjutamise hetkel (2018-08) on tegu veel muidugi "beeta" tarkvaraga. Artikkel on kirjutatud Alpine Linuxi näitel.
Tegu on point-to-point tunneliga (tun seadmega).
Sisukord
Eeldused
Vajalik on wireguard kerneli moodul.
Kaks otspunkti
seade A | seade B | |
Seadme olemasolev IP | 192.168.1.1 | 192.168.1.2 |
Tunneli IP | 192.168.66.1 | 192.168.66.2 |
Veendu, et omavahel (olemasolevate) IPdega saad masinaid pingida.
Paigaldamine
Loo võrguseade
Alpine Linuxis on vaja lisada (kui juba pole) extra repository apk loetellu ja seejärel
apk update
ning
apk add wireguard-tools
Lisa uus seade, mille nimeks on wg0 ja tüüp wireguard
ip link add dev wg0 type wireguard
Lisa loodud seadmele võrguaadress olenevalt sellest, kas soovid ühes võrgus kasutada mitut seadet või ainult kahte
Mitme seadme ühendamiseks kasuta
ip address add dev wg0 192.168.66.1/24
Kahe seadme ühendamiseks
ip address add dev wg0 192.168.66.1 peer 192.168.66.2
(teise seadme puhul kasuta vastupidi aadresse)
Loo võtmed
wg utiliidiga on võimalik luua nii privaat- kui avalik võti korraga
wg genkey | tee privatekey | wg pubkey > publickey
Seadista loodud wg0 liides kuulama porti 48578 ning kasutama loodud privaatvõtit
wg set wg0 listen-port 48574 private-key ./privatekey
(teise seadme puhul kasuta teist porti)
Nüüd tee sama asi läbi teise seadme peal.
ip link add dev wg0 type wireguard ip address add dev wg0 192.168.66.2 peer 192.168.66.1 wg genkey | tee privatekey | wg pubkey > publickey wg set wg0 listen-port 39814 private-key ./privatekey
Seadista seadme A loodud wg0 liides aktsepteerima teise seadme avaliku võtit ja IPd.
wg set wg0 peer [seadme B avaliku võtmefaili sisu] persistent-keepalive 25 allowed-ips 192.168.66.2/32 endpoint 192.168.1.2:39814
Seadista seadme B loodud wg0 liides aktsepteerima esimese seadme avaliku võtit ja IPd.
wg set wg0 peer [seadme A avaliku võtmefaili sisu] persistent-keepalive 25 allowed-ips 192.168.66.1/32 endpoint 192.168.1.1:48574
Kontrolli seadistust
wg show
või
wg showconf wg0
Lõppeks tõsta wg0 liidesed üles mõlemas seadmes
ip link set wg0 up
Nüüd võiks seadmete vahel töötada ping ka wg0 liideste vahel:
seadmes A
root@juhtmekaitsja-1 /tmp # ping 192.168.66.2 -c 4 PING 192.168.66.2 (192.168.66.2): 56 data bytes 64 bytes from 192.168.66.2: seq=0 ttl=64 time=0.591 ms 64 bytes from 192.168.66.2: seq=1 ttl=64 time=0.682 ms 64 bytes from 192.168.66.2: seq=2 ttl=64 time=0.524 ms 64 bytes from 192.168.66.2: seq=3 ttl=64 time=0.517 ms --- 192.168.66.2 ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 0.517/0.578/0.682 ms
Ja seadmes B
root@juhtmekaitsja-2 /tmp # ping 192.168.66.1 -c 4 PING 192.168.66.1 (192.168.66.1): 56 data bytes 64 bytes from 192.168.66.1: seq=0 ttl=64 time=0.962 ms 64 bytes from 192.168.66.1: seq=1 ttl=64 time=0.551 ms 64 bytes from 192.168.66.1: seq=2 ttl=64 time=0.542 ms 64 bytes from 192.168.66.1: seq=3 ttl=64 time=0.799 ms --- 192.168.66.1 ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 0.542/0.713/0.962 ms
Püsiv seadistus
Oluline on vastloodud seadistus teha püsivaks mõlemas seadmes:
wg showconf wg0 > /root/juhtmekaitsja-1.conf
ja teises
wg showconf wg0 > /root/juhtmekaitsja-2.conf
Seda on võimalik taastada käsuga
wg setconf wg0 /root/juhtmekaitsja-1.conf
Probleemid
DKMS module not available
If the following command does not list any module after you installed wireguard-dkms,
modprobe wireguard && lsmod | grep wireguard
or if creating a new link returns
# ip link add dev wg0 type wireguard
RTNETLINK answers: Operation not supported
you probably miss the linux headers.
These headers are available in linux-headers or linux-lts-headers depending of the kernel installed on your system.