FROG VPS i WireGuard

W jaki sposób za darmo i bezpiecznie połączyć dwa lub więcej oddziałów, korzystając z VPN WireGuard? Rozważmy taki scenariusz: mamy rodziców w innym mieście i co jakiś czas musimy im coś naprawić na komputerze, ale nie chcemy korzystać z TeamViewer z różnych względów, takich jak bezpieczeństwo czy ograniczenia. Taki dostęp możemy zrealizować, wykorzystując darmowy serwer FROG od Mikrusa oraz WireGuard.

RAM: 256MB

Dysk: 3GB

System: Alpine

Technologia: LXC

Koszt serwera VPS: 5zł / aż do śmierci 😉



To w zupełności wystarczy do zrealizowania naszego scenariusza. Taka konfiguracja w pełni wystarczy do płynnego łączenia się przez VNC z komputerami naszych rodziców.

Sama konfiguracja będzie dość nietypowa, ponieważ nie posiadamy adresu IPv4, lecz IPv6, jednak otrzymujemy kilka portów do wykorzystania w ramach IPv4.

Ok, wiec zaczynamy, jak zawsze od aktualizacji systemu.

sudo apk update
sudo apk add wireguard-tools

Po instalacji, teraz możemy wygenerować klucze prywaty oraz publiczny.

wg genkey | tee prywatny_klucz | wg pubkey > publiczny_klucz

Teraz możemy zająć sie konfiguracją pliku serwera WireGuard. Musimy stworzyć plik konfiguracyjny /etc/wireguard/wg0.conf

[Interface]
Address = 100.10.10.1/24
ListenPort = 51820
PrivateKey = prywatny_klucz_serwera

# Przekierowanie portów z adresacji IPv4 na IPv6

PostUp = iptables -t nat -A PREROUTING -p udp --dport 22321 -j DNAT --to-destination [::1]:51820
PostUp = iptables -t nat -A PREROUTING -p udp --dport 32321 -j DNAT --to-destination [::1]:51820
PostUp = iptables -t nat -A PREROUTING -p udp --dport 42321 -j DNAT --to-destination [::1]:51820
PostDown = iptables -t nat -D PREROUTING -p udp --dport 22321 -j DNAT --to-destination [::1]:51820
PostDown = iptables -t nat -D PREROUTING -p udp --dport 32321 -j DNAT --to-destination [::1]:51820
PostDown = iptables -t nat -D PREROUTING -p udp --dport 42321 -j DNAT --to-destination [::1]:51820

# Nasz klient np. komputer rodziców.

# Komputer np.Mamy
[Peer]
PublicKey = publiczny_klucz_klienta
AllowedIPs = 100.10.10.2/32


# Komputer np. Taty
[Peer]
PublicKey = publiczny_klucz_klienta
AllowedIPs = 100.10.10.3/32

Ok! Gdy już mamy wstępnie skonfigurowany serwer, teraz musimy skonfigurować klienta. Musimy tak samo jak dla serwera wygenerować parę kluczy prywatny i publiczny. Najprościej będzie nam to zrobić na serwerze.

wg genkey | tee prywatny_klucz_mama | wg pubkey > publiczny_klucz_mama

Teraz tworzymy plik konfiguracyjny klienta możemy go nazwać mama_vpn.conf

[Interface]
Address = 100.10.10.2/32
PrivateKey = prywatny_klucz_mamy
[Peer]
PublicKey = publiczny_klucz_serwera
Endpoint = frog01.mikr.us:22321  42321
AllowedIPs = 100.10.10.0/24
PersistentKeepalive = 21

W systemie Windows musisz zaimportować plik z konfiguracją do klienta.

Teraz możemy uruchomić nasz serwer i zobaczyć czy wszytko działa.

sudo wg-quick up wg0
sudo rc-update add wireguard

UWAGA !!! Jeśli pojawią się problemy z połączeniem, trzeba sprawdzić poprawność konfiguracji. Najczęstsze problemy to błędnie wpisane adresy IP i maska podsieci, oraz źle wpisane klucze. Należy spokojnie zweryfikować, czy dany klucz został prawidłowo wpisany.

Teraz możesz cieszyć sie bezpiecznym i niezależnym połączeniem VPN z urządzeniami na których ci zależy 🙂

Warto zainteresować sie projektami:

1.https://github.com/WeeJeWel/wg-easy

2.https://github.com/vx3r/wg-gen-web?tab=readme-ov-file