ஆரம்பத்தில் எனது வலைப்பதிவு அமைப்பு ஒரு ஹோம் சர்வரில் (homeserver) இயங்குவதால், WireGuard வழியாக ஒரு தூய IPv6-திட்டமாக திட்டமிடப்பட்டது (இலவச IPv6 முகவரிகளை route64.org இல் பெறலாம்). அணுகல்தன்மையை அதிகரிக்க, இப்போது நான் ஒரு வெளிப்புற IPv4 ப்ராக்ஸியைச் (proxy) சேர்த்துள்ளேன் (@Larvitz அவர்களுக்கு நன்றி).

இருப்பினும், இதில் உடனடியாக SSL சிக்கல்கள் ஏற்பட்டன: ஆரம்பத்தில் A மற்றும் AAAA பதிவுகள் (records) இரண்டும் ப்ராக்ஸி வழியாகச் சென்றதால், எனது சர்வரில் Let's Encrypt சரிபார்ப்பு தோல்வியடைந்தது.

தீர்வு: „IPv6-Hack“

இதற்கான தீர்வு, AAAA-பதிவை ப்ராக்ஸி வழியாக அனுப்பாமல், நேரடியாக எனது சர்வரின் WireGuard IP-க்கு சுட்டிக்காட்டுவதாகும்.

  • டொமைன் (Domain): blog.burningboard.org
  • A-பதிவு (Proxy): 194.28.98.217
  • AAAA-பதிவு (Server): 2a11:6c7:f05:a8::2 (WireGuard)

எனது WireGuard IP-க்கு இந்த நேரடி AAAA-பதிவு மூலம், Let’s Encrypt எனது சர்வரைத் தொடர்ந்து நேரடியாக IPv6 வழியாக அடைகிறது (ஏனெனில் AAAA-பதிவு முன்னுரிமை பெறுகிறது) மற்றும் SSL சான்றிதழை வழங்குகிறது. IPv4 டிராஃபிக் ப்ராக்ஸியால் குறியாக்கம் (encrypt) செய்யப்பட்டு என்னிடம் அனுப்பப்படுகிறது.

இறுதி கட்டமைப்பு

தொடர்பு சீராக நடைபெற, நாங்கள் 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 முகவரி ரகசியமாகவே இருக்கிறது! 🚀