Belki daha önce VPS sunucuya OpenVPN kurmak makalemi okumuşsunuzdur. Bu blog yazısı teknolojinin değişmesi ve ilerlemesi sebebi ile bir önceki makalenin iyileştirilmiş hali. Bu sefer OpenVPN değil onun yerine IKEv2 kuruyoruz.
Şimdi diyeceksiniz OpenVPN varken IKEv2 nereden çıktı? OpenVPN neyimize yetmiyordu? OpenVPN güvenilirlik olarak çok güçlü bir altyapı olmasına rağmen hız ve modern mobil altyapıların bize sunduğu mobilite ile verimli çalışmayan bir yapı. iOS gibi bir cihazda da işletim sistemi tarafından direkt desteklenmiyor ve ek bir yazılım gerektiriyor.
Bu kötü birşey mi? Değil tabiki ama eğer VPN’im 7/24 açık olsun istiyorsanız ve cep telefonunuzdaki pil önemliyse OpenVPN size göre değil. Sizin ihtiyacınız olan IKEv2 destekli bir VPN hizmeti. Ben geçtim 7/24 iPhone X üzerinde kullanıyorum. Tavsiye ederim.
Haydı başlayalım 🙂
sudo apt update
sudo apt install strongswan strongswan-pki libcharon-extra-plugins libstrongswan-extra-plugins
Öncelikle IKEv2 hizmetini sağlayacak olan Strongswan’ı ve yan paketlerinin kurulumunu gerçekleştiriyoruz.
Daha sonra da VPN’de şifreleme için kullanacağımız sertifikaları oluşturuyoruz.
mkdir -p ~/pki/{cacerts,certs,private}
chmod 700 ~/pki
ipsec pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/ca-key.pem
ipsec pki --self --ca --lifetime 3650 --in ~/pki/private/ca-key.pem \
--type rsa --dn "CN=VPN Kok Sertifika" --outform pem > ~/pki/cacerts/ca-cert.pem
Bu aşamada VPN’de kullanacağımız sertifikaları imzalayacak kök sertifikayı oluşturduk. Şimdi ise Strongswan VPN sunucusunun sertifikasını oluşturacağız.
ipsec pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/server-key.pem
Şimdi VPN sunucunun sertifikasını oluşturduk. Bu sertifikayı bir önceki adımda oluşturduğumuz kök sertifika ile imzalayacağız. Burada “SunucuAdı_veya_IP_Adresi” olarak isimlendirdiğim kısımları kendi sunucunuzun IP adresi veya DNS (URL) adresini yazmanız gerekli. Aksi takdirde sertifikayı kullanamazsınız.
ipsec pki --pub --in ~/pki/private/server-key.pem --type rsa \
| ipsec pki --issue --lifetime 1825 \
--cacert ~/pki/cacerts/ca-cert.pem \
--cakey ~/pki/private/ca-key.pem \
--dn "CN=SunucuAdı_veya_IP_Adresi" --san "SunucuAdı_veya_IP_Adresi" \
--flag serverAuth --flag ikeIntermediate --outform pem \
> ~/pki/certs/server-cert.pem
Şimdi VPN sunucunun kendini doğrulaması için gerekli sertifikaları oluşturduk ve imzaladık. Bu sertifika dosyalarını Strongswan’ın ilgili klasörlerine kopyalamamız gerekli.
sudo cp -r ~/pki/* /etc/ipsec.d/
Bu aşamayla beraber sertifika işlemimiz tamamlandı. Şimdi VPN sunucumuzu ayarlayalım. Öncelikle sil baştan bir konfigürasyon dosyası oluşturalım.
sudo mv /etc/ipsec.conf{,.original}
sudo nano /etc/ipsec.conf
Nano editörü açılıp içerisine konfigürasyonu girmemizi isteyecek. Konfigürasyonu aşağıda paylaşıyorum.
config setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
conn ikev2-vpn
auto=add
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
leftid=@XXX.YYY.ZZZ
leftcert=server-cert.pem
leftsendcert=always
leftsubnet=0.0.0.0/0
right=%any
rightid=%any
rightauth=eap-mschapv2
rightsourceip=10.10.10.0/24
rightdns=1.1.1.1,8.8.8.8
rightsendcert=never
eap_identity=%identity
Bu konfigürasyon dosyasında sadece leftid= isimli kısmı düzenlemeniz yeterli lakin burada bir püf noktası var.
Eğer sunucunuza IP adresi üzerinden bağlanıyorsanız leftid=123.123.123.123 şeklinde yazmanız gerekli. Eğer bir alan adı kullanıyorsanız leftid=@vpn.sunucu.com.tr’de olduğu gibi @ işareti kullanmalısınız aksi takdirde sunucu konfigürasyonu doğru olmaz ve Strongswan servisi çalışmaz.
Şimdi Strongswan’a kullanıcı adı ve şifreyle giriş yapılabilmesi için şifre dosyasımızı düzenleyelim.
sudo nano /etc/ipsec.secrets
Açılan nano ekranına aşağıdaki satırları ekleyelim.
include /var/lib/strongswan/ipsec.secrets.inc
: RSA "server-key.pem"
kullanici_adi : EAP "sifre"
Burada kullanici_adi ve sifre kısımlarını kendi isteğinize göre değiştirin. Her yeni satır yeni bir kullanıcı demektir.
Tüm bu işlemleri tamamladıktan sonra Strongswan servisini yeniden başlatalım.
sudo systemctl restart strongswan
Strongswan’ın konfigürasyonu tamam. Şimdi sırada Firewall’da yer açmak ve linux kernelinde paket yönlendirmesine izin vermek kaldı.
Eğer OpenVPN gibi bir VPN kurup çalıştırdıysanız kernel’de paket yönlendirmesi aktif demektir. Eğer değilse aşağıdaki yönergeleri izleyin.
sysctl net.ipv4.ip_forward
Bu komutun sonucunda =1 çıkarsa yönlendirme kernelde aktif demektir. Eğer o çıkarsa aşağıdaki komutu girerek yönlendirmeyi aktif hale getirin.
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
Burada IP yönlendirme ayarı sistem baştan başladığında yok olacak. O sebeple sysctl.conf dosyasında bazı ayarlar yapmamız gerekli.
nano /etc/sysctl.conf
yazarak sistem konfigürasyon dosyasını açıp aşağıdaki satırları değiştiriyoruz (ve başında # varsa siliyoruz) ve dosyayı kaydediyoruz.
net.ipv4.ip_forward=1
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
Şimdi paket yönlendirme tamam. Geriye firewall’ın konfigürasyonu kalıyor. Ben Debian ve Iptables kullandığım için ona uygun komutları aşağıda paylaşacağım.
Öncelikle ethernet adaptörünün sistemde tanımlı adına bakalım.
ip route | grep default
Şöyle bir sonuç çıkacak.
default via 170.230.140.103 dev eth0 onlink
Buradaki “eth0” bizim adaptörümünüz adı. Eğer sizde farklı bir isimle yer alıyorsa iptables komutlarında ilgili yerleri düzeltin.
iptables -A FORWARD -s 10.10.10.0/24 -o eth0 -p tcp -m policy --dir in --pol ipsec -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy --dir out --pol ipsec -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE
iptables -A INPUT -p udp -m udp --dport 4500 -m comment --comment "IKEv2 4500" -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 500 -m comment --comment "IKEv2 500" -j ACCEPT
iptables -A FORWARD -s 10.10.10.0/24 -m policy --dir in --pol ipsec --proto esp -j ACCEPT
iptables -A FORWARD -d 10.10.10.0/24 -m policy --dir out --pol ipsec --proto esp -j ACCEPT
Kullananlar bilir Iptables bazen başa bela olabilir. Kullandıkça alışıyor insan ama ilk seferde öğrenmesi biraz vakit alabiliyor. Siz yukarıdaki komutları teker teker çalıştırın. Böylelikle firewall’da ilgili portları (4500 ve 500) açıp gerekli yönlendirmeleri yapmış olacaksınız.
Bu aşamada -eğer herşey doğru yapılmışsa- çalışan ve bağlanılabilinen bir IKEv2 VPN sunucunuz olmuş demektir. Hadi şimdi bir iPhone ile sunucunuza bağlanalım.
iPhone’un sunucuya güvenmesi için sunucuda oluşturduğumuz kök sertifikayı iPhone’a yüklememiz gerekiyor. Öncelikle kök sertifikamızı görüntüleyelim.
cat /etc/ipsec.d/cacerts/ca-cert.pem
Bu komutu çalıştırdığımızda şöyle bir görüntü çıkacak karşımıza
-----BEGIN CERTIFICATE-----
MIIFBjCCAu6gAwIBAgIIRGnt3FJAV0swDQYJKoZIhvcNAQEMBQAwITEfMB0GA1UE
AxMWU29sYXJpYW4gSUtFdjIgUm9vdCBDQTAeFw0xOTEyMjgxNzEwMzVaFw0yOTEy
...
0oX5AhPwD3E9vC+7RCMEE6hVnuZVInpc1CI7qZdar5mE+l4jaMlAtxSqjJR/jNF8
igw2GC7xEEU/o6ymnl0SbNqj7Y0jN/h9G0Q22CAx9sliZ63C4ybh5U7X
-----END CERTIFICATE-----
Bu bizim kök sertifikamızın taşınabilir kopyalanabilir hali. Bu içeriği bilgisayarınızda notepad veya benzeri bir text editörüne kopyalayın ve kaydederken uzantısının .pem olmasına özen gösterin. Örnek: iphone.pem
Daha sonra bu dosyayı kendinizi ePosta ile gönderin, iCloud’a kopyalayın veya Telegram’dan kendinize gönderin. Artık cihazınız ile aranızda nasıl bir iletişim varsa 🙂 Dosyayı bir şekilde iPhone’a transfer edip çalıştırın. Eğer Apple Watch kullanıyorsanız dosyayı nereye kurayım diye soracak; iPhone’u seçip şifrenizi girin ve profili kurun. Böylelikle iPhone’unuz sunucunuza artık güvenebilecek.
Şimdi IKEv2’yi yapılandıralım. Telefonunuzda VPN konfigürasyonu ekleme kısmına gelin ve aşağıdaki şekilde doldurun.
Buraya daha önce ipsec.secrets dosyamıza yazdığımız kullanıcı adı ve şifrenizi girin. Server ve RemoteID kısmına da sunucunuzun adresini girin. LocalID kısmına o cihaza özel bir tanımlayıcı girin mesela OrcuniPhone gibi. Bu mobilite sırasında VPN bağlantınızın sağlıklı olması açısından önemli.
Kaydet’e tıklayın ve VPN switchini açarak VPN’e bağlanın. Hayırlı olsun IKEv2 tabanlı bir VPN sunucunuz oldu üstelik cep telefonunuzda hiç kapatmanıza gerek kalmadan, aşırı batarya tüketmeden.
Bir yanıt yazın