Sítě

Privátní sítě, které propojují vaše služby napříč servery – s názvy, vlastními podsítěmi a šifrovanými tunely.

Úvod

Síť je privátní adresní prostor, který sdílí vaše služby. Serverlety připojené ke stejné síti dostanou uvnitř ní privátní IP adresu a mohou se navzájem oslovovat přímo – IP adresou i názvem – aniž by provoz procházel veřejným internetem. Síť funguje jako VPC: nic v ní není vystavené ven, dokud před ni nepostavíte proxy.

Síť žije v jednom regionu a zahrnuje všechny servery v něm. Dva serverlety na různých serverech, nebo na různých strojích ve vašem soukromém regionu, se přesto vidí, jako by byly na jedné lokální síti.

Vytvoření sítě

Na stránce Sítě klikněte na Vytvořit a vyplňte:

PoleVýznam
NázevKrátký popisek, například backend. Podle něj se sítě připojují k serverletům z CLI i API.
IPv4 podsíťAuto vygeneruje volnou podsíť za vás, Vypnuto IPv4 vypne, Vlastní přijme CIDR, například 10.100.0.0/24.
IPv6 podsíťStejné volby, s CIDR například fd00:10:85:1::/64.
InterníJe-li zapnuto, síť nemá odchozí přístup na internet.
RegionKde síť běží. Výchozí je region projektu a později ho nelze změnit.

IPv4 i IPv6 jsou ve výchozím stavu zapnuté a alespoň jedna z nich musí zůstat povolená. Pokud nepotřebujete konkrétní rozsah, nechte podsítě na Auto – Futrou vybere takovou, která nekoliduje s žádnou jinou sítí v regionu ani s vlastními rozhraními serveru.

Pravidla pro podsítě

Vlastní podsítě musí pocházet z privátního adresního prostoru:

  • IPv4: 10.0.0.0/8, 172.16.0.0/12 nebo 192.168.0.0/16
  • IPv6: fd00::/8

Veřejné rozsahy, loopback, link-local, multicast a rozsahy carrier-grade NAT se odmítnou. Podsíť může obsahovat nejvýše 4096 adres (/20), nesmí se překrývat s jinou sítí v regionu a nesmí kolidovat s adresním rozsahem, který už server používá (například s Docker sítí).

U existující sítě můžete podsíť přepnout na Auto nebo Vypnuto, ale zadat jiný vlastní rozsah mohou jen zaměstnanci Futrou – pokud takový potřebujete, vytvořte novou síť.

Připojení serverletů

Serverlet se k sítím připojuje přes nastavení Sítě, které přijímá názvy nebo ID sítí. Serverlet může být v několika sítích najednou a v každé z nich dostane adresu.

Serverlet bez vybrané sítě automaticky dostane vlastní privátní síť, která vzniká a zaniká spolu s ním. Sítě, které vytvoříte sami, se nikdy automaticky nemažou.

Proxy lze také omezit na jednu síť – pak předává provoz jen na instance serverletů, jejichž adresy leží uvnitř ní.

Oslovování služeb názvem

Uvnitř sítě je serverlet dostupný pod svým názvem, stejně jako služby v Docker Compose. Serverlet pojmenovaný db je z kteréhokoli jiného serverletu ve stejné síti dostupný pod hostitelským jménem db:

bash
psql -h db -U app

Název se přeloží na všechny zdravé instance daného serverletu, při každém dotazu v jiném pořadí, takže se spojení rozkládají mezi instance. Každý serverlet je navíc dostupný jako serverlet-<id>. Nezdravé a zastavené instance se z odpovědi vynechávají.

Patří-li serverlet do více sítí, název se hledá postupně v každé z nich. Názvy jsou vidět jen uvnitř sítě – z internetu se nikdy nepřeloží. Zatím pouze IPv4.

Napříč servery

Když má síť serverlety na více než jednom serveru, Futrou servery propojí šifrovanými tunely WireGuard. Každý server vlastní část podsítě sítě a adresy přiděluje jen z ní, takže se adresy nikdy nepotkají; provoz do části jiného serveru se do tunelu směruje automaticky.

Každá síť má vlastní náhodný klíč, který se vkládá do handshaku tunelu, navíc k páru klíčů každého serveru, který server nikdy neopustí. Do sítě se mohou připojit jen servery, které do ní patří, a klíč se nikdy nezobrazuje v dashboardu ani v API.

Co je dobré vědět:

  • Propojení napříč servery funguje přes IPv4. IPv6 adresy fungují jen mezi serverlety na stejném serveru.
  • Servery s veřejnou adresou se připojují ke všem ostatním serverům přímo. Servery za NATem spojení jen navazují směrem ven, takže nepotřebují otevřený příchozí port, a ostatní privátní servery dosáhnou přes veřejný server. Pro to je potřeba alespoň jeden veřejný server.
  • Tunel přenáší provoz dál i během aktualizace Nasua, takže aktualizace nepřeruší spojení mezi službami.

Interní sítě

Zapnutí Interní odřízne síť od internetu: serverlety spolu mohou komunikovat, ale nemohou navazovat odchozí spojení a názvy, které nepatří do sítě, se nepřekládají. Hodí se pro databáze, fronty a další služby, které mají komunikovat jen s vaším kódem.

Docker tento příznak u běžící sítě změnit neumí, takže přepnutí Interní restartuje serverlety v ní.

Zařízení

Stránka sítě zobrazuje její zařízení – běžící instance serverletů, které jsou k ní právě připojené, od nejnovějších. U každé uvidíte hostname (<název serverletu>-<číslo instance>), IPv4 a IPv6 adresu, MAC adresu a čas připojení.

Metriky a logy

Stránka sítě ukazuje provoz v čase – přijaté a odeslané bajty, pakety, chyby a zahozené pakety, spolu s průměrnou a špičkovou rychlostí v bitech za sekundu – za 30 sekund, 1 hodinu, 24 hodin, 7 dní a 30 dní, sečtený přes všechny servery. Nečinné sítě nic nezaznamenávají.

Log sítě zaznamenává její vytvoření, změny a připojování či odpojování serverů. Co dalšího Futrou uchovává, popisuje Logy.

Změna a smazání sítě

Přejmenování sítě je okamžité. Změna podsítě nebo příznaku Interní znovu vytvoří most sítě na každém serveru, čímž se připojené serverlety zastaví a spustí se náhrady s adresami z nové definice – počítejte s krátkým přerušením. Vypnutí adresní rodiny nic nerestartuje a pozdější zapnutí stejné podsítě je zdarma.

Síť nelze smazat, dokud ji používá serverlet nebo proxy; nejdřív ji odpojte. Smazáním sítě zaniknou její tunely i metriky.

Použití CLI

bash
futrou network create --name backend
futrou network create --name db --ipv4 10.100.0.0/24 --internal
futrou network ls
futrou network devices <id>
futrou network metrics <id>
futrou network update <id> --internal
futrou network rm <id>

Sítě lze také deklarovat v futrou.json / futrou.yaml a připojit k serverletům přímo tam; viz CLI.

Oprávnění

Zobrazení sítě vyžaduje alespoň roli Viewer. Vytvoření vyžaduje oprávnění vytvářet sítě v projektu a změna či smazání oprávnění je spravovat. Co která role umí, popisují Role.

Naposledy upraveno