ప్రారంభంలో నా బ్లాగ్ సెటప్ హోమ్ సర్వర్పై నడుస్తున్నందున వైర్గార్డ్ (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 ఇప్పటికీ ప్రైవేట్గానే ఉంటుంది! 🚀