PPTP di belakang router rumah gagal dalam dua cara yang tidak berkaitan, dan mengelirukan keduanya menghabiskan satu malam penuh. Satu kegagalan ialah jurang penghantaran: router meluluskan TCP 1723 tetapi menggugurkan protokol IP 47, jadi klien tergantung pada ralat 619. Yang lain ialah masalah saiz: terowong naik, disahkan, kemudian membeku apabila paket bersaiz penuh perlu melintas. Mengetahui yang mana satu anda hadapi ialah langkah sebenar pertama; selebihnya membandingkan apa yang router anda boleh nyatakan, bukan jenama mana yang lebih baik.

Dua pengangkut, dan hanya satu mempunyai port

PPTP terbahagi kepada dua pengangkut: sambungan kawalan pada TCP 1723, dan bingkai PPP yang dibalut dalam GRE diperluas, iaitu protokol IP 47. GRE tiada nombor port, jadi peraturan yang ditulis sebagai penghantaran port 1723 tidak dapat meliputinya, walau apa pun nama yang diberi oleh antara muka web kepada medan itu. Router rumah biasanya menawarkan kotak semak bernama passthrough PPTP dan bukannya peraturan protokol, dan kotak itu melakukan dua tugas: membenarkan protokol 47 melalui tembok api, dan mengajar NAT cara menjejaki aliran GRE. Pada router Linux tugas itu ialah modul berasingan dan peraturan berasingan, sebab itulah passthrough yang baru separuh dikonfigurasikan masih menghasilkan saluran kawalan yang berfungsi. Ketahui separuh mana yang ada sebelum mengubah apa-apa.

Tembok api pelayan itu sendiri juga mesti membenarkan protokol 47 dari alamat router. Tembok api hos yang hanya menerima 1723/tcp menghasilkan semula ralat 619 dari dalam LAN, sehingga penghantaran yang rosak dan peraturan hos yang rosak kelihatan sama.

sudo iptables -S FORWARD | grep -i gre
sudo nft list ruleset | grep -i gre
lsmod | grep -E 'nf_conntrack_proto_gre|nf_nat_proto_gre'

Jika modul tiada, muatkannya dengan sudo modprobe nf_conntrack_proto_gre nf_nat_proto_gre dan jadikan pemuatan itu kekal, kerana but semula yang terlupa pembantu menjadikan terowong yang berfungsi kembali kepada ralat 619. Peraturan penghantaran hanya perlu menerima protokol 47 ke arah alamat pelayan, bukan seluruh LAN. Definisi RFC 2637 memisahkan laluan kawalan dan data, sebab itulah tiada satu skrin penghantaran port yang menerangkan PPTP sepenuhnya.

Kotak semak passthrough atau peraturan protokol yang jelas

Kotak semak passthrough yang hanya membuka tembok api lebih dekat kepada yang betul daripada ALG yang menulis semula pengecam panggilan. Separuh tembok api boleh dijangka, kerana protokol 47 sama ada diterima atau digugurkan, dan pembilang menunjukkan yang mana. Separuh penulisan semula ialah tempat pengeluar berbeza, kerana pengecam panggilan PPTP adalah bagi setiap terowong dan NAT yang menyuntingnya mesti menjejaki setiap panggilan yang disentuhnya. Apabila satu klien bersambung dan dua tidak, ALG ialah suspek pertama.

Peraturan NAT destinasi untuk 1723 juga mempunyai masalah pemilikan. Jika peraturan lama masih menghantar 1723 ke hos yang berhenti menjalankan pelayan, paket mendarat pada port tertutup dan perkhidmatan PPTP router itu sendiri berhenti menjawab, yang dibaca seperti kegagalan tembok api tetapi sebenarnya sasaran lapuk. Baca peraturan dan destinasinya sebelum menambah yang kedua. Pada router yang menamatkan PPTP sendiri, peraturan WAN bersaing dengan perkhidmatan terbina dalam, jadi pilih satu pemilik untuk 1723 dan protokol 47.

Dua klien di belakang NAT yang sama ialah kes yang memisahkan penghantaran mudah daripada yang pintar. Menghantar protokol 47 tanpa menulis semula pengecam panggilan biasanya berkelakuan lebih baik daripada pembantu yang cuba membetulkannya.

Ukur terowong sebelum menyalahkan router

PPTP mengecilkan muatan berguna, dan pengecilan itu ialah aritmetik, bukan misteri. Setiap paket terowong membawa tajuk IP luar, tajuk GRE diperluas, tajuk PPP dan, dengan penyulitan, tajuk MPPE. Apabila laluan tidak dapat membawa bingkai yang terhasil, paket kecil lolos, log masuk selesai, dan sesi terhenti pertama kali pemindahan fail atau jabat tangan TLS menghantar paket bersaiz penuh.

Hitung nombornya daripada menekanya. GRE diperluas berharga 8 bait, PPP berharga 4, MPPE berharga 4, dan tajuk IP luar berharga 20, jadi terowong memakan 36 bait sebelum sebarang muatan. Pada WAN PPPoE yang berakhir pada 1492, PPP MTU terbesar yang muat ialah 1492 tolak 36, iaitu 1456. Tetapkan mtu dan mru kepada nilai itu dalam pilihan PPP dan uji semula dengan ping tanpa pemecahan.

ping -M do -s 1464 198.51.100.7
grep -E '^(mtu|mru)' /etc/ppp/options.pptpd

Ping mengukur laluan, bukan terowong: 1464 bait muatan ditambah 28 bait tajuk IP dan ICMP mengisi tepat bingkai 1492 bait. Jika ping itu gagal, turunkan nombornya sehingga ia lolos dan tolak 36 daripada hasilnya. MTU terowong yang ditetapkan melebihi had laluan menghasilkan pembekuan tanpa satu baris log yang menyebut saiz.

PPTP, L2TP/IPsec atau OpenVPN pada router yang sama

Router yang sama boleh membawa mana-mana satu daripada tiga terowong biasa, dan perbezaannya ialah apa yang perlu dinyatakan. PPTP memerlukan dua peraturan dalam dua lapisan berbeza. L2TP di atas IPsec memerlukan UDP 500 dan 4500 untuk pertukaran kunci dan, melainkan NAT-T membawanya, protokol 50 untuk muatan. OpenVPN memerlukan satu port UDP dan tiada pembantu sama sekali.

TunnelWhat the router must allowPractical note
PPTPTCP 1723 and IP protocol 47Two transports, two rules
L2TP/IPsecUDP 500, UDP 4500, protocol 50 without NAT-TESP has no port either
OpenVPNUDP 1194 or a chosen TCP portSingle rule, no helper

Lajur L2TP tidak semestinya lebih mesra daripada GRE. ESP ialah protokol IP 50 dan juga tiada port, jadi router yang menghadapi kesukaran dengan protokol 47 mungkin menghadapi kesukaran dengan protokol 50 atas sebab yang sama. NAT-T wujud untuk membalut ESP di dalam UDP 4500, dan apabila kedua-dua hujung menyokongnya peraturan protokol 50 menjadi tidak perlu. Itu sifat hujung-hujung, bukan sifat kotak PPTP router. Sahkan enkapsulasi mana yang benar-benar dirundingkan oleh klien sebelum menulis peraturan untuk kedua-duanya.

OpenVPN ialah pilihan dengan bahagian bergerak paling sedikit di sebelah router. Satu port UDP, satu penghantaran, tiada pembantu penjejakan sambungan dan tiada penulisan semula pengecam panggilan. Tawarannya ialah klien yang perlu dipasang dan bukannya dailer terbina dalam, dan itulah sering satu-satunya sebab PPTP kekal dalam perbualan.

Apa yang perlu dibaiki dan apa yang perlu diganti

Membaiki penghantaran dan MTU memberi anda terowong yang berfungsi, bukan yang patut disimpan. Pengesahan MSCHAPv2 PPTP telah boleh diserang sejak bertahun-tahun, dan terowong yang berfungsi memindahkan kelayakan yang boleh dipulihkan di luar talian. Jika peranti jauh boleh menjalankan L2TP/IPsec atau OpenVPN, anggap pembaikan itu langkah sementara yang bertarikh.

Keputusan bergantung pada apa yang disokong hujung jauh dan berapa lama aturan itu perlu bertahan. Peranti lama yang hanya bertutur PPTP mendapat pembaikan; apa-apa yang boleh memasang klien akan dimigrasi.

Sebelum menutup tiket, sahkan klien bertahan pada pemindahan besar dan bukan hanya log masuk, dan router masih memegang peraturan protokol 47 selepas but semula. Terowong yang melalui satu salinan fail dan mati selepas kemas kini firmware seterusnya tidak pernah siap.

Artikel berkaitan