OpenVPN 443-də hələ də bloklanır? Şəbəkənin nəyi yoxladığına baxın
443 portu rəqəmi dəyişir, protokol formasını yox. Əgər yol TLS-i yoxlayır və ya sonlandırırsa, növbəti sınaqlar sarğı və düzgün host marşrutudur.
Tunel ev xəttindən qoşulur və otel və ya ofis şəbəkəsində dayanır, serverin 443 portuna köçürülməsi isə heç nəyi dəyişmədi. Bu nəticə o qədər geniş yayılıb ki, onun bir forması var: port asan hissə idi, qərarın qalanı isə müştəri ilə server arasında duran hər şeyə aiddir. Halların çoxunu iki sual həll edir və heç biri şifrlərlə bağlı deyil. Şəbəkə həmin ünvana TLS əl sıxmasını qəbul edirmi və tunel açıqkən müştəri öz sarğısına marşrut saxlayırmı?
Əl sıxması rəqəmdən çox şey verir
TCP 443 üzərində doğma VPN dinləyicisi ilk paketdən öz protokolunu danışır. ClientHello-da versiya sahəsi, təsadüfi dəyər və uzantılar siyahısı olur, bir neçə yüz bayt oxuyan cihaz isə heç nəyi deşifrə etmədən fərqi ayıra bilir. Port nömrələrini qane etmək ucuzdur, filtrin həqiqətən yoxladığı şey protokol formasıdır. Qaydalar adətən protokol üzrə də yazılır, ona görə TLS-i yoxlayan siyasət UDP haqqında heç nə demir.
Etibarlı TLS sessiyasında israr edən şəffaf proksi bağlantını qurulma zamanı kəsir, çox vaxt TCP əl sıxması tamamlandıqdan sonra. Bu detal sonra vacibdir, çünki o deməkdir ki, müştəri jurnalı soket qurulduqdan sonra dayanır.
Axını sarımaq iki nasazlıq nöqtəsi yaradır
stunnel kimi TLS sarğısı gözlənilən formanı bərpa edir: müştəri yerli dinləyiciyə qoşulur, sarğı serverlə 443 üzərində real TLS sessiyası açır, serverdəki ikinci sarğı isə deşifrə olunmuş baytları VPN demonuna ötürür. Xarici sessiya artıq hər hansı HTTPS bağlantısı kimi görünür. Serverdəki VPN demonu yalnız loopback üzərində dinləməlidir, çünki sarğıdan kənarda heç nəyin ona çatması lazım deyil.
Bu dizayn üçün üç ayrı şey üst-üstə düşməlidir. Müştəri profili yerli dinləyiciyə işarə edir, server sertifikatı müştərinin yoxladığı adla uyğun gəlir və server tərəfindəki ötürmə demonun həqiqətən istifadə etdiyi portu hədəfləyir. Bunlardan hər hansı birini səhv etsəniz, bağlantı VPN qatına çatmadan ölür. Sonra sertifikat uyğunsuzluğu VPN xətası kimi deyil, sarğı xətası kimi görünür, buna görə də hər iki jurnalı yanaşı oxumağa dəyər.
Sarğıya gedən marşrut tələdir
Tunel qalxdıqdan sonra standart marşrut içinə işarə edir və xarici TLS sessiyası daşıdığı tunelə girməyən bir yol istəyir. Adi VPN müştərisi yığdığı ünvanı qoruyur; sarğılı müştəri öz loopback-inə yığır, ona görə sarğının təyinat ünvanı bu qoruma üçün görünməz qalır.
sudo ip route add 198.51.100.20 via 192.168.0.1
sudo openvpn --config client.ovpn
sudo ip route del 198.51.100.20
Dəqiq ünvanları siz dolduracaqsınız və marşrut yalnız başlanğıcda deyil, bağlantının bütün ömrü boyu mövcud olmalıdır. Marşrutu müştəridən əvvəl əlavə edib sonra silən kiçik sarğı skripti yadda saxlanılan əmrdən daha etibarlıdır.
Android-də bu istisnanın qarşılığı hər tətbiq üçün ayardır: sarğı tətbiqini tuneldən kənarlaşdırın ki, onun öz trafiki mobil bağlantıdan çıxsın. Kənarlaşdırma olmadan sarğı qurmağa çalışdığı tunelin içinə yönləndirilir və yenidən qoşulma dövrəsi server problemi kimi görünür.
Nəyisə dəyişməzdən əvvəl vaxtı oxuyun
Hər dəfə eyni intervaldan sonra ölən sessiya kriptoqrafik nasazlıq deyil, siyasət imzasıdır və uzunmüddətli axın limitləri məhz bu nümunəni yaradır. Əl sıxmasından dərhal sonra sıfırlanan bağlantı isə sertifikat zəncirini bəyənməyən proksiyə işarə edir.
Adi HTTPS saytının sertifikat verənini hər iki şəbəkədən müqayisə edin. Məhdud şəbəkədə verən fərqlənirsə, ortada nəsə TLS-i sonlandırır və heç bir sarğı bu müdaxilədən dəyişmədən sağ çıxmaz. Eyni müqayisə blokun server adınıza, yoxsa həmin ünvandakı hər TLS sessiyasına yönəldiyini söyləyir.
Müşahidə olunan davranışı yazın: sessiya nə qədər davam etdi, soket açıldımı, sarğı əl sıxmasını jurnala yazdımı. Bunların hər biri növbəti sınağı daraldır.
Hər dəfə bir dəyişəni sınayın
Əvvəlcə UDP-ni yoxlayın, çünki bəzi şəbəkələr onu tamamilə atır və UDP nasazlığı 443 haqqında heç nə demir. Sonra sarğısız TCP 443-ü, sonra 443 üzərində sarğını sınayın. Hər addımda müştəri jurnalını oxuyun və davranış dəyişən kimi dayanın.
Hər cəhddə bir elementi dəyişin. Yeni port, yeni sarğı və yeni şifr eyni gedişdə olsa, üçündən hansının vacib olduğunu deyə bilməzsiniz.