Ev yönlendiricisinin arkasında PPTP sunucusu: önce 1723 ve GRE'yi düzeltin
Ev yönlendiricisinin arkasında PPTP çalıştırın: TCP 1723, IP protokolü 47, geçiş onay kutusu ve MTU aritmetiği, ayrıca L2TP veya OpenVPN'in daha iyi takas olduğu durumlar.
Ev yönlendiricisinin arkasında PPTP iki ilgisiz şekilde başarısız olur ve ikisini karıştırmak bütün bir akşama mal olur. Arızalardan biri yönlendirmedeki boşluktur: yönlendirici TCP 1723'ü geçirir ve IP protokolü 47'yi düşürür, bu yüzden istemci 619 hatasında asılı kalır. Diğeri boyut sorunudur: tünel açılır, kimlik doğrular ve ardından tam boyutlu bir paketin geçmesi gerektiğinde donar. Hangisinin sizde olduğunu bulmak ilk gerçek adımdır; geri kalanı yönlendiricinizin neyi ifade edebildiğini karşılaştırır, hangi markanın daha iyi olduğunu değil.
İki taşıyıcı ve yalnızca birinde bağlantı noktası var
PPTP iki taşıyıcıya ayrılır: TCP 1723 üzerindeki denetim bağlantısı ve genişletilmiş GRE içine sarılmış PPP çerçeveleri, yani IP protokolü 47. GRE'nin bağlantı noktası numarası yoktur, bu yüzden 1723 bağlantı noktası yönlendirmesi olarak yazılan bir kural onu kapsayamaz, web arayüzü o alanı nasıl adlandırırsa adlandırsın. Ev yönlendiricisi genellikle protokol kuralı yerine PPTP geçişi adlı bir onay kutusu sunar ve o kutu iki iş yapar: protokol 47'yi güvenlik duvarından geçirir ve NAT'a GRE akışını izlemeyi öğretir. Linux yönlendiricide bu işler ayrı modüller ve ayrı kurallardır, bu yüzden yarım yapılandırılmış bir geçiş yine de çalışan bir denetim kanalı verir. Bir şeyi değiştirmeden önce hangi yarının bulunduğunu bulun.
Sunucunun kendi güvenlik duvarı da yönlendirici adresinden protokol 47'ye izin vermelidir. Yalnızca 1723/tcp kabul eden bir ana bilgisayar güvenlik duvarı 619 hatasını LAN içinden yeniden üretir, bu da bozuk yönlendirme ile bozuk ana bilgisayar kuralının aynı görünmesine yol açar.
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'
Modüller yoksa bunları sudo modprobe nf_conntrack_proto_gre nf_nat_proto_gre ile yükleyin ve yüklemeyi kalıcı yapın, çünkü yardımcıyı unutan bir yeniden başlatma çalışan tüneli yeniden 619 hatasına çevirir. Yönlendirme kuralı protokol 47'yi yalnızca sunucu adresine doğru kabul etmeli, tüm LAN'a değil. RFC 2637 tanımı denetim ve veri yolunu ayırır, bu yüzden hiçbir tek bağlantı noktası yönlendirme ekranı PPTP'yi tam olarak tanımlamaz.
Geçiş onay kutusu ya da açık protokol kuralı
Yalnızca güvenlik duvarını açan bir geçiş onay kutusu, çağrı tanımlayıcılarını yeniden yazan bir ALG'den doğruya daha yakındır. Güvenlik duvarı yarısı öngörülebilirdir, çünkü protokol 47 ya kabul edilir ya düşürülür ve sayaçlar hangisi olduğunu söyler. Yeniden yazma yarısı üreticilerin ayrıldığı yerdir, çünkü PPTP çağrı tanımlayıcıları tünel başınadır ve bunları düzenleyen NAT dokunduğu her çağrıyı izlemek zorundadır. Bir istemci bağlanıp iki istemci bağlanmadığında ALG ilk şüphelidir.
1723 için hedef NAT kuralı da sahiplik sorunu taşır. Eski bir kural hâlâ 1723'ü sunucuyu çalıştırmayı bırakmış bir ana bilgisayara gönderiyorsa paketler kapalı bir bağlantı noktasına düşer ve yönlendiricinin kendi PPTP hizmeti yanıt vermeyi bırakır; bu güvenlik duvarı arızası gibi okunur ama aslında eskimiş bir hedeftir. İkinciyi eklemeden önce kuralı ve hedefini okuyun. PPTP'yi kendileri sonlandıran yönlendiricilerde WAN kuralı yerleşik hizmetle yarışır, bu yüzden 1723 ve protokol 47 için tek bir sahip seçin.
Aynı NAT arkasındaki iki istemci, basit yönlendirmeyi akıllı olandan ayıran durumdur. Protokol 47'yi çağrı tanımlayıcılarını yeniden yazmadan yönlendirmek genellikle onları düzeltmeye çalışan bir yardımcıdan daha iyi davranır.
Yönlendiriciyi suçlamadan önce tüneli ölçün
PPTP kullanılabilir yükü küçültür ve bu küçülme gizem değil aritmetiktir. Her tünel paketi bir dış IP başlığı, genişletilmiş GRE başlığı, PPP başlığı ve şifreleme varsa MPPE başlığı taşır. Yol, ortaya çıkan çerçeveyi taşıyamadığında küçük paketler geçer, oturum açma tamamlanır ve oturum ilk kez bir dosya aktarımı veya TLS el sıkışması tam boyutlu paket gönderdiğinde durur.
Sayıyı tahmin etmek yerine hesaplayın. Genişletilmiş GRE 8 bayt, PPP 4 bayt, MPPE 4 bayt ve dış IP başlığı 20 bayt tutar, bu yüzden tünel herhangi bir yükten önce 36 bayt yer. 1492'de biten bir PPPoE WAN'da sığan en büyük PPP MTU 1492 eksi 36, yani 1456'dır. PPP seçeneklerinde mtu ve mru değerlerini buna ayarlayın ve parçalanmasız ping ile yeniden test edin.
ping -M do -s 1464 198.51.100.7
grep -E '^(mtu|mru)' /etc/ppp/options.pptpd
Ping yolu ölçer, tüneli değil: 1464 bayt yük artı 28 bayt IP ve ICMP başlığı 1492 baytlık çerçeveyi tam olarak doldurur. Bu ping başarısız olursa sayıyı geçene kadar düşürün ve sonuçtan 36 çıkarın. Yol sınırının üstüne ayarlanmış tünel MTU'su, boyuttan söz eden tek bir günlük satırı olmadan donmayı üretir.
Aynı yönlendiricide PPTP, L2TP/IPsec veya OpenVPN
Aynı yönlendirici üç yaygın tünelden herhangi birini taşıyabilir ve fark neyi ifade etmesi gerektiğidir. PPTP iki farklı katmanda iki kural ister. IPsec üzerinde L2TP anahtar değişimi için UDP 500 ve 4500 ister ve NAT-T bunu taşımıyorsa yük için protokol 50 ister. OpenVPN tek bir UDP bağlantı noktası ister ve hiç yardımcı istemez.
| Tunnel | What the router must allow | Practical note |
|---|---|---|
| PPTP | TCP 1723 and IP protocol 47 | Two transports, two rules |
| L2TP/IPsec | UDP 500, UDP 4500, protocol 50 without NAT-T | ESP has no port either |
| OpenVPN | UDP 1194 or a chosen TCP port | Single rule, no helper |
L2TP sütunu otomatik olarak GRE'den daha dostça değildir. ESP, IP protokolü 50'dir ve onun da bağlantı noktası yoktur, bu yüzden protokol 47 ile zorlanan bir yönlendirici aynı nedenle protokol 50 ile de zorlanabilir. NAT-T, ESP'yi UDP 4500 içine sarmak için vardır ve iki uç da desteklediğinde protokol 50 kuralı gereksizleşir. Bu uçların özelliğidir, yönlendiricinin PPTP kutusunun değil. İkisi için de kural yazmadan önce istemcinin gerçekte hangi kapsüllemeyi kararlaştırdığını doğrulayın.
OpenVPN, yönlendirici tarafında en az hareketli parçaya sahip seçenektir. Tek UDP bağlantı noktası, tek yönlendirme, bağlantı izleme yardımcısı yok ve çağrı tanımlayıcısı yeniden yazımı yok. Takas, yerleşik çevirici yerine kurulması gereken bir istemcidir ve PPTP'nin konuşmada kalmasının tek nedeni çoğu zaman budur.
Neyi onarmalı, neyi değiştirmeli
Yönlendirmeyi ve MTU'yu düzeltmek size çalışan bir tünel verir, saklanması gereken bir tünel değil. PPTP'nin MSCHAPv2 kimlik doğrulaması yıllardır saldırıya açıktır ve çalışan bir tünel çevrimdışı kurtarılabilen kimlik bilgilerini taşır. Uzak cihaz L2TP/IPsec veya OpenVPN çalıştırabiliyorsa onarımı tarihli geçici bir önlem olarak görün.
Karar, uzak ucun neyi desteklediğine ve düzenlemenin ne kadar sürmesi gerektiğine bağlıdır. Yalnızca PPTP konuşan eski bir cihaz onarımı alır; istemci kurulabilen her şey taşınır.
Kaydı kapatmadan önce istemcinin yalnızca oturum açmayı değil büyük bir aktarımı atlattığını ve yönlendiricinin yeniden başlatmadan sonra da protokol 47 kuralını tuttuğunu doğrulayın. Bir dosya kopyasını geçip sonraki yazılım güncellemesinden sonra ölen bir tünel hiçbir zaman tamamlanmamıştır.