Sākotnēji mana bloga konfigurācija tika plānota kā tīrs IPv6 projekts, izmantojot WireGuard, jo tas viss darbojas uz mājas servera (bezmaksas IPv6 adreses, starp citu, var iegūt vietnē route64.org). Lai uzlabotu pieejamību, tagad esmu pievienojis ārēju IPv4 starpniekserveri (paldies @Larvitz).
Tomēr uzreiz radās SSL problēmas: tā kā sākotnēji gan A, gan AAAA ieraksti gāja caur starpniekserveri, Let's Encrypt validācija manā serverī neizdevās.
Risinājums: „IPv6 triks”
Risinājums bija skaidri novirzīt AAAA ierakstu tieši uz mana servera WireGuard IP, nevis sūtīt to arī caur starpniekserveri.
- Domēns:
blog.burningboard.org - A ieraksts (Proxy):
194.28.98.217 - AAAA ieraksts (Serveris):
2a11:6c7:f05:a8::2(WireGuard)
Izmantojot šo tiešo AAAA ierakstu uz manu WireGuard IP, Let’s Encrypt joprojām sasniedz manu serveri tieši caur IPv6 (tā kā AAAA ierakstam pēc noklusējuma ir prioritāte) un izsniedz SSL sertifikātu. IPv4 trafiku starpniekserveris šifrētā veidā pārsūta man.
Fināla konfigurācija
Lai saziņa noritētu bez traucējumiem, mums bija jāpielāgo Caddy serveri:
1. Manā serverī (NixOS, blog.nix)
Lai reālās apmeklētāju IP adreses tiktu saņemtas pareizi un tās netiktu aizstātas ar starpniekservera IP, tas ir jāatzīmē kā uzticams:
services.caddy.globalConfig = ''
servers {
trusted_proxies static 2a06:9801:1c:1000::10
}
'';
2. Ārējā starpniekserverī (Caddy)
Lai starpniekserveris pareizi sazinātos ar manu serveri, izmantojot HTTPS, tam ir jānodod resursdatora nosaukums (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
}
}
Blogs tagad ir pieejams caur IPv4 un IPv6, tas ir droši šifrēts, un mana mājas IP adrese joprojām paliek privāta! 🚀