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

🔹 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

Polecane wpisy
Serwer FTP z aktywnym trybem transferu (vsftpd) – konfiguracja i wyzwania
Serwer FTP z aktywnym trybem transferu (vsftpd) – konfiguracja i wyzwania

Serwer FTP z aktywnym trybem transferu (vsftpd) – konfiguracja i wyzwania vsftpd (Very Secure FTP Daemon) to jeden z najpopularniejszych Czytaj dalej

Jaki Linux na słaby komputer?
Jaki Linux na słaby komputer?

Jaki Linux na słaby komputer? Linux to popularny system operacyjny, który może działać na szerokim spektrum urządzeń, od serwerów po Czytaj dalej

Marek "Netbe" Lampart Inżynier informatyki Marek Lampart to doświadczony inżynier informatyki z ponad 25-letnim stażem w zawodzie. Specjalizuje się w systemach Windows i Linux, bezpieczeństwie IT, cyberbezpieczeństwie, administracji serwerami oraz diagnostyce i optymalizacji systemów. Na netbe.pl publikuje praktyczne poradniki, analizy i instrukcje krok po kroku, pomagając administratorom, specjalistom IT oraz zaawansowanym użytkownikom rozwiązywać realne problemy techniczne.