GRE propojí dvě zařízení tunelem přes IPv4. Hodí se například pro směrování privátní sítě mezi dvěma VPS v důvěryhodné interní síti vpsFree. Níže je jednoduchý tunel mezi těmito ukázkovými adresami:
| VPS A | VPS B | |
|---|---|---|
| vnější adresa VPS | 185.8.164.10/32 | 185.8.164.20/32 |
| adresa uvnitř tunelu | 10.0.0.1 | 10.0.0.2 |
Vnější adresy jsou příklady z playground rozsahu vpsFree. Nahraď je adresami
/32, které máš skutečně přidělené ke svým VPS. Privátní adresy tunelu můžeš
ponechat, pokud se nekříží s jinou sítí, kterou používáš.
GRE používá IP protokol 47, nikoliv TCP nebo UDP port 47. Pokud na VPS filtruješ provoz, povol protokol 47 z vnější adresy druhého konce.
Tento postup používej jen přes důvěryhodnou interní síť vpsFree, kde je vynuceno vlastnictví zdrojových adres. Samotné GRE provoz nešifruje ani neověřuje protistranu, proto jej neposílej přes veřejný internet. Pro spojení přes veřejný internet použij WireGuard.
Na VPS A spusť:
#!/usr/bin/env bash set -eu ip tunnel add gre1 mode gre \ local 185.8.164.10 remote 185.8.164.20 ttl 255 ip address add 10.0.0.1/30 dev gre1 ip link set dev gre1 mtu 1476 up
Na VPS B spusť:
#!/usr/bin/env bash set -eu ip tunnel add gre1 mode gre \ local 185.8.164.20 remote 185.8.164.10 ttl 255 ip address add 10.0.0.2/30 dev gre1 ip link set dev gre1 mtu 1476 up
Spojení ověř z obou stran:
#!/usr/bin/env bash # Na VPS A ping -c 3 10.0.0.2
#!/usr/bin/env bash # Na VPS B ping -c 3 10.0.0.1
Tyto příkazy platí jen do restartu. Rozhraní můžeš odstranit příkazem
ip tunnel del gre1. Další volby popisuje
manuál ip-tunnel(8).
Výchozí šablona Debianu používá ifupdown. Na VPS A ulož do
/etc/network/interfaces.d/gre1 tuto konfiguraci:
auto gre1 iface gre1 inet tunnel mode gre address 10.0.0.1 netmask 255.255.255.252 dstaddr 10.0.0.2 local 185.8.164.10 endpoint 185.8.164.20 ttl 255 mtu 1476
Na VPS B použij:
auto gre1 iface gre1 inet tunnel mode gre address 10.0.0.2 netmask 255.255.255.252 dstaddr 10.0.0.1 local 185.8.164.20 endpoint 185.8.164.10 ttl 255 mtu 1476
address a dstaddr jsou adresy uvnitř tunelu. local a
endpoint jsou naopak jeho vnější konce. Na obou VPS pak rozhraní
aktivuj:
ifup gre1
Podporované volby najdeš v manuálu interfaces(5).
Pokud tvoje distribuce nepoužívá ifupdown, vytvoř stejný GRE tunel správcem sítě dané distribuce. Aktuální volby popisuje dokumentace NetworkManageru a systemd-networkd.
Základní GRE přes IPv4 přidává režii, proto příklad používá MTU 1476 místo běžných 1500 bajtů. Pokud má vnější cesta nižší MTU nebo se větší přenosy zasekávají, MTU na obou koncích dál sniž.
Když tunel nefunguje, ověř vnější adresy příkazem ip address, povolení IP
protokolu 47 ve firewallu a stav příkazem ip -details tunnel show gre1.
Pak zkontroluj, že se local na každé straně rovná její vnější adrese a
remote nebo endpoint vnější adrese protistrany.