ప్రారంభంలో నా బ్లాగ్ సెటప్ హోమ్ సర్వర్‌పై నడుస్తున్నందున వైర్‌గార్డ్ (WireGuard) ద్వారా కేవలం IPv6-ప్రాజెక్ట్ గా ప్లాన్ చేయబడింది (మీరు route64.org నుండి ఉచిత IPv6 అడ్రస్‌లను పొందవచ్చు). యాక్సెసిబిలిటీని పెంచడానికి, నేను ఇప్పుడు ఒక ఎక్స్‌టర్నల్ IPv4 ప్రాక్సీని జోడించాను (@Larvitz కి ధన్యవాదాలు).

అయితే, దీనివల్ల వెంటనే SSL సమస్యలు తలెత్తాయి: మొదట A మరియు AAAA రికార్డ్‌లు రెండూ ప్రాక్సీ ద్వారా వెళ్లడం వల్ల, నా సర్వర్‌పై Let's Encrypt వ్యాలిడేషన్ విఫలమైంది.

పరిష్కారం: „IPv6-హ్యాక్“

దీనికి పరిష్కారం ఏమిటంటే, AAAA-రికార్డ్ ను ప్రాక్సీ ద్వారా పంపకుండా నేరుగా నా సర్వర్ యొక్క వైర్‌గార్డ్ IPకి పంపడం.

  • డొమైన్: blog.burningboard.org
  • A-రికార్డ్ (ప్రాక్సీ): 194.28.98.217
  • AAAA-రికార్డ్ (సర్వర్): 2a11:6c7:f05:a8::2 (WireGuard)

నా వైర్‌గార్డ్ IPకి ఈ డైరెక్ట్ AAAA-రికార్డ్ ద్వారా, Let’s Encrypt నా సర్వర్‌ను నేరుగా IPv6 ద్వారా చేరుకుంటుంది (ఎందుకంటే AAAA-రికార్డ్ డిఫాల్ట్‌గా ప్రాధాన్యత పొందుతుంది) మరియు SSL సర్టిఫికేట్‌ను జారీ చేస్తుంది. IPv4 ట్రాఫిక్ ప్రాక్సీ ద్వారా ఎన్‌క్రిప్ట్ చేయబడి నాకు పంపబడుతుంది.

తుది కాన్ఫిగరేషన్

కమ్యూనికేషన్ సజావుగా సాగడానికి, మేము క్యాడీ (Caddy) సర్వర్‌లను సర్దుబాటు చేయాల్సి వచ్చింది:

1. నా సర్వర్‌పై (NixOS, blog.nix)

అసలైన విజిటర్ IPలు సరిగ్గా రావడానికి మరియు ప్రాక్సీ IPతో ఓవర్‌రైట్ కాకుండా ఉండటానికి, దానిని విశ్వసనీయమైనదిగా (trusted) గుర్తించాలి:

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

2. ఎక్స్‌టర్నల్ ప్రాక్సీపై (Caddy)

ప్రాక్సీ నా సర్వర్‌ను HTTPS ద్వారా సరిగ్గా సంప్రదించడానికి, అది హోస్ట్ నేమ్ (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
    }
}

బ్లాగ్ ఇప్పుడు IPv4 మరియు IPv6 ద్వారా అందుబాటులో ఉంది, సురక్షితంగా ఎన్‌క్రిప్ట్ చేయబడింది మరియు నా హోమ్ IP ఇప్పటికీ ప్రైవేట్‌గానే ఉంటుంది! 🚀