Simmetrik NAT və VPN: etiketi deyil, xəritələməni yoxla
Son nöqtədən asılı xəritələmə bərabər-bərabər kəşfinə təsir edir, adi müştəri-server tunelinə yox. Portu ölçün, birbaşa yol uğursuz olarsa ötürücüdən istifadə edin.
Dəstək mövzusu “simmetrik NAT, VPN burada işləməyəcək” hökmü ilə bitir, sonra müştəri heç bir səbəb olmadan üç dəfə yenidən quraşdırılır. Etiket zərər verir, çünki heç kimin vermədiyi suala cavab verir. Sabit serverə bayıra qoşulan müştəri ilk paketi göndərdiyi anda xəritələmə yaradır və cavabın geri qayıtmasına demək olar ki, hər şəbəkənin tətbiq etdiyi qaydalar çərçivəsində icazə verilir. Son nöqtədən asılı xəritələmənin həqiqətən çətinləşdirdiyi şey iki bərabərin eyni vaxtda bir-birinə çatmağa çalışmasıdır və bu, başqa bir sınaqdır.
Bir etiketin arxasında iki sual gizlənir
Birinci sual budur: bu şəbəkənin arxasındakı host məlum ictimai ünvana və porta sessiya aça bilərmi. Tunel müştərisi üçün bu normal haldır və cavab demək olar ki, həmişə bəlidir. Marşrutlaşdırıcı daxili mənbəyi qeyd edir, xarici port ayırır və cavabın keçməsinə icazə verir, çünki o, içəridən başlamış sessiyaya aiddir.
İkinci sual budur: müxtəlif şəbəkələrin arxasındakı iki host ortaq yol tapa və ortada server olmadan bir-birinə göndərə bilərmi. Bu, hər şəbəkənin həmin xarici portları necə ayırmasından asılıdır və xəritələmə davranışının əhəmiyyətli olduğu yeganə yer budur.
İkisini qarışdırmaq klassik səhv diaqnozu doğurur: bərabər-bərabər funksiyası uğursuz olur, kimsə NAT növü sınağı aparır, ən pis kateqoriyanı görür və adi tunelin də işləyə bilməyəcəyi qənaətinə gəlir. Uğursuz olan heç vaxt tunel deyildi.
Xəritələmə və filtrləmə ayrı xassələrdir
RFC terminologiyası satıcıların istifadə etdiyi adlardan daha dəqiqdir və onu bilete köçürməyə dəyər, çünki mübahisələri həll edir. Xəritələmə xarici portun necə ayrıldığıdır. Filtrləmə hansı gələn paketlərin keçməsinə icazə verildiyidir. Şəbəkə birində sərt, digərində sərbəst ola bilər və bərabər-bərabər protokolunun sağ qalmalı olduğu kombinasiya elə budur.
| Behaviour | What it means | Effect on a direct peer path |
|---|---|---|
| Endpoint-independent mapping | One external port for every destination | Discovery works if the port is advertised |
| Address-dependent mapping | New port per remote address | Works only if both sides probe the same pair |
| Address-and-port-dependent | New port per remote address and port | Usually needs a relay |
Üçüncü sətir əksər istehlakçı marşrutlaşdırıcılarının və mobil operatorların simmetrik dedikdə nəzərdə tutduğu şeydir. Qeyd edin ki, etiket yalnız ayırmaya aiddir. Belə xəritələmə və sərbəst filtrləmə olan şəbəkə hələ də təzəcə ayırdığı porta gələn paketləri qəbul edə bilər, buna görə dəlik açma bəzilərində uğur qazanır, digərlərində uğursuz olur.
Filtrləmənin öz üç halı və hər biri üçün öz adı var. “simmetrik NAT” yazmaq, halbuki “ünvana və porta bağlı filtrləmə” nəzərdə tutulur, növbəti adamı təlimatın səhv fəslinə göndərir. İkisi sınaqda fərqli davranır, ona görə də səhv nəzəri deyil.
Xəritələməni adlandırmaq əvəzinə ölçün
Ayrılmış portu nəzarət etdiyiniz istənilən UDP xidmətinin server tərəfindən birbaşa müşahidə edə bilərsiniz. İctimai hostda tutmağa başlayın, müştəridən göndərin və paketin gəldiyi mənbə portunu oxuyun:
sudo tcpdump -ni eth0 -c 10 'udp port 51820'
sudo wg show wg0 endpoints
sudo conntrack -L -p udp --dport 51820
Son nöqtə sətri üçün ən faydalısıdır, çünki WireGuard hər bərabər üçün son aldığı ünvanı və portu qeyd edir. Həmin portu müştərinin istifadə etdiyini düşündüyü portla müqayisə edin. Hər hansı çevirmə baş verdikdə onlar fərqlənəcək və əsas sual dəyərin sabit qalıb-qalmamasıdır.
Müşahidəni ikinci hədəf portuna və ya ikinci serverə qarşı təkrarlayın və yenidən müqayisə edin. Əgər xarici port hədəfə görə dəyişirsə, xəritələmə ünvana və porta bağlıdır. Əgər eyni qalırsa, şəbəkə sizə bir xəritələmə verir və kəşfin şansı olur.
STUN əsaslı alətlər eyni təsnifatı bir addımda bildirir və şəbəkə ictimai STUN serverinə çıxan UDP-yə icazə verdikdə onlardan istifadə etmək olar. İcazə vermədikdə yuxarıdakı tutma üsulu hələ də işləyir və artıq nəzarət etdiyiniz hostdan başqa heç nə tələb etmir.
Nasazlığa uyğun düzəliş seçin
Uğursuz funksiya bərabər-bərabərdirsə, dəstəklənən cavablar ötürücü, hər iki bərabərin çata bildiyi görüş xidməti və ya fərqli topologiyadır. TURN məhz bunun üçün mövcuddur və öz ötürücüsünü təqdim edən məhsul bəzi şəbəkələrin düşmən olacağını gözlədiyini bildirir.
Uğursuz funksiya adi tuneldirsə, xəritələmə davranışı sizin probleminiz deyil və yuxarıdakıların heç biri tətbiq olunmur. Müştərinin həqiqətən göndərdiyini, serverin paketi gördüyünü və cavabın geri gəldiyini yoxlayın. Bu ardıcıllıq üç müşahidədir və marşrutlaşdırıcının NAT kateqoriyası haqqında heç nə bilməyi tələb etmir.
İşləməyən şey nəsə qoşulana qədər yerli port dəyişikliklərini səpələməkdir. Müştərinin mənbə portunu dəyişmək şəbəkənin xəritələmələri necə ayırmasına təsir etmir. Beşinci cəhddə təsadüfi uğur yalançı müsbətdir və aylarla düzəliş kimi sitat gətiriləcək.
Hökmü deyil, arxitekturanı qeyd edin
Faydalı qeyd hansı protokolun, sessiyanın hansı istiqamətdə başladığını, yolda ötürücünün olub-olmadığını və naqildə nə müşahidə edildiyini bildirir. “simmetrik NAT, işləmir” yararsızdır, çünki eyni zamanda tunel barədə yanlışdır və bərabər yolu barədə məlumatsızdır.
Ölçülmüş port sabitliyini və filtrləmə davranışını sınaqdan keçirdinizsə, onları da əlavə edin. Bu iki fakt başqasına bütün araşdırmanı təkrarlamadan yeni funksiyanın həmin şəbəkədə işləyib-işləməyəcəyini proqnozlaşdırmağa imkan verir. Həm də hər yardım səhifəsində bir az fərqli məna daşıyan satıcı kateqoriyasından daha yaxşı köhnəlir.
Nəhayət, yazarkən RFC 4787 terminologiyasını əlinizdə saxlayın. Dəqiq terminlərdən istifadə bir cümləyə başa gəlir və növbəti oxucunun eyni səhv diaqnozu təkrarlamasının qarşısını alır, qeydi yazmağın bütün mənası da budur.