Blog
GRE tunely pro IPv4: kdy je potřebujete a jak je nastavit
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í.
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.
| GRE | WireGuard | |
|---|---|---|
| Šifrování | Žádné | Ano |
| Režie na IPv4 | 24 bajtů | 60 bajtů |
| Za NAT nebo CGNAT | Nefunguje spolehlivě | Funguje |
| Podpora | Většina routerů a jádro Linuxu | Já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 propustnosti | Provoz 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.
# 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 100Krok 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á:
iptables -t mangle -A FORWARD -o gre1 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtuBGP 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.



