PPTP ulanadi va keyin Linux NAT ortida osilib qoladi: GRE yordamchisi
TCP 1723 ulanadi va ma'lumot yo'li o'ladi: PPTP portlari yo'q GRE ichida yuradi. Yordamchilarni yuklang, ularni aniq ulang va 47 protokolni oching.
Kimdir 1723-ni yo'naltiradi, mijoz serverga yetib boradi, autentifikatsiya boshlanadi va keyin hamma narsa xatosiz to'xtaydi. Tabiiy xulosa — noto'g'ri parol, shuning uchun parol uch marta qayta teriladi. Yo'naltirish joyida edi va hisob ma'lumotlari joyida edi. Buzilgan narsa — yo'naltirish hech qachon qamramagan ikkinchi protokol va u bilan yordam berishni jimgina to'xtatgan yadro standart qiymati.
Yo'naltirish hech qachon muammo bo'lmagan
Port yo'naltirish qoidasi TCP yoki UDP trafigini tavsiflaydi. U sessiya o'rtasida boshqa IP protokoliga o'tadigan yukni tavsiflay olmaydi va PPTP aynan shunday qiladi.
Shuning uchun ulanish osilib qolgan paytgacha sog'lom ko'rinadi. Port qoidasi boshqara oladigan qism muvaffaqiyatli bo'ldi, boshqara olmaydigan qism esa aynan muvaffaqiyatsiz qismdir.
Boshqarish uchun TCP, ma'lumot uchun GRE
Qo'ng'iroq TCP 1723 orqali kelishiladi. U ko'tarilgach, yuk GRE ga, IP 47 protokoliga o'tadi va u hech qanday port raqamini olib yurmaydi. Portlarga tayanadigan qoidaning solishtiradigan hech narsasi yo'q.
GRE olib yuradigan narsa — sarlavhasidagi qo'ng'iroq identifikatori, va NAT tarjimon bu maydonni ikkala yo'nalishda ham izchil qayta yozishi kerak, aks holda sessiyaning ikki yarmi bir-biri bilan kelisha olmay qoladi. Bir yo'nalish qayta yozilib, ikkinchisi yozilmasa, autentifikatsiyadan o'tib, keyin har bir ma'lumot paketini tashlaydigan sessiya hosil bo'ladi. Alomatning shakli aynan shu: muvaffaqiyat, keyin sukunat.
PPTPsiz yalang'och GRE bunday qayta yozishni talab qilmaydi, shuning uchun oddiy GRE tunnel ayni yo'lda PPTP mijozi uchun muvaffaqiyatsiz bo'ladigan router orqali ishlashi mumkin.
To'rt modul va ularni o'chirgan sysctl
Ikki modul ramkalashni boshqaradi, nf_conntrack_proto_gre va nf_nat_proto_gre. Yana ikkitasi qo'ng'iroq identifikatorini boshqaradi, nf_conntrack_pptp va nf_nat_pptp. Oxirgisini yuklash qolganlarini bog'liqliklar orqali tortadi, shuning uchun modullar ro'yxati to'rttasini ham ko'rsatishi kerak.
Eski ko'rsatmalar 2.6 davrining ip_ prefiksidan foydalanadi. Bu buyruqlar hech narsa yuklamasdan ishlayotgandek ko'rinishi mumkin, shuning uchun chiqish holatini emas, yuklangan ro'yxatni tekshiring.
Ularning yuklangan bo'lishi endi yetarli emas. Linux 4.7 dan beri net.netfilter.nf_conntrack_helper sysctl standart bo'yicha 0, bu yangi oqimlar uchun avtomatik yordamchi tayinlashni o'chiradi. Routerda barcha modullar bo'lishi mumkin va baribir hech narsa tarjima qilinmaydi. Modullar ro'yxatini yana ko'rishdan oldin samarali qiymatni tekshiring.
Yo avtomatik tayinlashni global miqyosda qayta yoqing, yo yordamchini unga muhtoj oqimlarga ulang va qolganini o'z holicha qoldiring:
iptables -t raw -A PREROUTING -p tcp --dport 1723 -j CT --helper pptpIkkinchi variant afzal. U butun routerda avtomatik tayinlashni qayta yoqish o'rniga xatti-harakatni PPTP trafigi bilan cheklaydi.
Portlari yo'q protokolni ochish
1723 ga ruxsat beruvchi xavfsizlik devori qoidasi 47 protokoli haqida hech narsa demaydi. firewalld da protokolga mijozga qaragan zonada ruxsat bering. Oddiy iptables da kirish zanjirida gre protokolini qabul qiling.
Keyin ikkala tomonda ham ushlang. Mijozdan chiqayotgan paketlarga javob kelmasa, qaytish yo'li filtrlangan bo'ladi va bu rad etilgan hisob ma'lumotlaridan boshqa nosozlik.
Ulanganidan keyin o'lcham chegarasi
GRE sarlavha qo'shadi, ichidagi PPP yana qo'shadi, shuning uchun ishlaydigan aloqa 1500 dan ancha past MTU haqida xabar beradi. Kichik javoblar yuklanadi, kattalari osilib qoladi, bu birinchi muammo hal bo'lgan paytda paydo bo'ladigan ikkinchi, aloqasiz muammoga o'xshaydi.
Mijozning PPP adapterida MTU ni o'qing va uni routerning o'z hisobi bilan moslang biror narsa ishlaguncha raqamlarni pasaytirish o'rniga. To'liq o'lchamli paketlar chiqib, hech narsa qaytmasa, bu tarjimaga emas, o'sha chegaraga ishora qiladi.
Yo'lni tuzatish foydalanuvchini ishga qaytaradi va bu PPTP ni yaxshi tanlovga aylantirmaydi. MS-CHAPv2 va RC4 anchadan beri eskirgan, shuning uchun modullarni yuklashni vaqtinchalik tuzatish deb biling va qo'llab-quvvatlanadigan protokolga o'tishni rejalashtiring.