Konfiguracja OpenVPN w trybie site-to-site – bezpieczne połączenie między sieciami
OpenVPN to jedno z najpopularniejszych i najbezpieczniejszych rozwiązań VPN. Tryb site-to-site pozwala na bezpośrednie połączenie dwóch oddzielnych sieci lokalnych, umożliwiając swobodny przepływ danych między nimi.
W tym artykule pokażemy:
✅ Jak skonfigurować OpenVPN w trybie site-to-site
✅ Jak wygenerować certyfikaty i klucze dla serwera oraz klienta
✅ Jak skonfigurować routing i przekierowanie ruchu między sieciami
1. Jak działa OpenVPN w trybie site-to-site?
W trybie site-to-site serwer VPN i klient VPN działają jako routery, tunelując cały ruch między dwiema sieciami lokalnymi.
🔹 Serwer OpenVPN: znajduje się w jednej sieci i nasłuchuje połączeń od klientów.
🔹 Klient OpenVPN: znajduje się w drugiej sieci i łączy się z serwerem, przekierowując ruch między podsieciami.

📌 Przykładowy schemat połączenia:
[LAN 1] — (192.168.1.0/24) — [Serwer OpenVPN] — INTERNET — [Klient OpenVPN] — (192.168.2.0/24) — [LAN 2]
2. Instalacja OpenVPN
sudo apt update
sudo apt install openvpn easy-rsa
📢 Na CentOS/RHEL:
sudo yum install epel-release
sudo yum install openvpn easy-rsa
3. Generowanie certyfikatów i kluczy
OpenVPN wykorzystuje certyfikaty do szyfrowania ruchu.
📌 Przechodzimy do katalogu Easy-RSA:
cd /etc/openvpn/
mkdir easy-rsa
ln -s /usr/share/easy-rsa/* easy-rsa/
cd easy-rsa
📌 Inicjalizujemy Easy-RSA:
./easyrsa init-pki
📌 Tworzymy certyfikat CA:
./easyrsa build-ca
📌 Generujemy certyfikat i klucz serwera:
./easyrsa gen-req server nopass
./easyrsa sign-req server server
📌 Tworzymy klucz Diffie-Hellmana (do szyfrowania):
./easyrsa gen-dh
📌 Generujemy certyfikat i klucz klienta:
./easyrsa gen-req client nopass
./easyrsa sign-req client client
Pliki server.crt, server.key, ca.crt i dh.pem przenosimy do /etc/openvpn/server/
, a pliki klienta do /etc/openvpn/client/
.
4. Konfiguracja serwera OpenVPN
📢 Tworzymy plik konfiguracyjny serwera:
sudo nano /etc/openvpn/server.conf
📌 Dodajemy konfigurację:
port 1194
proto udp
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
key /etc/openvpn/server/server.key
dh /etc/openvpn/server/dh.pem
server 10.8.0.0 255.255.255.0
push "route 192.168.2.0 255.255.255.0"
keepalive 10 120
tls-auth /etc/openvpn/server/ta.key 0
cipher AES-256-CBC
auth SHA256
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3
📌 Uruchamiamy OpenVPN:
sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server
📢 Sprawdzamy status:
sudo systemctl status openvpn@server
5. Konfiguracja klienta OpenVPN (druga sieć)
📢 Tworzymy plik /etc/openvpn/client.conf
na kliencie:
client
dev tun
proto udp
remote SERWER_VPN_IP 1194
ca /etc/openvpn/client/ca.crt
cert /etc/openvpn/client/client.crt
key /etc/openvpn/client/client.key
tls-auth /etc/openvpn/client/ta.key 1
cipher AES-256-CBC
auth SHA256
persist-key
persist-tun
verb 3
📌 Uruchamiamy OpenVPN na kliencie:
sudo systemctl start openvpn@client
sudo systemctl enable openvpn@client
📢 Sprawdzamy status:
sudo systemctl status openvpn@client
6. Konfiguracja routingu między sieciami
📌 Na serwerze włączamy przekazywanie pakietów:
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
📌 Dodajemy reguły iptables (serwer VPN):
sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
📌 Na kliencie dodajemy trasę do drugiej sieci:
sudo route add -net 192.168.1.0/24 gw 10.8.0.1
7. Testowanie połączenia site-to-site
📌 Sprawdzamy tunel VPN:
ip a | grep tun
📌 Pingujemy urządzenia w drugiej sieci:
ping 192.168.1.1
ping 192.168.2.1
📢 Jeśli odpowiedzi wracają, połączenie site-to-site działa poprawnie! 🎉
8. Podsumowanie
✔ OpenVPN w trybie site-to-site pozwala na połączenie dwóch sieci przez VPN.
✔ Generowanie certyfikatów i kluczy zapewnia bezpieczeństwo transmisji.
✔ Routing i przekierowanie pakietów umożliwia komunikację między urządzeniami.
✔ OpenVPN to elastyczne i bezpieczne rozwiązanie VPN dla firm i sieci domowych.
📌 Teraz Twoje dwie sieci są bezpiecznie połączone przez OpenVPN!