PPTP қосылады, содан кейін Linux NAT артында ілінеді: GRE көмекшісі
TCP 1723 қосылады, бірақ деректер жолы өледі: PPTP порттары жоқ GRE ішінде жүреді. Көмекшілерді жүктеңіз, оларды анық тіркеңіз және 47 протоколын ашыңыз.
Біреу 1723-ті бағыттайды, клиент серверге жетеді, аутентификация басталады, содан кейін бәрі қатесіз тоқтайды. Табиғи қорытынды — қате құпия сөз, сондықтан құпия сөз үш рет қайта теріледі. Бағыттау дұрыс еді және тіркелгі деректері дұрыс еді. Сынғаны — бағыттау ешқашан қамтымаған екінші протокол және оған көмектесуді тыныш тоқтатқан ядроның әдепкі мәні.
Бағыттау ешқашан мәселе болған емес
Портты бағыттау ережесі TCP немесе UDP трафигін сипаттайды. Ол сессия ортасында басқа IP протоколына ауысатын жүктемені сипаттай алмайды, ал PPTP дәл солай істейді.
Сондықтан қосылым ілінген сәтке дейін сау көрінеді. Порт ережесі басқара алатын бөлік сәтті болды, ал басқара алмайтын бөлік — дәл сол сәтсіз бөлік.
Басқару үшін TCP, деректер үшін GRE
Қоңырау TCP 1723 арқылы келісіледі. Ол көтерілгеннен кейін жүктеме GRE-ге, IP 47 протоколына өтеді, ол порт нөмірлерін мүлдем тасымалдамайды. Порттарға сүйенетін ереженің салыстыратын ештеңесі жоқ.
GRE тасымалдайтыны — тақырыбындағы қоңырау идентификаторы, және NAT аудармашысы сол өрісті екі бағытта да дәйекті түрде қайта жазуы керек, әйтпесе сессияның екі жартысы бір-бірімен келісуді тоқтатады. Бір бағыт қайта жазылып, екіншісі жазылмаса, аутентификациядан өтіп, содан кейін әрбір деректер пакетін лақтыратын сессия пайда болады. Симптомның пішіні дәл осы: сәттілік, содан кейін тыныштық.
PPTP жоқ жалаң GRE мұндай қайта жазуды қажет етпейді, сондықтан қарапайым GRE туннелі сол жолдағы PPTP клиенті үшін сәтсіз болатын маршрутизатордан өте алады.
Төрт модуль және оларды өшірген sysctl
Екі модуль кадрлауды өңдейді, nf_conntrack_proto_gre және nf_nat_proto_gre. Тағы екеуі қоңырау идентификаторын өңдейді, nf_conntrack_pptp және nf_nat_pptp. Соңғысын жүктеу қалғандарын тәуелділіктер арқылы тартады, сондықтан модульдер тізімі төртеуін де көрсетуі керек.
Ескі нұсқаулықтар 2.6 дәуірінің ip_ префиксін пайдаланады. Бұл командалар ештеңе жүктемей тұрып жұмыс істеп жатқандай көрінуі мүмкін, сондықтан шығу күйін емес, жүктелген тізімді тексеріңіз.
Олардың жүктелуі енді жеткіліксіз. Linux 4.7-ден бастап net.netfilter.nf_conntrack_helper sysctl әдепкі бойынша 0, бұл жаңа ағындар үшін көмекшіні автоматты тағайындауды өшіреді. Маршрутизаторда барлық модуль болуы мүмкін және бәрібір ештеңе аударылмауы мүмкін. Модульдер тізімін қайта қарар алдында әсерлі мәнді тексеріңіз.
Не автоматты тағайындауды жаһандық түрде қайта қосыңыз, не көмекшіні оған мұқтаж ағындарға тіркеп, қалғанын тыныш қалдырыңыз:
iptables -t raw -A PREROUTING -p tcp --dport 1723 -j CT --helper pptpЕкінші нұсқа қолайлырақ. Ол мінез-құлықты бүкіл маршрутизаторда автоматты тағайындауды қайта қосуға емес, PPTP трафигімен шектейді.
Порттары жоқ протоколды ашу
1723-ке рұқсат беретін брандмауэр ережесі 47 протоколы туралы ештеңе айтпайды. firewalld-те протоколды клиентке қараған аймақта рұқсат етіңіз. Қарапайым iptables-те кіру тізбегінде gre протоколын қабылдаңыз.
Содан кейін екі жақта да түсіріңіз. Клиенттен шыққан пакеттерге жауап келмесе, қайтару жолы сүзілген, және бұл қабылданбаған тіркелгі деректерінен өзге ақау.
Қосылғаннан кейін өлшем шегі
GRE тақырып қосады, ал оның ішіндегі PPP тағы қосады, сондықтан жұмыс істеп тұрған байланыс 1500-нен әлдеқайда төмен MTU хабарлайды. Кіші жауаптар жүктеледі, ал үлкендері ілінеді, бұл бірінші мәселе шешілген сәтте пайда болатын екінші, байланыссыз мәселеге ұқсайды.
Клиенттің PPP адаптеріндегі MTU-ды оқып, оны маршрутизатордың өз есебімен үйлестіріңіз бірдеңе істегенше сандарды төмендетудің орнына. Толық өлшемді пакеттер шығып, ештеңе қайтпаса, бұл аудармаға емес, сол шекке нұсқайды.
Жолды жөндеу пайдаланушыны жұмысқа қайтарады, бірақ PPTP-ні жақсы таңдауға айналдырмайды. MS-CHAPv2 мен RC4 әлдеқашан ескірген, сондықтан модульдерді жүктеуді уақытша түзету деп қарап, қолдау көрсетілетін протоколға көшуді жоспарлаңыз.