Původně bylo nastavení mého blogu plánováno jako čistě IPv6 projekt přes WireGuard, protože celý běží na domácím serveru (mimochodem, bezplatné IPv6 adresy získáte na route64.org). Abych zvýšil dostupnost, přidal jsem nyní externí IPv4 proxy (díky @Larvitz).
Okamžitě se však objevily problémy s SSL: Protože původně přes proxy procházely jak záznamy typu A, tak AAAA, selhalo ověření Let's Encrypt na mém serveru.
Řešení: „IPv6 hack“
Řešením bylo nasměrovat AAAA záznam explicitně přímo na WireGuard IP adresu mého serveru, namísto toho, aby byl také veden přes proxy.
- Doména:
blog.burningboard.org - A záznam (Proxy):
194.28.98.217 - AAAA záznam (Server):
2a11:6c7:f05:a8::2(WireGuard)
Díky tomuto přímému AAAA záznamu na mou WireGuard IP adresu se Let’s Encrypt i nadále dostane k mému serveru přímo přes IPv6 (protože záznam AAAA je standardně upřednostňován) a vystaví SSL certifikát. IPv4 provoz je pak šifrovaně předáván z proxy ke mně.
Finální konfigurace
Aby komunikace probíhala hladce, museli jsme upravit servery Caddy:
1. Na mém serveru (NixOS, blog.nix)
Aby skutečné IP adresy návštěvníků přicházely správně a nebyly přepsány IP adresou proxy serveru, musí být tento server označen jako důvěryhodný:
services.caddy.globalConfig = ''
servers {
trusted_proxies static 2a06:9801:1c:1000::10
}
'';
2. Na externí proxy (Caddy)
Aby proxy správně komunikovala s mým serverem přes HTTPS, musí odesílat název hostitele (SNI):
reverse_proxy [https://[2a11:6c7:f05:a8::2]:443](https://[2a11:6c7:f05:a8::2]:443) {
header_up Host {host}
transport http {
tls_server_name blog.burningboard.org
}
}
Blog je nyní dostupný přes IPv4 i IPv6, bezpečně zašifrovaný a moje domácí IP adresa přesto zůstává soukromá! 🚀