Konfiguracja GRE z IPsec – Kompletny przewodnik
GRE (Generic Routing Encapsulation) to protokół umożliwiający enkapsulację pakietów różnych protokołów wewnątrz pakietów IP. Sam GRE nie zapewnia szyfrowania, dlatego w celu zabezpieczenia ruchu dodajemy warstwę IPsec.
W tym artykule pokażę, jak skonfigurować tunel GRE z szyfrowaniem IPsec na systemach Linux (Debian/Ubuntu/CentOS).
Dowiesz się:
✅ Jak skonfigurować interfejsy GRE
✅ Jak zabezpieczyć tunel GRE przy użyciu IPsec
✅ Jak testować i monitorować tunel
1. Instalacja wymaganych pakietów
sudo apt update
sudo apt install iproute2 strongswan
📢 Na CentOS/RHEL:
sudo yum install iproute2 strongswan
2. Konfiguracja interfejsów GRE
Założenia:
🔹 Serwer 1: 192.168.1.1 (publiczny adres IP)
🔹 Serwer 2: 192.168.2.1 (publiczny adres IP)
🔹 Tunel GRE: 10.10.10.1 (Serwer 1) ↔ 10.10.10.2 (Serwer 2)
Konfiguracja GRE na Serwerze 1

📢 Tworzymy interfejs GRE:
sudo ip tunnel add gre1 mode gre remote 192.168.2.1 local 192.168.1.1 ttl 255
sudo ip addr add 10.10.10.1/30 dev gre1
sudo ip link set gre1 up
📢 Dodajemy trasę:
sudo ip route add 10.10.10.2 via 10.10.10.1 dev gre1
📌 Sprawdzamy status interfejsu:
ip addr show gre1
Konfiguracja GRE na Serwerze 2
📢 Tworzymy interfejs GRE:
sudo ip tunnel add gre1 mode gre remote 192.168.1.1 local 192.168.2.1 ttl 255
sudo ip addr add 10.10.10.2/30 dev gre1
sudo ip link set gre1 up
📢 Dodajemy trasę:
sudo ip route add 10.10.10.1 via 10.10.10.2 dev gre1
📌 Sprawdzamy status interfejsu:
ip addr show gre1
📌 Testujemy GRE (pingujemy drugi serwer):
ping 10.10.10.1 # Z serwera 2
ping 10.10.10.2 # Z serwera 1
3. Konfiguracja IPsec do szyfrowania tunelu GRE
Konfiguracja IPsec na obu serwerach
📢 Edytujemy /etc/ipsec.conf
:
sudo nano /etc/ipsec.conf
📌 Dodajemy konfigurację:
config setup
charondebug="ike 2, knl 2, cfg 2"
conn GRE-IPsec
authby=secret
auto=start
keyexchange=ikev2
left=192.168.1.1
right=192.168.2.1
type=transport
esp=aes256-sha256
ike=aes256-sha256-modp2048
leftprotoport=47
rightprotoport=47
📢 Edytujemy /etc/ipsec.secrets
:
sudo nano /etc/ipsec.secrets
📌 Dodajemy wpis:
192.168.1.1 192.168.2.1 : PSK "SuperSilneHaslo"
📌 Restartujemy IPsec:
sudo systemctl restart strongswan
sudo systemctl enable strongswan
📢 Sprawdzamy status IPsec:
sudo ipsec status
📌 Sprawdzamy, czy tunel GRE działa przez IPsec:
sudo ip xfrm state
📌 Testujemy tunel GRE z szyfrowaniem:
ping 10.10.10.2 -I 10.10.10.1
4. Dodanie reguł iptables (zapory sieciowej)
📢 Umożliwiamy ruch GRE oraz IPsec:
sudo iptables -A INPUT -p gre -j ACCEPT
sudo iptables -A INPUT -p udp --dport 500 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 4500 -j ACCEPT
sudo iptables -A INPUT -p esp -j ACCEPT
sudo iptables -A FORWARD -i gre1 -j ACCEPT
📢 Zapisujemy reguły:
sudo apt install iptables-persistent
sudo netfilter-persistent save
5. Automatyczne uruchamianie tunelu GRE i IPsec po restarcie
📢 Tworzymy skrypt startowy:
sudo nano /etc/network/if-up.d/gre-ipsec
📌 Dodajemy zawartość:
#!/bin/bash
ip tunnel add gre1 mode gre remote 192.168.2.1 local 192.168.1.1 ttl 255
ip addr add 10.10.10.1/30 dev gre1
ip link set gre1 up
ip route add 10.10.10.2 via 10.10.10.1 dev gre1
ipsec restart
📢 Nadajemy uprawnienia do wykonywania:
sudo chmod +x /etc/network/if-up.d/gre-ipsec
6. Testowanie i monitorowanie
📢 Sprawdzamy status tunelu GRE:
ip tunnel show
ip addr show gre1
📢 Sprawdzamy status IPsec:
ipsec statusall
📢 Sprawdzamy szyfrowanie ruchu GRE:
sudo ip xfrm state
📢 Pingujemy tunel:
ping 10.10.10.2 -I 10.10.10.1
7. Podsumowanie
✔ GRE zapewnia wsparcie dla różnych protokołów, a IPsec dodaje bezpieczeństwo
✔ Uwierzytelnienie i szyfrowanie IPsec chronią dane przed podsłuchem
✔ Łatwa konfiguracja i zarządzanie interfejsami GRE oraz regułami IPsec
✔ Skalowalność i wsparcie dla wielu połączeń GRE/IPsec
🎯 Po wdrożeniu tej konfiguracji masz w pełni funkcjonalny, szyfrowany tunel GRE przez IPsec!