Algselt oli minu blogi seadistus planeeritud puhta IPv6-projektina üle WireGuardi, kuna kogu süsteem jookseb koduserveris (tasuta IPv6-aadresse saab muide lehelt route64.org). Kättesaadavuse parandamiseks lisasin nüüd välise IPv4-proksi (tänud @Larvitz).

Sellega tekkisid aga kohe SSL-probleemid: kuna algselt suunati nii A- kui ka AAAA-kirje läbi proksi, ebaõnnestus Let's Encrypti valideerimine minu serveris.

Lahendus: „IPv6-häkk“

Lahendus oli suunata AAAA-kirje selgesõnaliselt otse minu serveri WireGuardi IP-aadressile, selle asemel et juhtida ka see läbi proksi.

  • Domeen: blog.burningboard.org
  • A-kirje (Proksi): 194.28.98.217
  • AAAA-kirje (Server): 2a11:6c7:f05:a8::2 (WireGuard)

Tänu sellele otsesele AAAA-kirjele minu WireGuardi IP-le jõuab Let’s Encrypt minu serverini jätkuvalt otse IPv6 kaudu (kuna AAAA-kirje on vaikimisi prioriteetne) ja väljastab SSL-sertifikaadi. IPv4-liiklus suunatakse proksi poolt krüpteeritult mulle edasi.

Lõplik konfiguratsioon

Sujuva suhtluse tagamiseks pidime Caddy servereid kohandama:

1. Minu serveris (NixOS, blog.nix)

Et külastajate tegelikud IP-aadressid jõuaksid kohale korrektselt ega saaks proksi IP-ga üle kirjutatud, tuleb see märkida usaldusväärseks:

services.caddy.globalConfig = ''
  servers {
      trusted_proxies static 2a06:9801:1c:1000::10
  }
'';

2. Välises proksis (Caddy)

Et proksi pöörduks minu serveri poole korrektselt HTTPS-i kaudu, peab see kaasa saatma hostinime (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
    }
}

Blogi on nüüd kättesaadav nii IPv4 kui ka IPv6 kaudu, turvaliselt krüpteeritud ja minu kodu-IP jääb sellegipoolest privaatseks! 🚀