Konfiguracja WireGuard – szybki i bezpieczny VPN
WireGuard to nowoczesny, lekki i bezpieczny protokół VPN, który oferuje wyższą wydajność i lepszą ochronę niż tradycyjne rozwiązania, takie jak OpenVPN czy IPsec. Jest łatwy w konfiguracji, a dzięki szyfrowaniu opartego na krzywych eliptycznych (Curve25519) zapewnia solidną ochronę transmisji.
W tym poradniku dowiesz się:
✅ Jak skonfigurować WireGuard na serwerze i kliencie
✅ Jak wygenerować klucze publiczne i prywatne
✅ Jak skonfigurować interfejsy WireGuard i routing
1. Instalacja WireGuard
sudo apt update
sudo apt install wireguard
📢 Na CentOS/RHEL:
sudo yum install epel-release
sudo yum install wireguard-tools
📢 Na Arch Linux:
sudo pacman -S wireguard-tools
2. Generowanie kluczy publicznych i prywatnych
WireGuard używa kluczy publicznych i prywatnych do uwierzytelniania i szyfrowania. Każdy klient oraz serwer potrzebuje unikalnego zestawu kluczy.

📌 Tworzymy katalog na klucze:
mkdir -p /etc/wireguard/keys
chmod 700 /etc/wireguard/keys
cd /etc/wireguard/keys
📌 Generujemy klucze serwera:
wg genkey | tee privatekey | wg pubkey > publickey
📌 Generujemy klucze klienta:
wg genkey | tee client_privatekey | wg pubkey > client_publickey
📌 Sprawdzamy klucze:
cat privatekey
cat publickey
3. Konfiguracja serwera WireGuard
📢 Tworzymy plik konfiguracyjny:
sudo nano /etc/wireguard/wg0.conf
📌 Dodajemy konfigurację serwera:
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.0.0.2/32
📌 Podmieniamy SERVER_PRIVATE_KEY
na rzeczywisty klucz:
sudo sed -i "s|SERVER_PRIVATE_KEY|$(cat /etc/wireguard/keys/privatekey)|" /etc/wireguard/wg0.conf
📌 Włączamy przekazywanie pakietów:
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
📌 Uruchamiamy i dodajemy WireGuard do autostartu:
sudo systemctl start wg-quick@wg0
sudo systemctl enable wg-quick@wg0
📌 Sprawdzamy status:
sudo systemctl status wg-quick@wg0
4. Konfiguracja klienta WireGuard
📢 Tworzymy plik konfiguracyjny na kliencie:
sudo nano /etc/wireguard/wg0.conf
📌 Dodajemy konfigurację klienta:
[Interface]
Address = 10.0.0.2/24
PrivateKey = CLIENT_PRIVATE_KEY
DNS = 8.8.8.8
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERWER_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
📌 Podmieniamy CLIENT_PRIVATE_KEY
na rzeczywisty klucz:
sudo sed -i "s|CLIENT_PRIVATE_KEY|$(cat /etc/wireguard/keys/client_privatekey)|" /etc/wireguard/wg0.conf
📌 Uruchamiamy WireGuard na kliencie:
sudo systemctl start wg-quick@wg0
sudo systemctl enable wg-quick@wg0
📌 Sprawdzamy status:
sudo wg show
5. Konfiguracja routingu i przekierowania ruchu
📌 Dodajemy reguły iptables na serwerze:
sudo iptables -A FORWARD -i wg0 -o eth0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
📌 Zapisujemy reguły iptables:
sudo apt install iptables-persistent
sudo netfilter-persistent save
📌 Testujemy tunel VPN:
ping 10.0.0.1
ping 8.8.8.8
Jeśli odpowiedzi wracają, WireGuard działa poprawnie! 🎉
6. Automatyczne uruchamianie WireGuard
📢 Dodajemy usługę do autostartu:
sudo systemctl enable wg-quick@wg0
📢 Sprawdzamy interfejsy:
ip a
📢 Lista podłączonych klientów:
sudo wg
7. Testowanie połączenia
📌 Pingujemy serwer z klienta:
ping 10.0.0.1
📌 Pingujemy klienta z serwera:
ping 10.0.0.2
📌 Sprawdzamy stan WireGuard:
sudo wg show
Jeśli wszystko działa poprawnie, połączenie VPN jest gotowe do użytku! 🎉
8. Podsumowanie
✔ WireGuard to nowoczesne, szybkie i bezpieczne rozwiązanie VPN
✔ Prosta konfiguracja i niskie zużycie zasobów
✔ Łatwe zarządzanie kluczami i konfiguracją
✔ Możliwość szybkiego uruchomienia w środowiskach produkcyjnych
📌 Dzięki tej konfiguracji masz w pełni funkcjonalny serwer VPN oparty na WireGuard!