Kimsə 1723-ü yönləndirir, müştəri serverə çatır, autentifikasiya başlayır və sonra hər şey xəta olmadan dayanır. Təbii nəticə səhv parol olur, ona görə parol üç dəfə yenidən yazılır. Yönləndirmə qaydasında idi və etimadnamələr qaydasında idi. Sınan şey yönləndirmənin heç vaxt əhatə etmədiyi ikinci protokol və onunla köməyi sakitcə dayandıran kernelin ilkin dəyəri idi.

Yönləndirmə heç vaxt problem deyildi

Port yönləndirmə qaydası TCP və ya UDP trafikini təsvir edir. O, sessiyanın ortasında başqa IP protokoluna keçən yükü təsvir edə bilmir və PPTP məhz bunu edir.

Buna görə bağlantı donana qədər sağlam görünür. Port qaydasının idarə edə bildiyi hissə uğur qazandı, idarə edə bilmədiyi hissə isə uğursuz olan hissədir.

İdarəetmə üçün TCP, məlumat üçün GRE

Zəng TCP 1723 üzərində razılaşdırılır. O qalxdıqdan sonra yük GRE-yə, IP protokolu 47-yə keçir və bu, heç bir port nömrəsi daşımır. Portlara görə işləyən qaydanın uyğunlaşdıracaq heç nəyi yoxdur.

GRE-nin daşıdığı şey başlığındakı zəng identifikatorudur və NAT çeviricisi bu sahəni hər iki istiqamətdə ardıcıl şəkildə yenidən yazmalıdır, əks halda sessiyanın iki yarısı bir-biri ilə razılaşmağı dayandırır. Bir istiqamətin yenidən yazılması, digərinin yazılmaması autentifikasiyadan keçən və sonra hər məlumat paketini atan sessiya yaradır. Simptomun forması məhz budur: uğur, sonra sükut.

PPTP olmadan sadə GRE belə yenidən yazmağa ehtiyac duymur, buna görə adi GRE tuneli eyni yolda PPTP müştərisi üçün uğursuz olan marşrutlaşdırıcıdan keçə bilər.

Dörd modul və onları söndürən bir sysctl

İki modul çərçivələmə ilə məşğul olur, nf_conntrack_proto_gre və nf_nat_proto_gre. Daha ikisi zəng identifikatoru ilə məşğul olur, nf_conntrack_pptp və nf_nat_pptp. Sonuncuları yükləmək qalanları asılılıqlar vasitəsilə gətirir, ona görə modul siyahısı dördünü də göstərməlidir.

Köhnə təlimatlar 2.6 dövründən ip_ prefiksindən istifadə edir. Bu əmrlər heç nə yükləmədən işləyirmiş kimi görünə bilər, ona görə çıxış statusuna deyil, yüklənmiş siyahıya baxın.

Onların yüklənməsi artıq kifayət etmir. Linux 4.7-dən bəri net.netfilter.nf_conntrack_helper sysctl dəyəri ilkin olaraq 0-dır və bu, yeni axınlar üçün avtomatik köməkçi təyinatını söndürür. Marşrutlaşdırıcıda bütün modullar ola bilər və yenə də heç nə çevrilməz. Modul siyahısına yenidən baxmazdan əvvəl effektiv dəyəri yoxlayın.

Ya avtomatik təyinatı qlobal olaraq yenidən yandırın, ya da köməkçini ehtiyacı olan axınlara bağlayın və qalan hər şeyi olduğu kimi buraxın:

iptables -t raw -A PREROUTING -p tcp --dport 1723 -j CT --helper pptp

İkinci variant üstünlük veriləndir. O, avtomatik təyinatı bütün marşrutlaşdırıcıda yenidən aktivləşdirmək əvəzinə davranışı PPTP trafikinə məhdudlaşdırır.

Portu olmayan protokolu açmaq

1723-ə icazə verən firewall qaydası 47 protokolu haqqında heç nə demir. firewalld-də protokola müştəriyə baxan zonada icazə verin. Adi iptables-də giriş zəncirində gre protokolunu qəbul edin.

Sonra hər iki tərəfdə tutun. Müştəridən çıxan paketlərə cavab gəlmirsə, qayıdış yolu filtrlənir və bu, rədd edilmiş etimadnamədən fərqli bir nasazlıqdır.

Qoşulduqdan sonra ölçü həddi

GRE başlıq əlavə edir, içindəki PPP isə daha çox əlavə edir, ona görə işləyən keçid 1500-dən xeyli aşağı MTU bildirir. Kiçik cavablar yüklənir, böyükləri isə dayanır və bu, birinci problem həll olunan anda ortaya çıxan ikinci, əlaqəsiz problem kimi görünür.

Müştərinin PPP adapterindəki MTU-nu oxuyun və onu marşrutlaşdırıcının öz hesablaması ilə uzlaşdırın nəyinsə işləməsinə qədər rəqəmləri aşağı salmaq əvəzinə. Tam ölçülü paketlər çıxıb heç nə qayıtmırsa, bu çevrilməyə deyil, həmin həddə işarə edir.

Yolu təmir etmək istifadəçini işlək vəziyyətə gətirir və PPTP-ni yaxşı seçim etmir. MS-CHAPv2 və RC4 çoxdan köhnəlmişdir, ona görə modul yükləməsini müvəqqəti düzəliş kimi qəbul edin və saxlanılan protokola keçidi planlaşdırın.

Əlaqəli məqalələr