SOCKS proxy'nin ağ erişiminin zaten bulunduğu yerde çalışması gerektiğini varsayarsınız. OpenSSH dinleyiciyi tamamen başka bir yere koyabilir. Uzak dinamik yönlendirme, SOCKS bağlantı noktasını uzak bir ana bilgisayarda açar ve her bağlantıyı dizüstü bilgisayarınızın onaylanmış VPN yolunu taşıyan yerel SSH istemcinizden başlatır. Pi sınırlı bir proxy alır; tünelinizi veya ayrıcalıklarınızı devralmaz.

Dinleyici ile bağlantının başladığı taraf farklı olabilir

Sıradan bir ssh -D 1080 dinleyiciyi kendi makinenizde çalıştırır ve bağlantıları oradan gönderir. Uzak dinamik yönlendirme bunu tersine çevirir: dinleyici uzak ana bilgisayarda görünür ve kabul ettiği her bağlantı yerel taraftan açılır. OpenSSH istemci kılavuzu sabit hedef olmadan -R seçeneğini tam olarak bu SOCKS4/5 düzenlemesi olarak belgeler.

Dizüstü bilgisayardan desteklenen bir komut şöyle görünür; hesap, ana bilgisayarlar ve bağlantı noktası yer tutucu sayılır:

ssh -NT -S none -o ExitOnForwardFailure=yes \
  -o PermitRemoteOpen=app.corp.example:443 \
  -R 1080 [email protected]

Orada üç ayrıntı yararlı iş yapar. -S none oturumu paylaşılan bir denetim master'ından uzak tutar, ExitOnForwardFailure sizi yarı açık bir oturumla bırakmak yerine hızla başarısız olur ve PermitRemoteOpen uzak dinleyicinin nereye ulaşabileceğini sınırlar. Yetkili bir Pi hesabı kullanın ve bunlardan herhangi birini eklemeden önce ana bilgisayar anahtarını doğrulayın.

Uzak dinleyici gerçekte neyi açığa çıkarır

Dinleyiciye güvenmeden önce sunucunun yönlendirme ilkesini denetleyin. GatewayPorts no ile uzak yönlendirme loopback'e bağlı kalır ve istediğiniz açıklık budur. Joker karakterli yönlendirmeyi zorlamak üzere yapılandırılmış bir sunucu aynı bağlantı noktasını her arayüzde yayımlar; bu da kişisel bir proxy'yi yerel ağın erişebileceği bir şeye dönüştürür.

Loopback de kullanıcı başına bir sınır değildir. Pi'deki başka bir süreç bağlantı noktasını biliyorsa 127.0.0.1:1080 adresine bağlanabilir; bu yüzden Pi'nin yerel hesapları ve üzerinde çalışan her şey erişim tasarımınızın parçasıdır. Bu, hedef listesini dar tutmak için bir nedendir, ilke denetimini atlamak için değil.

İzin verilen hedefi ulaşmaya çalıştığınız uygulamaya özgü tutun. İlgisiz bir program çalışsın diye onu sınırsız yönlendirmeyle değiştirmek, yolu başladığınız sorunun çok ötesine genişletir. Hedef listesi ayrıca oturumun ne için olduğunu da kaydeder; bu, onu daha sonra denetleyecek olana yardımcı olur. Kullandığınız hesabın yanına yazın.

Bir uygulamayı proxy üzerinden geçirin

Pi'deki proxy'yi anlayan bir istemci ardından isteği gönderebilir. socks5h öneki hedef adını proxy'ye verir; böylece arama ve bağlantı ikisi de dizüstü bilgisayar tarafında gerçekleşir ve PermitRemoteOpen içinde adlandırılan hedefle eşleşir:

curl --proxy socks5h://127.0.0.1:1080 \
  --noproxy '' https://app.corp.example/

Normal sertifika doğrulamasını ve uygulamanın kendi kimlik doğrulamasını koruyun. Proxy, TCP bağlantısının nerede kurulduğunu değiştirir; kimlik doğrulaması olmayan bir hizmeti güvenli hale getirmez ve kendinden imzalı bir uç noktayı güvenilir bir uç noktaya dönüştürmez.

Dizüstü bilgisayarın yine de kendi rotasına ve hem SSH sunucusuna hem de uygulamaya çözümleyici erişimine ihtiyacı var. SSH istemcisinin trafiği onaylanmış VPN ilkesi tarafından seçilmelidir ve split-tunnel istisnası bu trafiği test ettiğinizden farklı bir yola gönderebilir.

Yolu kanıtlayın ve kapatın

Dinleyicinin beklediğiniz yerde bulunduğunu ve yalnızca amaçlanan hedefin yanıt verdiğini doğrulayın:

$ ss -ltnp | grep 1080
LISTEN 0 128 127.0.0.1:1080 0.0.0.0:*
$ curl -sS -o /dev/null -w '%{http_code}\n' \
    --proxy socks5h://127.0.0.1:1080 https://app.corp.example/

ExitOnForwardFailure yönlendirmenin kurulduğunu kanıtlayabilir ve yine de uygulamaya girişin aşağı akışta başarılı olduğunu belgeleyemez. Yalnızca bağlantı noktasını değil, uygulamayı test edin. Kabul edip sonra her isteği başarısız kılan bir dinleyici genellikle tünelin başarısız olduğu değil, hedef adının veya dizüstü bilgisayarın rotasının yanlış olduğu anlamına gelir.

Bu düzenleme yalnızca TCP taşır. UDP, ICMP ve proxy ayarlarını yok sayan programlar bunun dışında kalır ve yönlendirme SSH oturumu bittiği anda biter. İşiniz bittiğinde o oturumu durdurun ve uygulamaya eklediğiniz proxy ayarını kaldırın.

Kalıcı erişim için bunun yerine ağ sahibinin desteklenen kaydını veya yönetilen bir ağ geçidini kullanın. Ters proxy, bir VPN'in aygıt veya kaynak kısıtlamalarını aşmak için yanlış araçtır; bunların içinde kullanıldığında, açık sınırları olan tek bir yetkili uygulama yolundan ibarettir.

İlgili makaleler