VPN - Wireguard (samba zdalny dostęp )

Awatar użytkownika
kobrawerde
Gibki Gibbon
Gibki Gibbon
Posty: 2037
Rejestracja: 10 wrz 2006, 16:00
Płeć: Mężczyzna
Wersja Ubuntu: 22.04
Środowisko graficzne: Cinnamon
Architektura: x86_64
Kontakt:

VPN - Wireguard (samba zdalny dostęp )

Post autor: kobrawerde »

Wireguard jak można wyczytać w internecie to stabilny, bezpieczny i bardzo szybki VPN dostępny w jądrze Linuksa już od wersji ( kernel 5.6 ). Konfiguracja Wireguard-a jest o wiele prostsza niż dość dobrze znanego ( przynajmniej z nazwy ) OpenVPN a jednocześnie góruje nad konkurencją w kwestii szybkości działania i konsumpcji zasobów.
Instalacja WireGuarda:

Kod: Zaznacz cały

sudo apt install wireguard
Serwer jak i klient korzysta z tego samego oprogramowania.
Po zainstalowaniu pakietu musimy włączyć przekierowanie IP na serwer WireGuard-a.
Edytujemy plik:

Kod: Zaznacz cały

sudo nano /etc/sysctl.conf
usuwamy znak # który jest przed wpisami :
net.ipv4.ip_forward=1 ...... dla IPv4
lub
net.ipv6.conf.all.forwarding=1 .....dla IPv6
zapisujemy w nano : Ctrl+x ...t ...enter
Następnie ładujemy ponownie konfigurację:

Kod: Zaznacz cały

sudo sysctl -p
Teraz tworzymy na serwerze i klientach wymagane prywatne i publiczne klucze np na serwerze : server.key / server.pub i kliencie klient1.key / klient1.pub
Tworzymy klucz na serwerze:

Kod: Zaznacz cały

sudo su
cd /etc/wireguard
umask 077; wg genkey | tee server.key | wg pubkey > server.pub
Tworzymy klucz na kliencie:

Kod: Zaznacz cały

sudo su
cd /etc/wireguard
umask 077; wg genkey | tee klient1.key | wg pubkey > klient1.pub
Sprawdzamy klucz np:

Kod: Zaznacz cały

ls -al
cat /etc/wireguard/klient1.key
wDpA3lxpr1umsfsfLPSoMEhXExpjwzHuTTvtkvZGg2fFA=
cat /etc/wireguard/klient1.pub
GdvfdbvdbhdGjnscncsjdchYbbbxpjwz1BH4c07ZfGg2fFA=
Najlepiej jest skopiować oba publiczne klucze do pliku tekstowego i zapisać je do późniejszej konfiguracji.

Budowanie interfejsu:
Kolejnym krokiem jest utworzenie po jednym wirtualnym interfejsie sieciowym dla każdego urządzenia. Domyślna wartość to wg0.
Wymagany jest także zakresu adresów IP różny od najczęściej wykorzystywanych w sieciach LAN : 192.168.x.x ...
Wybieramy np. 10.0.10.x
Konfigurację serwera i klientów zapisujemy w :

Kod: Zaznacz cały

/etc/wireguard/wg0.conf
Konfiguracja serwera:

Kod: Zaznacz cały

[Interface]
Address = 10.0.10.1/24,fd42:42:42::1/64
SaveConfig = true
PrivateKey = Klucz server.key
ListenPort = 51820
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -j MASQUERADE; iptables -A FORWARD -o wg0 -j ACCEPT
PostUp = ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -j MASQUERADE; ip6tables -A FORWARD -o wg0 -j ACCEPT
PostDown = iptables -F; iptables -t nat -F
PostDown = ip6tables -F; ip6tables -t nat -F
DNS = Adres IP routera WLAN 
[Peer]
PublicKey = Klucz klient1.pub
AllowedIPs = 10.0.10.2/32,fd42:42:42::/64
Powinniśmy przekazać serwerowi, aby korzystał z routera WLAN jako z serwera DNS ( wiersz z DNS = )
a klient WireGuarda powinien skorzystać z opcji DNS = 10.0.10.1, aby odpytywać komputer z WireGuard-em jako serwer DNS.

Konfiguracja klienta:

Kod: Zaznacz cały

[Interface]
Address = 10.0.10.2/32,fd42:42:42::2/64
PrivateKey = Klucz klient1.key
DNS = 10.0.10.1
[Peer]
PublicKey = Klucz server.pub
Endpoint = adres-DynDNS.com:51820
AllowedIPs = 0.0.0.0/0,::/0
PersistentKeepalive = 20
Domyślnym portem WireGuard jest 51820 ale możemy wpisać inny i przekierować w/w na Routerze na serwer Wireguarda.
Aby sprawdzić ustawienia wykonujemy polecenie:

Kod: Zaznacz cały

sudo wg-quick up wg0
wyłączamy:

Kod: Zaznacz cały

sudo wg-quick down wg0
Aby wyświetlił informacje o aktualnym statusie serwera / klienta wpisujemy :

Kod: Zaznacz cały

sudo wg
Możemy sprawdzić czy adres serwera jest osiągalne wydajemy polecenie na kliencie:

Kod: Zaznacz cały

ping 10.0.10.1
Jeśli wszystko jest OK żeby aktywować usługę wg0 automatycznie przy starcie systemu, wydajemy polecenie :

Kod: Zaznacz cały

sudo systemctl enable wg-quick@wg0
Jeśli przy uruchomieniu klienta Wireguard mamy brak internetu w przeglądarce musimy zrestartować połączenie sieciowe np.

Kod: Zaznacz cały

sudo systemctl restart network-manager
lub poeksperymentować z serwerami DNS ...np. wpisując zamiast Routera serwer DNS google : 8.8.8.8
Dostęp do zasobów Samby powinniśmy uzyskać wpisując adres serwera Wireguarda :

Kod: Zaznacz cały

smb://10.0.10.1/zasób-samby/
Jeśli interesuje kogoś żeby uzyskać podobną konfigurację i dostęp do zasobów Samby ale z programem OpenVPN to polecam przeczytać :
viewtopic.php?f=137&t=183710&p=1027954& ... a#p1027954
Jeśli korzystamy z usługi : Dynamic DNS Client z https://freedns.afraid.org/
jednak nasz router nie ma opcji aktualizacji tego serwisu możemy skorzystać z usługi cron i skryptu ( uruchamianego co 5 min ) na serwerze Wireguard-a :
Tworzymy skrypt o nazwie np. freedns.sh wpisujemy zawartość ad1 ... kopiujemy i nadajemy uprawnienia:

Kod: Zaznacz cały

sudo nano /etc/root/freedns.sh
chmod +x /etc/root/freedns.sh
ad1

Kod: Zaznacz cały

#!/bin/sh
#FreeDNS updater script

UPDATEURL="http://freedns.afraid.org/dynamic/update.php?<tu_wpisujemy_token_z_afraid.org>"
DOMAIN="_YOURDOMAINHERE_"

registered=$(nslookup $DOMAIN|tail -n2|grep A|sed s/[^0-9.]//g)

  current=$(wget -q -O - http://checkip.dyndns.org|sed s/[^0-9.]//g)
       [ "$current" != "$registered" ] && {                           
          wget -q -O /dev/null $UPDATEURL 
          echo "DNS updated on:"; date
  }
uwaga w miejsce między ? .............a " czyli : .....<tu_wpisujemy_token_z_afraid.org> ............... wpisujemy nasz token :razz:
Wpis do usługi cron wykonywany co 5 minut:

Kod: Zaznacz cały

crontab -e
i wpis :

Kod: Zaznacz cały

2,7,12,17,22,27,32,37,42,47,52,57 * * * * sleep 15 ; /root/freedns.sh > /dev/null
pozdro! :razz:
ODPOWIEDZ

Wróć do „Software-Sieć”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 61 gości