Pazartesi, Kasım 4, 2024

CGNAT’ı atlatma: VPN ile Port Yönlendirme Kılavuzu

macbook pro ile çalışan esmer kıvırcık saçlı bir bayan

Vakti zamanında CGNAT Nedir demiş ve gerekli açıklamalarda bulunmuştuk. Ziyaretçilerimizin kafasındaki sorulara yanıt bulmaya çalışmıştık.

CGNAT günümüzde özellikle büyük ISP’lerin bölgeleri ölçeklendirme de kullandıkları bir yapı, IPv4’lerin bittiği şu günlerde kısıtlı imkanlar ile büyük ağlardaki kullanıcıya hizmet verilebiliyor. Hatta private dediğimiz lokal network iplerini bile dışarı açıp kullanabilme imkanımız var.

Bu yapılanlar bir yana CGNAT içerisinde olan bir kişi dışarıya port yönlendirmesi yapamaz. Hatta kimi yapılandırmalar da kullanıcıların VPN servislerine bağlanması bile kısıtlanabilir.

Yapılandırmamıza başlamadan önce VPN için bir servis belirlemeniz gerekiyor paralı servisler direk olarak port yönlendirme hizmeti sunuyor ise aşağıdaki yapacaklarınızı pas geçip direk firmanın size sunmuş olduğu özelliği kullanabilirsiniz. Sunucu kuracaksanız da bu makalemize devam edin.

AWS EC2’nin serbest katman özelliğiyle başladık, bu da ihtiyacım olan şey için fazlasıyla yeterli, ayrıca bir yıl da ücretsiz. Ücretsiz kullanım bittikten sonra devam edebilir ve tercih ettiğiniz Linux dağıtımını kullanmaya devam edebilirsiniz.

Burada önemli olan nokta makinaya OpenVPN kurmanız gerektiği, bunun için daha önceden yayınladığım bir makalemi kullanabilirsiniz Ubuntu Üzerine OpenVPN kurulumunu gerçekleştirebilirsiniz.

Çalışmasını istediğimiz VPN tunel sistemi

network-semasi-cgnat

Yukarıdaki şemadaki yeşil rota, bir VPN sunucusu yoluyla Masaüstüne ulaşmak için uzak bilgisayar arasındaki bağlantıyı gösterir.

Temel olarak, Masaüstü bilgisayarınızın bir istemci vasıtasıyla VPN sunucusuna bağlanması gerekir; bu, Desktop’ın sanki VPN sunucusu ile aynı ağda olduğu gibi olacak bir tünel oluşturacaktır.

İçeri girdiğinizde ayarlamaları ve yönlendirmeleri yapmak için AWS EC2 makinasının SSH bağlantısına kabuk aracılığı ile tekrar erişmeliyiz ki AWS EC2 makinanın ayarlarına ulaşıp port yönlendirmesini yapabilelim.

Peki port yönlendirme işlemi nasıl yapılacak

Makinamız ubuntu olduğu için /etc/ufw/before.rules konumundaki dosyayı açıyoruz ve içerisini aşağıdaki gibi düzenliyoruz.

*nat
-A PREROUTING -i eth0 -p tcp --dport 4343 -j DNAT --to-destination 10.10.10.10:4343
-A PREROUTING -i eth0 -p udp --dport 4343 -j DNAT --to-destination 10.10.10.10:4343
...
COMMIT  

10.10.10.10 numaralı ip adresi bizim temelde kullandığımız makina IP adresimizdir. VPN bağlandığımızda OpenVPN bize yapılan konfigürasyona göre 10.* ile başlayan bir ip verecektir.

Yukarıdaki satırların aslında yaptığı temelde 4343 numaralı bağlantı noktasındaki sunucumuza 4343 numaralı bağlantı noktasındaki istemcimizin bilgisayarına yapılan bağlantıları yönlendirir.

Ayarların başarılı olabilmesi için güvenlik duvarında bi yeniden başlatma işlemi yapmamızda gerekiyor.

sudo ufw disable  
sudo ufw enable  

Eğer VPN sunucusuna bağlıysanız bağlantınızı yeniden başlatmanız gerektiğinide unutmayın.

Benim bahsettiğim gibi AWS kullanıyorsanız. Port ayarlarınıza CGNAT için açtığınız portu belirtmeniz ve güvenlik kurallarını güncellemeniz gerekir.

Bağlantınızın çalışıp çalışmadığını ise karşı bilgisayara aşağıdaki gibi bir istek atarak anlayabilirsiniz.

ssh -p2222 mertcan@<sunucu-ip>

Kullanıcı, mertcan benim masaüstü bilgisayarımda var, ancak AWS sunucumda yok. Bununla birlikte, AWS sunucusunun IP adresinden mertcan olarak oturum açmamın nedeni, port 4343’den AWS sunucusundan masaüstü bilgisayara bağlantıları iletmesinden kaynaklanıyor, dolayısıyla burada SSH girişi aslında masaüstü bilgisayarda AWS sunucusu oluyor.

Her şey gayet güzel giderse makinaya bağlantı sağlayabilecek ve açık portunuz ile istediğinizi yapabileceksiniz.