GitHub IPv6 proxy'si

🇹🇷
🇨🇿
🇩🇪
🇬🇧
🇧🇷
🇷🇺
🇺🇦
🇨🇳
+

Yakın zamanda favori barındırma sağlayıcım Hetzner'de kiraladığım IPv6'ya özel bir sunucu üzerinden GitHub'da bir git deposunu klonlamak zorunda kaldım. Ne yazık ki GitHub'ın hala does not support IPv6 olduğunu fark ettim.

Geçici çözümüm, çift yığınlı sunucularımdan biriyle bir WireGuard VPN kurmaktı. Anonim olarak indirmek için Tor'u yüklemek bir alternatif olabilirdi.

GitHub'dan havuz indirmek isteyen yalnızca IPv6 sunucusuna sahip tek kullanıcı olmadığım için, GitHub yerel IPv6 desteği sağlayana kadar bir IPv6 ağında GitHub'a erişmek için kullanılabilecek bir genel proxy sunucusu sağlamaya karar verdim. Proxy, IPv4 kullanıcılarının zaten doğrudan GitHub'dan klonlayabildikleri için gereksiz kaynakları kullanmalarını önlemek için yalnızca IPv6'da mevcuttur.

https proxy'min etki alanım için verilen bir ssl sertifikası sunduğunu unutmayın, bu da trafiğinizin şifresini çözüp yeniden şifrelediğim anlamına gelir (ve potansiyel olarak inceleyebilirim, ancak yapmıyorum). Geçersiz bir ssl sertifikası uyarısı alacağınız için gereklidir, aksi takdirde + github, kabul ettikten sonra varsayılan bağlantı noktasına yönlendirir. Daha kalıcı bir çözüm için aşağıya bakın, bu daha gizlilik dostudur.

Peki nasıl çalışıyor? https://github.com/DanWin/le-chat-php'de yayınladığım PHP Sohbet komut dosyasını klonlamak istediğimizi varsayalım. Normalde depoyu klonlamak şöyle görünür:
git clone https://github.com/DanWin/le-chat-php
Bir IPv6 bağlantısında, proxy hizmetimi şu şekilde kullanabilirsiniz:
git clone https://danwin1210.de:1443/DanWin/le-chat-php
Ve ssh ile klonlamak isterseniz, bunu şu şekilde de yapabilirsiniz:
git clone git@github-ipv6-proxy.danwin1210.de:DanWin/le-chat-php

Proxy'yi daha kalıcı olarak kullanmak ve/veya ben trafiğinizi yeniden şifrelemeden doğrudan GitHub ile konuşmak isteyenler /etc/hosts'a şunu eklemelidir:

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::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
2a01:4f8:c010:d56::8 uploads.github.com
2606:50c0:8000::133 objects.githubusercontent.com www.objects.githubusercontent.com release-assets.githubusercontent.com gist.githubusercontent.com repository-images.githubusercontent.com camo.githubusercontent.com private-user-images.githubusercontent.com avatars0.githubusercontent.com avatars1.githubusercontent.com avatars2.githubusercontent.com avatars3.githubusercontent.com cloud.githubusercontent.com desktop.githubusercontent.com support.github.com
2606:50c0:8000::154 support-assets.githubassets.com github.githubassets.com opengraph.githubassets.com github-registry-files.githubusercontent.com github-cloud.githubusercontent.com

Thanks to DeLegacy IPv6 RPZ some of above addresses are now served from official GitHub IPv6 addresses, which aren't published in their DNS zone yet.

Eklendikten sonra, herhangi bir değişiklik yapmadan her zamanki gibi klonlayabilirsiniz:

git clone https://github.com/DanWin/le-chat-php

Tüm bunlar, çift yığınlı bir sunucuda aşağıdaki nginx yapılandırmasıyla yapılır:

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::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;
	}
	server {
		listen [2a01:4f8:c010:d56::8]:443 fastopen=100 ipv6only=on;
		proxy_pass uploads.github.com:443;
	}
}

If there are any further questions, bana ulaşın.