Diğer her şeyi kurumsal VPN üzerinden sorunsuz gezinen bir telefonda bildirimler gelmemeye başlar. Web sayfaları yüklenir, uygulama açılır ve mesajlar yalnızca evdeyken veya tünel kapatıldıktan sonra görünür. Firebase Cloud Messaging üzerine kurulu bir uygulamada push kanalı ayrı ve uzun ömürlü bir giden bağlantıdır; tarayıcının az önce kanıtladığı HTTPS yolu değildir. Bu kontrolleri sırayla yapın ve ilk başarısız olanda durun.

Uygulamanın gerçekten FCM kullandığını doğrulayın

Her bildirim push değildir. Bazılarını uygulama yerel olarak planlar, bazıları HTTPS ile sorgulanır, bazıları ise Firebase ile ilgisi olmayan bir sağlayıcı kanalından gelir. Uygulamanın manifestosu ve bağımlılıkları Firebase Messaging içeriyorsa bildirimleri normalde FCM bağlantısı üzerinden gider ve istemci kitaplığı kaydı öngörülebilir bir etiket altında günlüğe yazar.

adb logcat -s FirebaseMessaging:V
adb shell dumpsys package <package> | grep -i firebase

Günlükteki kayıt jetonu taşımayı doğrular. O olmadan uygulama düzeyinde bir bildirim hattında hata ayıklıyorsunuzdur ve güvenlik duvarı değişiklikleri yardımcı olmaz. Bu ayrım önemlidir çünkü teslim edilen ama hiç gösterilmeyen bir mesaj ile hiç gelmeyen bir mesaj kullanıcıya aynı görünür.

Web sitesini değil, giden portları kontrol edin

FCM cihaz bağlantıları cihazdan başlatılan TCP'dir ve 5228 portuna gider; 5229 ile 5230 yedek, 443 ise son çaredir. Tarama için 443'e izin veren bir güvenlik duvarı push'u yine de bozabilir ve bir uygulamanın API alan adına izin veren kural, ayrı hizmetler olan mesajlaşma uç noktalarını kapsamaz.

Bunlar telefondan dışarı giden bağlantılardır. Cihazda veya VPN geçidinde gelen bir port yayınlamazsınız, bu nedenle biri port yönlendirme öneriyorsa tasarım zaten yanlıştır. Aynı şey bir portu internetteki tüm adreslere açan kural için de geçerlidir: onu belgelenmiş hedeflerle sınırlayın.

PortRoleWhat to verify
5228Primary FCM connectionOutbound allowed and session state kept
5229, 5230Fallback portsOften missing from hand-written allowlists
443Last-resort fallbackWorks only if the client actually falls back
HTTP proxyNot a supported FCM transportProxy exclusion or bypass, not a port rule

Firebase'in ağ rehberi ayrıca FCM teslim protokolünün sıradan bir HTTP proxy üzerinden taşınamayacağını belirtir. Bu nedenle tarayıcının kurumsal web proxy üzerinden çalışması push soketi hakkında hiçbir şey kanıtlamaz: bunlar farklı yollara sahip iki farklı istemcidir.

Soketi öldüren boşta kalma zaman aşımlarını kontrol edin

FCM bağlantısı mesajlar arasında açık kalır, bu da onu NAT ve durum denetimi zaman aşımlarına duyarlı yapar. Firebase rehberi bu tür politikaların geçerli olduğu yerlerde en az 30 dakika boşta kalma toleransı ister. Beş dakikalık oturum zaman aşımı eşlemeyi sessizce kaldırır ve telefon yalnızca bir şey onu uyandırdığında yeniden bağlanır, bu yüzden mesajlar toplu hâlde gelir ya da hiç gelmez.

Güvenlik duvarındaki veya VPN geçidindeki oturum tablosunu okuyun ve telefonun 5228-5230 bağlantısını bulun. Kalan ömrünü belgelenmiş değerle karşılaştırın. Daha kısaysa, cihazdaki tüm politikaları değiştirmek yerine bu portlar için zaman aşımını artırın, çünkü genel bir zaman aşımı değişikliğini gerekçelendirmek zordur ve geri almak daha da zordur.

Push teslimi, uç nokta eşlemesinin Wi-Fi ile hücresel arasındaki dolaşımda hayatta kalmasına da bağlıdır. Tek bir arayüze bağlı bir eşleme, her iki ağ da portlara izin verse bile geçişte düşürülebilir.

VPN atlatmasının kabul edilebilir olup olmadığına karar verin

Android VPN istemcileri trafiğin tüneli atlamasına izin verebilir ve bu atlatmaya izin verildiğinde FCM alttaki ağı kullanabilir. Bu durumda push kanalı şifreli kalır, ancak artık tünelin adresini taşımaz, bu yüzden VPN'in IP maskelemesi ona uygulanmaz. Bu bir politika ödünleşimidir, arıza değildir.

Politikanız atlatmayı yasaklıyorsa tünel yolu bağlantıyı taşımalıdır: portlar açık, zaman aşımları yeterince uzun, proxy yolda değil. Yönetilen bir hizmeti sessizce dışlamayın ve yalnızca bildirimler yönetilmeyen bir ağda çalışıyor diye kilidi gevşetmeyin. VPN simgesi belirli bir hizmetin hangi yolu seçtiğini söylemez

Teslimi görüntülemeden ayırın, sonra bir kez test edin

İzin, kanal ayarları, Rahatsız Etmeyin ve uygulama başına anahtarlar teslim edilen mesajın gösterilip gösterilmeyeceğine karar verir. Android 13 ve sonrasında bildirim izni çalışma zamanında verilir ve reddedilen izin, tam olarak engellenmiş bir port gibi görünen sessizlik üretir. Gelen ama gösterilmeyen bir mesaj sunum sorunudur; ayrı ele alın.

Mesajları gelişigüzel göndermek yerine tek bir kontrollü test yapın. Cihazı, hesabı ve uygulamayı sabit tutun, bilinen bir zaman damgasıyla tek bir mesaj gönderin ve VPN durumunu onaylanmış VPN'siz bir ağla karşılaştırın. Her çalıştırma için logcat'teki alma zamanını ve görüntüleme zamanını kaydedin. Teslimat farklıysa ama görüntüleme değilse ağ yolu değişkendir; ikisi de aynıysa uygulamaya bakmaya devam edin.

Ağ sahibine portları, proxy sınırlamasını, ölçülen zaman aşımını ve atlatma kararını tek bir notta verin. «VPN'i kapat» bir bulgu değildir ve tüm Google trafiğine izin vermek kapsamı belirlenmiş bir düzeltme değildir.

İlgili makaleler