Skip to content

Wireguard stjörnuskipan


Hér munum við setja upp WireGuard VPN í stjörnuskipan (e. hub and spoke, star topology) þar sem við tvær stöðvar munu getað talað saman án þess að þörf sé á því að aframsenda port og opna göt í eldvegg.

Uppsetning Wireguard á netaldi

Netaldið (e. hub) er keyrður á FreeBSD þjóni í skýi NetCup, sjá [uppsetningarleiðbeiningar] (https://thg191.gitlab.io/docs/FreeBSD/freebsd-netcup/).

Byrjum á því að setja upp WireGuard

# pkg install wireguard

Næst gerum við wg lykla fyrir alla hýsla í stjörnunetinu, hér verða þrír settir upp fyrir netaldið, hnút 1 og hnút 2.

Lyklagerðarferlið er þannig að fyrst er gerður einkalykill sem er svo notaður til að reikna út dreifilykilinn, með eftirfarandi skipunum:

# wg genkey > hysill-a.key
# wg pubkey < hysill-a.key > hysill-a.pub

eða í einni skipun

# wg genkey | tee netald.key | wg pubkey > netald.pub
þar sem þið getið notað meira lýsandi orð á hýslinum ykkar en netald. Best er að gera lyklana á þeim hýsli sem mun eiga lykilinn, þannig mun einkalykillinn aldrei yfirgefa hýsilinn.

Note

Við þurfum dreifilykil allra hnúta í stjörnunetinu til að klára uppsetningu netaldsins.

Skrifum nýja stillingaskrá í /usr/local/etc/wireguard/wg0.conf.

wg0.conf
# Staðværar stillingar netalds
[Interface]
PrivateKey = <einkalykill netalds>
Address = 10.0.0.1/32                   # (1)!
ListenPort = 444                        # (2)!

# Stillingar hnúts 1
[Peer]
PublicKey = <dreifilykill hnúts 1>
AllowedIPs = 10.0.0.2/32               # (3)!

# Stillingar hnúts 2
[Peer]
PublicKey = <dreifilykill hnúts 1>
AllowedIPs = 10.0.0.3/32
  1. IP fang á wg einkanetinu, getur verið hvað sem er svo lengi sem það er á IP fangi sem er úthlutað fyrir staðarnet.
  2. wg er yfirleitt á porti í grennd við 51280, hef heyrt af því að sum tæki geti verið leiðinleg á kviklegum tengjum (e. dynamic range), notum því tengi 444, það er notað í einhverjar sjaldgæfar þjónustur og er gott að muna.
  3. Beiðnir frá hnúti 1 eru einungis leyfðar ef þær koma frá þessu IP fangi.

Note

Heitið á þessari skrá ræður því hvað nettengildið heitir, það mun birtast sem wg0 þegar ifconfig er keyrt.

Netaldið þarf að beina beiðnum milli tengilda til að virkja samskipti milli hnúta, en það er eiginleiki sem við þurfum að breyta í kjarnanum. Eiginleikinn sem við breytum nefnist net.inet.ip.forwarding, og sjálfgefna gildið er 0. Virkjum það með skipun:

# sysctl net.inet.ip.forwarding=1

Bætum þessari skipun í wg stilliskrána þannig að þessi skipun sé keyrð þegar wg er virkjað:

wg0.conf
# Staðværar stillingar netalds
[Interface]
PrivateKey = <einkalykill netalds>
Address = 10.0.0.1/32                   
ListenPort = 444                        

PreUp = sysctl net.inet.ip.forwarding=1

# Stillingar hnúts 1
[Peer]
PublicKey = <dreifilykill hnúts 1>
AllowedIPs = 10.0.0.2/32               

# Stillingar hnúts 2
[Peer]
PublicKey = <dreifilykill hnúts 1>
AllowedIPs = 10.0.0.3/32

Virkjum WireGuard þjónustuna

sysrc wireguard_enable=YES
sysrc wireguard_interfaces=wg0

Keyrum þjónustuna

# service wireguard start

Uppsetning á hnútum

Wireguard þarf einungis að geta talað við netaldið, það beinir síðan samskiptum til hinna þjónana. Setjið upp wireguard og gerið lykla eins og lýst er hér að framan. Gerið því næst stillingaskrá:

wg0.conf
# Staðværar stillingar
[Interface]
PrivateKey = <einkalykill hnúts>
Address = 10.0.0.2/32
ListenPort = 444

# Stillingar netalds
[Peer]
PublicKey = <dreifilykill netalds>
Endpoint = <IP fang netalds, það opinbera>:444
AllowedIPs = 10.0.0.0/24
PersistentKeepAlive = 25

Nú geta allir meðlimir netsins talað saman.