Recently I had to clone a git repository on GitHub via an IPv6 only server that I rented at my favourite hosting provider Hetzner. Unfortunately I realized that GitHub still does not support IPv6.
Mým řešením bylo nastavení WireGuard VPN s jedním z mých dvou-stackových serverů. Alternativou by mohla být instalace Tor pro anonymní stahování.
Protože nejsem zdaleka jediný uživatel se serverem pouze pro IPv6, který chce stahovat úložiště z GitHubu, rozhodl jsem se poskytnout veřejný proxy server, který lze použít k přístupu na GitHub v síti IPv6, dokud GitHub nebude poskytovat nativní podporu IPv6. Proxy je k dispozici pouze na IPv6, aby uživatelé IPv4 nepoužívali zbytečné zdroje, protože již mohou klonovat přímo z GitHubu.
Všimněte si, že můj https proxy poskytuje ssl certifikát vydaný pro mou doménu, což znamená, že dešifruji a znovu zašifruji váš provoz (a mohl bych se na to potenciálně podívat, ale nedělám to). Je to nutné, protože byste dostali upozornění na neplatný certifikát ssl, jinak by se + github po jeho přijetí přesměroval na výchozí port. Níže naleznete trvalejší řešení, které je šetrnější k soukromí.
Jak to tedy funguje? Předpokládejme, že chceme naklonovat skript PHP Chat, který jsem zveřejnil na https://github.com/DanWin/le-chat-php. Normálně by klonování úložiště vypadalo takto:
git clone https://github.com/DanWin/le-chat-php
Na připojení IPv6 můžete moji službu proxy používat takto:
git clone https://danwin1210.de:1443/DanWin/le-chat-php
A pokud byste chtěli klonovat přes ssh, můžete to udělat také takto:
git clone git@github-ipv6-proxy.danwin1210.de:DanWin/le-chat-php
Ti, kteří chtějí používat proxy trvaleji a/nebo mluvit přímo s GitHub, aniž bych znovu šifroval váš provoz, by měli do /etc/hosts přidat následující:
2a01:4f8:c010:d56::2 github.com 2a01:4f8:c010:d56::3 api.github.com 2a01:4f8:c010:d56::4 codeload.github.com 2a01:4f8:c010:d56::5 objects.githubusercontent.com 2a01:4f8:c010:d56::6 ghcr.io 2a01:4f8:c010:d56::7 pkg.github.com npm.pkg.github.com maven.pkg.github.com nuget.pkg.github.com rubygems.pkg.github.com
Po přidání můžete klonovat jako obvykle, bez jakýchkoli změn:
git clone https://github.com/DanWin/le-chat-php
To vše se provádí pomocí následující konfigurace nginx na serveru se dvěma zásobníky:
http { server { listen [::]:1443 fastopen=100 backlog=2048 ipv6only=on ssl http2 default_server; location = /robots.txt { return 200 'User-agent: * Disallow:'; } location / { proxy_pass https://github.com; proxy_set_header Host "github.com"; } } } stream { server { listen [2a01:4f8:c010:d56::2]:22 fastopen=100 ipv6only=on; proxy_pass github.com:22; } server { listen [2a01:4f8:c010:d56::2]:443 fastopen=100 ipv6only=on; proxy_pass github.com:443; } server { listen [2a01:4f8:c010:d56::3]:443 fastopen=100 ipv6only=on; proxy_pass api.github.com:443; } server { listen [2a01:4f8:c010:d56::4]:443 fastopen=100 ipv6only=on; proxy_pass codeload.github.com:443; } server { listen [2a01:4f8:c010:d56::5]:443 fastopen=100 ipv6only=on; proxy_pass objects.githubusercontent.com:443; } server { listen [2a01:4f8:c010:d56::6]:443 fastopen=100 ipv6only=on; proxy_pass ghcr.io:443; } server { listen [2a01:4f8:c010:d56::7]:443 fastopen=100 ipv6only=on; proxy_pass pkg.github.com:443; } }
If there are any further questions, contact me.