Přeskočit na obsah
Networks

Blog

GRE tunely pro IPv4: kdy je potřebujete a jak je nastavit

Poslední aktualizace RTM NetworksPřeloženo z angličtiny. Číst originál

Tunel vám umožní používat IPv4 adresy na serveru, který by je jinak nemohl nést. Blok announcuje síť, která to umí, a tunel přenáší jeho provoz na váš server a zpět. Je to řešení, když váš poskytovatel nenabízí bring your own IP (BYOIP), když nemáte číslo AS nebo když potřebujete méně než 256 adres, které internet samostatně routuje.

Co tunel ve skutečnosti dělá

Pakety pro váš blok dorazí do sítě, která ho announcuje. Tam se každý paket zabalí do nového, adresovaného vašemu serveru, a pošle se běžným internetem. Váš server ho rozbalí a vidí původní paket, jako by byly adresy nakonfigurované na lokálním rozhraní.

Text
Original packet:  [IP header | data]
GRE packet:       [outer IP | GRE header | IP header | data]

Odpovědi jdou stejnou cestou opačně: váš server je zabalí, pošle je na druhý konec tunelu a tamější síť je doručí. Právě tuto zpáteční cestu má většina nastavení špatně a konfigurace níže ukazuje proč.

Kdy je tunel lepší než BYOIP

BYOIP umožňuje poskytovateli cloudu nebo hostingu announcovat váš blok z jeho vlastní sítě (kteří poskytovatelé to umějí). Kde je k dispozici a máte aspoň /24, je to čistší možnost: žádný hop navíc, žádný další bod selhání a plná šířka pásma poskytovatele. Tunel je lepší volba ve čtyřech případech.

  • Váš poskytovatel BYOIP nenabízí. Například Scaleway to ve své dokumentaci říká přímo a několik dalších ho přijímá jen na žádost a jen pro některé produkty, například Infomaniak, TransIP a UpCloud. Další, mezi nimi Contabo, Exoscale, Hostinger a Akamai Cloud, nezveřejňují žádný postup.
  • Potřebujete méně než 256 adres. /24 je nejmenší blok, který sítě přijímají do svých routovacích tabulek, a BYOIP žádného poskytovatele pod něj nejde. Tunel může doručit /29 nebo jedinou adresu.
  • Nemáte ASN a poskytovatel ho chce. Někteří poskytovatelé přijímají váš prostor jen přes BGP session s vaším vlastním číslem AS. Tunel nepotřebuje ani jedno.
  • Chcete stejné adresy na více místech, nebo volnost stěhování. Announcement zůstává, kde je; tunel jde všude, kam jde váš server.

Cenou je oklika. Provoz putuje na druhý konec tunelu, než dorazí k vám, takže zvolte koncový bod blízko svého serveru a pamatujte, že strop určuje kapacita tunelu, ne port vašeho serveru.

GRE, nebo WireGuard

Oba přenášejí stejný provoz; liší se v tom, co potřebuje cesta mezi oběma konci.

GREWireGuard
ŠifrováníŽádnéAno
Režie na IPv424 bajtů60 bajtů
Za NAT nebo CGNATNefunguje spolehlivěFunguje
PodporaVětšina routerů a jádro LinuxuJádro Linuxu, FreeBSD, OpenBSD, MikroTik RouterOS 7, OpenWrt a EdgeOS; než s ním na operátorském routeru počítáte, ověřte si dokumentaci výrobce
Nejlepší, kdyžCesta je důvěryhodná a nejvíc záleží na propustnostiProvoz prochází sítěmi, které nemáte pod kontrolou, nebo koncový bod nemá veřejnou adresu

Vlastní seznam platforem WireGuardu a dokumentace RouterOS od MikroTiku uvádějí, kde běží (ověřeno 22. října 2026).

Pokud je váš koncový bod za NAT, je rozhodnuto za vás: WireGuard. Totéž platí pro Azure, který GRE ve svých virtuálních sítích blokuje.

MTU a MSS: klasická chyba

Zapouzdření přidává hlavičky, takže největší paket, který se do tunelu vejde, je menší než 1 500 bajtů běžné ethernetové linky: 1 476 bajtů pro GRE přes IPv4 a WireGuard běžně běží s 1 420. Pokud to nastavíte špatně, uvidíte klasický příznak: malé požadavky fungují, zatímco velká stahování a TLS handshaky visí, protože pakety, které se nevejdou, se zahazují a zprávy, které by to měly hlásit, se cestou často filtrují.

Předejdou tomu dvě nastavení. Nastavte MTU rozhraní tunelu na správnou hodnotu a omezte maximální velikost TCP segmentu (MSS) u provozu, který tunelem routujete, aby se oba konce shodly na posílání paketů, které se vejdou. Obě hodnoty posíláme s každým tunelem a na žádost je změníme.

Minimální nastavení v Linuxu

Příklad níže přivede blok na jediný linuxový server přes GRE. Adresy jsou z dokumentačních rozsahů: 203.0.113.1 je veřejná adresa vašeho serveru, 198.51.100.1 druhý konec tunelu a 192.0.2.0/24 blok.

Shell
# 1. The tunnel, from your server to the far end
ip tunnel add gre1 mode gre local 203.0.113.1 remote 198.51.100.1 ttl 255
ip link set gre1 mtu 1476 up
ip addr add 10.0.0.2/30 dev gre1

# 2. An address from the block on the server itself
ip addr add 192.0.2.10/32 dev lo

# 3. Replies from the block go back through the tunnel
ip rule add from 192.0.2.0/24 lookup 100
ip route add default via 10.0.0.1 dev gre1 table 100

Krok 3 lidé vynechávají. Bez něj odcházejí odpovědi z 192.0.2.10 vlastním uplinkem vašeho poskytovatele se zdrojovou adresou, kterou vám tento poskytovatel nikdy nedal, a jeho filtry proti spoofingu je zahodí. Pokud vaše distribuce zapíná přísné reverse-path filtering, nastavte ho pro tunel na volné (sysctl -w net.ipv4.conf.gre1.rp_filter=2).

Pokud server routuje blok dál na virtuální stroje nebo kontejnery, omezte MSS u provozu, který přeposílá:

Shell
iptables -t mangle -A FORWARD -o gre1 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

BGP přes tunel

Pokud máte vlastní číslo AS a chcete announcement řídit sami, můžete místo statické routy provozovat přes tunel BGP session, s BIRD, FRR nebo vlastním démonem routeru. Většina zákazníků to nepotřebuje a volí statické nastavení. Pokud announcujete z vlastního ASN, musí ROA uvádět toto ASN (RPKI a ROA).

Kde se uplatní RTM Networks

Blok announcujeme a doručíme ho na váš server přes GRE nebo WireGuard, ať je server kdekoli. Funguje to tam, kde BYOIP ne, včetně méně než 256 adres a poskytovatelů, kteří váš prostor vůbec nepřijímají. Napište nám, kde server je a co na něm běží, a doporučíme GRE, nebo WireGuard, a pošleme konfiguraci se správnými hodnotami MTU a MSS (tunely GRE a WireGuard).

Kontakt

Potřebujete radu k vlastní situaci?

Tento článek je obecný; vaše síť ne. Napište nám, s čím pracujete, a pořádně se na to podíváme. Obvykle odpovídáme do 1 až 3 pracovních hodin.

Kontaktujte nás