Raspberry PI ile VPN Gateway Kuruyoruz (VPN Router)

RaspberryPI VPN Gateway

Kaliteli ve hesaplı VPS (virtual private server) hizmetlerinin çoğalması kişisel projelere ivme kattı. Bir süredir aklımda olan VPN Gateway (VPN Router) projem, Raspberry PI ve DigitalOcean VPS sayesinde hayat buldu. Site-to-site VPN modeli ile çalışacak bu yapı ile uzak sunucu üzerindeki veriye daha güvenli erişim sağlanabilecek (ör. otorite imzalı SSL olamayan sayfalara parola girişi). Ayrıca bu yapıda uzak sunucunun üzerinden İnternet erişimi de sağlanabiliyor.

Ücretli/ücretsiz VPN servis sağlayıcılar nedendir bilinmez, hissedilir şekilde yavaş çalışıyorlar. Yıllardır Avrupa konumlu kullandığım VPS‘ler üzerinden geçirdiğim gündelik İnternet trafiğinde yavaşlama hissetmedim. Şahsi tecrübem 100ms paket gecikmesinin üstüne çıkılmadığı sürece hızda yavaşlama hissedilmeyeceği yönünde.

Farklı miniPC modelleri arasından RaspberryPI‘yi seçtim çünkü; yaygın kullanılıyor, kendine özel geliştirilmiş Raspbian adında Debian tabanlı bir işletim sistemi var ve enerji tüketimi yaklaşık 3W. Düşük enerji tüketimi ve düşük sahip olma maliyetinden dolayı, kart bilgisayarlar öğrenciler ve teknoloji meraklıları arasında yaygın kullanılıyor. Sistem gücü prototip projeler ve ev kullanımı için yeterli seviyede.

Çeşitli kaynaklarda RaspberryPI Model B‘nin 35$’dan satıldığı bilgisi var fakat Türkiye’de bu fiyatlara bulmak pek mümkün değil. Farnell distribütörü Yıldırım Elektronik  118TL fiyat veriyor, Robotistan‘da benzer fiyatlar var. Yurtdışı online satış yapan sitelerde kargo dahil 50$ civarında bulunabiliyor.

Kurulum adımları;

Adım adım RaspberryPI üzerine OpenVPN Client kurulumunu inceleyeceğiz (VPS üzerinde çalışan OpenVPN sunucu kurulumunu farklı bir yazıda paylaşmayı düşünüyorum).

RaspberryPI üzerine Raspbian‘ı kurup (raspberry.org’dan NOOBS indirilerek kolayca kuruluyor) SSH erişimini aldıktan sonra sistem güncellemelerini yapalım;

sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

Cihazın sabit IP alması önemli. Bunu DHCP sunucudan yapabileceğimiz gibi doğrudan ağ kartına tanımlayabiliriz, ağ kartına tanımlayalım;

nano /etc/network/interfaces

ilgili satırları aşağıdaki gibi değiştirelim (seçilen IP, DHCP havuzunun dışında olmalı);

iface eth0 inet static
address 192.168.2.251
netmask 255.255.255.0
gateway 192.168.2.1

Cihaza gelen paketlerin yönlendirilmesi için aşağıdaki dosyada değişikliği uygulayalım;

nano /etc/sysctl.conf

aşağıdaki satırın yorum ifadesini kaldıralım, satır yoksa ekleyelim;

net.ipv4.ip_forward = 1

değişikliği etkinleştirmek için;

sysctl -p /etc/sysctl.conf

OpenVPN’in yapılandırılması;

OpenVPN istemci yazılımını yükleyelim;

sudo apt-get install openvpn

Cihaz açılıdğında VPN bağlantısını otomatik kurması için aşağıdaki dosyayı ilgili dizine oluşturalım (uzantının .conf olması önemli);

sudo nano /etc/openvpn/vpn.conf

Örnek conf dosyası aşağıdaki gibi;

client

dev tun
proto tcp
tun-mtu 1500
remote xx.xx.xx.xx 1194

resolv-retry infinite
nobind

persist-key
persist-tun

verb 3

keepalive 10 120
comp-lzo
cipher DES-CBC

#openvpn root yetkileriyle çalıştırmamak için;
user <kullanıcı_adı>
group <grup_adı>
daemon

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

<ca>
-----BEGIN CERTIFICATE-----
.........
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
.........
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
.........
-----END PRIVATE KEY-----
</key>

Sistem açıldığında VPN bağlantısının otomatik kurulması için aşağıdaki dosyada değişiklik yapalım;

nano /etc/default/openvpn

ilgili yorum ifadesini kaldıralım yada aşağıdaki satırı ekleyelim;

AUTOSTART=all

OpenVPN yapılandırmasını tamamladık.

Iptables’ın yapılandırması;

Kolaylık ve tak-çalıştır olabilmesi için tünel ağına bir NAT tanımlayalım. Aşağıdaki komutla NAT yapılandıralım;

sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

iptables tanımlarımızın kalıcı olması için iptables-persistent kullanacağız, komutlar aşağıdaki gibi;

sudo apt-get install iptables-persistent
sudo /etc/init.d/iptables-persistent save
sudo /etc/init.d/iptables-persistent reload

Herşey yolunda gittiyse sistemi yeniden başlattığınızda sistem açılacak, VPN bağlantısı kurulacak, VPN Gateway istekleri cevaplamak için hazır hale gelecektir. Kurulum sonrası cihazımız tak-çalıştır haline geliyor. Elektrik ve ağ kablolarını bağladığınız herhangi bir yerde VPN hattı kullanılabilir (DHCP’den adres alacak şekilde ayarlanmalı ve otomatik alınan adres öğrenilmeli).

Ağımızdaki trafiği kurduğumuz yeni VPN Gateway‘e yönlendirmede iki farklı yöntem uygulanabilir. Birincisi, DHCP tanımlarından Default Gateway bilgisine VPN cihazımızın IP adresi yazılabilir. İkincisi, istemcilere elle sabit IP tanımlarken Default Gateway bilgisine VPN cihazının IP adresi yazılabilir.

Kurduğumuz sistemde DNS sorguları dahil tüm trafik VPN tünelinden geçiyor. Ufak değişikliklerle ihtiyaca göre farklı modeller uygulanabilir. Bu sisteme çok benzer VPN Hotspot kurulabilir. İhtiyacım olur da kurarsam ayrı bir blog yazısında paylaşırım. Soru ve önerilerinizi bekliyorum.

Hamdi ÖZCAN – ozcan.com



Yorumlar

Bir Cevap Yazın

(gerekli)