Plex uzaktan erişimi VPN arkasında neden başarısız olur ve nasıl düzeltilir
VPN arkasındaki Plex uzaktan erişimi üç halka gerektirir: sağlayıcıda port yönlendirme, yerel pf yönlendirmesi ve Plex'e yazılan aynı dış port.
Uzaktan erişim, VPN varsayılan rotayı devraldığı anda kullanılamaz hale gelir, oysa aynı sunucu LAN'a şikâyet etmeden akış yapmaya devam eder. Plex günlüklerinde bu değişikliği açıklayan hiçbir şey yoktur, çünkü bozulan kısım Plex değildir: trafiğin artık ulaşmadığı bir adresi yayımlar. Tek bir genel adresi müşteriler arasında paylaşan sağlayıcı, bir portu tünel adresinize yönlendirir ve kendi makinenizdeki bir şeyin hâlâ o portu Plex dinleyicisine taşıması gerekir. Erişilebilirlik testi yeşile dönmeden önce üç halkanın da tek bir dış portta anlaşması gerekir.
Zincirin üç halkası vardır ve Plex yalnızca sonuncuyu görür
Sağlayıcı bir genel adrese sahiptir ve portlarından birini tünel adresinize eşler. Makineniz o porta gelen her şeyi alır ve Plex dinleyicisine yönlendirir; bu dinleyici genellikle loopback 32400 portunda oturur. Ardından Plex'e dış port numarası söylenir, böylece kendi denetimi dış dünyanın çevirdiğiyle eşleşir.
Tek bir halkayı koparın, web arayüzü uzaktan erişimi kullanılamaz olarak bildirir ve hangi halkanın başarısız olduğuna dair hiçbir ipucu vermez. Bu sessizlik, insanların sunucuyu yeniden başlatmasının, uygulamayı yeniden kurmasının ve ayarı durmadan değiştirmesinin sebebidir, ama ibre kımıldamaz. Üç halka bağımsız olarak başarısız olur: eski bir tünel adresine yönelmiş yönlendirme, yalnızca Ethernet arayüzünü kapsayan yönlendirme ve hâlâ 32400 tutan bir Plex alanı aynı kırmızı metni üretir. Tahmin etmek yerine dinleyiciden dışarı doğru çalışın; bozuk halka genellikle bir dakika içinde kendini adlandırır.
Birinci halka: VPN sağlayıcısında bir port yönlendirin
Sağlayıcının port yönlendirme sayfasını açın ve bir eşleme ekleyin. Çoğu uygulama size rastgele bir dış port verir ve içtekini seçmenize izin verir, bu yüzden atamayı kabul edin ve istemcinizin şu anda tuttuğu tünel adresine yöneltin. O numarayı yazın, çünkü sonraki her adım onu tam olarak yineler.
Eşlemeyi yeniden bağlanmada döndüren sağlayıcılar, bu kurulumun bir akşam dayanıp sonra ölmesinin olağan sebebidir. Bazıları sabit port istemenize izin verir, diğerleri her el sıkışmada yenisini atar, bu yüzden başka bir şeye dokunmadan önce güncel eşleme sayfasını okuyun.
İkinci halka: portu pf çapasıyla yönlendirin
macOS'ta yönlendirme bir pf çapasına aittir, paketi taşıyabilen her arayüz için bir kural. Önce tünel kuralını, sonra Ethernet kuralını yazın, ikisinde de aynı dış portu kullanın, yoksa yedek geçiş sırasında Wi-Fi'dan gelen trafik hiçbir yere inmez.
# /etc/pf.anchors/plex.forward
rdr pass on tun0 inet proto tcp from any to any port 41893 -> 127.0.0.1 port 32400
rdr pass on en0 inet proto tcp from any to any port 41893 -> 127.0.0.1 port 32400
Çapa dosyası tek başına hiçbir şey yapmaz; ana yapılandırmanın ona başvurması ve onu yüklemesi gerekir. Bu iki satırı /etc/pf.conf içine, mevcut tüm yönlendirme kurallarından önce koyun, sonra yeniden yükleyin ve çekirdeğin gerçekte neyi kabul ettiğini okuyun.
rdr-anchor "plex"
load anchor "plex" from "/etc/pf.anchors/plex.forward"
sudo pfctl -vnf /etc/pf.anchors/plex.forward
sudo pfctl -f /etc/pf.conf
sudo pfctl -s nat
Bilinmeyen bir port hakkında sözdizimi şikâyeti, düzenlemenizden bir yer tutucunun sağ çıktığı anlamına gelir. Boş nat tablosu, çapanın hiç yüklenmediği anlamına gelir ve pf güncel macOS'ta varsayılan olarak etkin olmadığından, sudo pfctl -E düzeltmenin parçasıdır, isteğe bağlı eklerin değil. Çapayı her yeniden başlatmadan ve her eşleme değişikliğinden sonra yeniden yükleyin. Çapa dosyasını sürüm denetimi altında tutun, böylece sağlayıcı port değişikliği yeni bir keşif değil tek satırlık bir düzenleme olsun.
Üçüncü halka: aynı portu Plex içinde sabitleyin
Plex'te Ayarlar'ı, ardından Sunucu'yu, ardından Uzaktan Erişim'i açın ve portu elle belirlemenize izin veren kutuyu işaretleyin. 32400 yerine sağlayıcının dış portunu girin, ardından erişilebilirlik testinin çalışmasına izin verin. Daha yeni sürümler bu denetimi eski Connect sayfasından uzağa taşıdı, bu yüzden alan bir kılavuzun söylediği yerde değilse Uzaktan Erişim altına bakın.
LAN'dan test etmek hiçbir şeyi kanıtlamaz. Aynı Wi-Fi'daki bir dizüstü bilgisayar sunucuya doğrudan ulaşır, bu yüzden genel yol ölüyken bile denetim başarılı olur. Hücresel veri kullanan bir telefon veya ağınızın dışındaki herhangi bir ana bilgisayar kullanın ve oradan genel adresi ve dış portu çevirin.
Plex'i suçlamadan önce her halkayı doğrulayın
Dinleyiciden başlayın ve dışarı doğru çalışın. Plex yalnızca LAN adresine bağlıysa loopback'e yönelik bir yönlendirmeyi yok sayar, bu yüzden ilk komut nerede dinlediğini kanıtlayan komuttur.
sudo lsof -nP -iTCP:32400 -sTCP:LISTEN
Ardından yönlendirmenin var olduğunu ve sağlayıcıya verdiğiniz portla eşleştiğini kanıtlayın. nat tablosu iki arayüzde de aynı dış portu göstermelidir.
sudo pfctl -s nat | grep 41893
nc -vz 203.0.113.42 41893
O son komutu Mac'ten değil, ağın dışından çalıştırın. Hücresel veriden TCP bağlantısı tamamlanırken Plex hâlâ kullanılamaz gösteriyorsa, port dinleyiciye ulaşıyor ve kalan şüpheli Plex alanına yazılan numaradır. Hiçbir şey yanıt vermiyorsa kopukluk yukarıdadır: sağlayıcının eşlemesi, tünel adresi veya etkin olmayan pf.