Konfiguracja routingu i NAT w tunelach VPN – Kompletny przewodnik
Linux

Konfiguracja routingu i NAT w tunelach VPN – Kompletny przewodnik

Konfiguracja routingu i NAT w tunelach VPN – Kompletny przewodnik

Tunel VPN pozwala na bezpieczne przesyłanie danych pomiędzy sieciami, ale jego prawidłowa konfiguracja wymaga poprawnego routingu i NAT. Jeśli tunel działa, ale pakiety nie docierają do celu, problem często leży w trasowaniu ruchu lub konieczności zastosowania translacji adresów (NAT).

W tym artykule dowiesz się:
Jak skonfigurować routing w tunelach VPN
Jak skonfigurować NAT dla ruchu przechodzącego przez VPN
Jak rozwiązywać najczęstsze problemy związane z routingiem i NAT


1. Ustawienie poprawnego routingu w tunelach VPN

🔹 Jak działa routing w VPN?

Gdy klient VPN łączy się z serwerem, pakiety muszą być kierowane poprawnie między interfejsami VPN a lokalną siecią. W zależności od scenariusza, routing może działać w dwóch trybach:

1️⃣ Tryb pełnego tunelowania (Full Tunnel) – cały ruch przechodzi przez VPN.
2️⃣ Tryb podziału tunelowania (Split Tunnel) – tylko określone sieci są przesyłane przez VPN.

📌 Sprawdzenie tabeli routingu:

ip route show

📌 Dodanie trasy ręcznie:

sudo ip route add 192.168.2.0/24 via 10.10.10.1 dev tun0

📌 Usunięcie błędnej trasy:

sudo ip route del 192.168.2.0/24

📌 Trasy statyczne w /etc/network/interfaces (Debian/Ubuntu):

iface eth0 inet static
    address 192.168.1.1
    netmask 255.255.255.0
    gateway 192.168.1.254
    up ip route add 192.168.2.0/24 via 10.10.10.1

📌 Trasy statyczne w /etc/sysconfig/network-scripts/route-eth0 (CentOS/RHEL):

192.168.2.0/24 via 10.10.10.1 dev tun0

📢 Restart usług sieciowych:

sudo systemctl restart networking

2. Konfiguracja NAT dla ruchu w tunelach VPN

Konfiguracja routingu i NAT w tunelach VPN – Kompletny przewodnik
Konfiguracja routingu i NAT w tunelach VPN – Kompletny przewodnik

🔹 Kiedy stosować NAT w VPN?

NAT (Network Address Translation) jest konieczny, gdy:
Tunel VPN łączy prywatne sieci o tych samych adresach IP
Serwer VPN działa jako brama dla ruchu internetowego
Dostawca VPN wymaga translacji adresów IP

Czytaj  Zautomatyzowane Tworzenie Kopii Zapasowych w Linuxie: Skrypty i Narzędzia

🔹 Konfiguracja NAT na serwerze VPN (iptables)

📌 Sprawdzenie interfejsu VPN:

ip addr show | grep tun

📌 Włączenie przekazywania pakietów:

echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

📌 Reguła NAT w iptables:

sudo iptables -t nat -A POSTROUTING -o eth0 -s 192.168.2.0/24 -j MASQUERADE

📌 Zapisywanie reguł iptables:

Na Debian/Ubuntu:

sudo iptables-save | sudo tee /etc/iptables/rules.v4

Na CentOS/RHEL:

sudo iptables-save > /etc/sysconfig/iptables
sudo systemctl restart iptables

📌 Dla Firewalld (CentOS/RHEL 8+):

sudo firewall-cmd --add-masquerade --permanent
sudo firewall-cmd --reload

📌 Sprawdzenie działania NAT:

sudo iptables -t nat -L -n -v

3. Rozwiązywanie problemów z routingiem i NAT w tunelach VPN

🔹 Problem: Klient VPN łączy się, ale nie ma dostępu do sieci
✔ Sprawdź trasę:

ip route show

✔ Sprawdź, czy serwer VPN przekazuje pakiety:

cat /proc/sys/net/ipv4/ip_forward

Jeśli wynik to 0, włącz przekazywanie:

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

🔹 Problem: Brak dostępu do Internetu po połączeniu z VPN
✔ Sprawdź reguły NAT:

sudo iptables -t nat -L -n -v

✔ Dodaj regułę NAT:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

✔ Sprawdź serwer DNS (zmień na 8.8.8.8, jeśli potrzeba):

cat /etc/resolv.conf

🔹 Problem: Pakiety wysyłane przez tunel VPN nie wracają
✔ Sprawdź ustawienia NAT na routerze docelowym.
✔ Sprawdź, czy nie ma kolizji adresów IP po obu stronach tunelu.
✔ Jeśli sieci po obu stronach tunelu mają ten sam zakres IP, użyj NAT do translacji adresów.

🔹 Problem: Serwer VPN nie odbiera ruchu z klienta
✔ Sprawdź interfejsy VPN:

ip addr show

✔ Sprawdź zapory ogniowe (iptables/firewalld).


4. Przykładowe konfiguracje dla różnych tuneli VPN

🔹 OpenVPN – Routing i NAT

W pliku server.conf dodajemy:

push "route 192.168.2.0 255.255.255.0"
push "redirect-gateway def1"

Włączamy przekazywanie ruchu:

echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Dodajemy NAT w iptables:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

🔹 WireGuard – Routing i NAT

W pliku /etc/wireguard/wg0.conf na serwerze dodajemy:

[Interface]
Address = 10.10.10.1/24
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Na kliencie dodajemy trasę:

[Peer]
AllowedIPs = 192.168.1.0/24, 0.0.0.0/0

5. Podsumowanie

Routing VPN jest kluczowy dla poprawnego działania tunelu
NAT pozwala na dostęp do Internetu i eliminuje kolizje adresów
Firewall i iptables mogą blokować ruch – zawsze sprawdzaj reguły
Testowanie tras i NAT to podstawa przy diagnozowaniu problemów

Czytaj  Problemy z instalacją oprogramowania w Linux Ubuntu – jak je rozwiązać?
Polecane wpisy
Konfiguracja GRE z IPsec – Kompletny przewodnik
Konfiguracja GRE z IPsec – Kompletny przewodnik

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 Czytaj dalej

Konfiguracja APF – Zaawansowane opcje
Konfiguracja APF - Zaawansowane opcje

Konfiguracja APF - Zaawansowane opcje Ten poradnik rozszerza podstawową konfigurację firewalla APF, przedstawiając bardziej zaawansowane opcje umożliwiające dostosowanie ochrony sieciowej Czytaj dalej