WireGuard VPN Sunucusu Kurulumu | Detaylı Anlatım [DigitalOcean, Vultr, Azure]
9 min read

WireGuard VPN Sunucusu Kurulumu | Detaylı Anlatım [DigitalOcean, Vultr, Azure]

WireGuard VPN Sunucusu Kurulumu | Detaylı Anlatım [DigitalOcean, Vultr, Azure]

VPN, yani Sanal Özel Ağ, artık kullanılması yüksek derece öneme sahip olan bir internet bileşenidir. Özel bir firmadan satın almak yerine kendi WireGuard VPN sunucunuzu nasıl kurabileceğinizi ise bu yazımızda detaylıca anlatacağız.

Bir önceki yazımız olan OpenVPN İle Kendi Ücretsiz VPN Sunucunuzu Kurun başlığında VPN nedir? Neden VPN kullanmalısınız? Hangi VPN i tercih etmelisiniz? gibi birçok soruyu detaylıca açıklamıştık ve ardından kendi OpenVPN sunucunuzu nasıl kurabileceğinizi anlatmıştık. Şimdiki yazımızda ise yeni bir VPN yazılımı olan WireGuard ile kendi VPN sunucunuzu nasıl kurabileceğinizi aşama aşama göstereceğiz.

1. WireGuard VPN Nedir?

WireGuard, son derece basit ama hızlı ve modern bir VPN’dir ve son teknoloji şifreleme kullanır. Üstelik IPsec’ten daha hızlı, daha basit, daha yalın ve daha kullanışlı olmayı amaçlamaktadır. OpenVPN’den ise çok daha fazla performans gösterdiği testlerde gözükmektedir. WireGuard, gömülü arayüzlerde ve süper bilgisayarlarda birçok farklı koşul için uygun olan genel amaçlı bir VPN olarak tasarlanmıştır. Başlangıçta Linux çekirdeği için piyasaya sürülmesine rağmen şimdi birçok platformda (Windows, macOS, BSD, iOS, Android) yaygın olarak kullanılıyor. Halen geliştirme aşamasında olsa bile kolay, basit ve güvenilir bir VPN çözümü olarak kabul edilebilir.

Bant genişliği ve Ping süresi yönünden OpenVPN ile kıyasladığımızda arada çok büyük bir fark bulunmakta. Uygun bir lokasyon seçerek bu farkı hissetmeniz ise oldukça kolay.

1619x721

Proje içerdiği satır kod açısından ise oldukça minimum seviyede. Bu da geliştiriciler tarafından açık kaynak kodlu olan bu projenin daha kolay incelenmesini ve anlaşılmasını mümkün kılıyor.

640x480

WireGuard, SSH uygulamasını yapılandırmak kadar basit olmayı amaçlamaktadır. Sunucu ile istemci arasındaki SSH anahtarları gibi bir ortak anahtar değişimi ile bir bağlantı kurulur ve sadece sunucu yapılandırma dosyasında bulunan ortak anahtarı olan bir istemci yetkilen dirilir.

Wireguard’ın avantajlı olmasının sebepleri şunlardır;

  • Ortak anahtar değişimi kullanılır.
  • Son teknoloji şifreleme algoritmaları ile çalışır.( ChaCha20 , Poly1305)
  • Kaynak kodu rakiplerine oranla daha az satırlıdır. Böylece kolay bir şekilde güvenlik açıkları için denetlenebilir.
  • Gizlidir, herhangi bir kimliği doğrulanmamış pakete yanıt vermez ve her iki tarafın kullanacağı veri olmadığı zaman çalışmaz.
  • Kurulumu ve kullanımı kolaydır.

Öyleyse nasıl kuracağımızı anlatmaya başlayabiliriz.

2. WireGuard Sunucu Kurulumu

Bu yazıyı yazarkende kullandığım WireGuard’ı kurmak için nelere ihtiyacımız var hemen bakalım;

  1. Öncelikle bir sunucuya ihtiyacımız var. Tavsiye olarak DigitalOcean, Vultr, Azure gibi sunucu sağlayan firmalardan aylık 5$ ile alabileceğiniz paketleri kullanabilirsiniz. Eğer Türk firmalarında daha ucuza VPS/VDS bulabiliyorsanız bunlar bile olabilir ama sunucu merkezini yurtdışı olarak seçiniz. Aksi halde Türkiye’de yasaklı olan sitelere yine erişemezsiniz 🙂
  2. İşletim sistemi olarak konuyu anlatırken Ubuntu 18.04 kullanacağız. Sizde aynı işletim sistemini seçiniz ki hata almayasınız.

Eğer herşey hazırsa hızlıca başlayalım:

2.1 Sunucu Oluşturma

DigitalOcean ve Vultr gibi siteleri kullanacaksanız öncelikle bir server (droplet veya o frma adını ne koyduysa) oluşturmanız gerekiyor. OpenVPN için Ubuntu 18.04 işletim sistemli ve aylık ücreti 5$ olan bir yurtdışı lokasyonlu (yakın bir ülke ping açısından iyi olacaktır, örneğin Hollanda, Almanya) paket oluşturunuz. Bu server için SSH key kullanarak güvenliğinizi artırabilirsiniz.

DigitalOcean üzerinde sunucu oluşturmak için Tıklayınız

640x579
637x245

SSH keyi nasıl oluşturacağınızı öğrenebilmek için şu iki konuyu inceleyebilirsiniz;

2.2 Sunucuya WireGuard Paketinin Kurulması

Putty aracılığıyla sunucunuza bağlanın ve root kullanıcısına geçiş yaptıktan sonra ilk olarak Ubuntu güncellemelerini yapınız. Eğer sunucunuza nasıl bağlanacağınızı bilmiyorsanız ilk olarak şu videoyu izlemeniz faydalı olacaktır: Youtube Link

sudo -s
apt update
apt upgrade

Sunucuyu güncelleştirdikten sonra repo ekleme ve ardından Wireguard yükleme işlemini yapabiliriz.

add-apt-repository ppa:wireguard/wireguard
apt install wireguard

Çekirdek modülünü yüklemek için aşağıdaki komutu kullanınız.

modprobe wireguard

Modül yüklemesinin ardından aşağıdaki komutu çalıştırın ve wireguard çıktısını görüp göremediğinizi kontrol ediniz. Görebiliyorsanız devam ediyoruz.

lsmod | grep wireguard

Şimdi ise server ve client için privatekey ve publickey oluşturma aşaması var. İleride yeni kullanıcılar eklediğinizde key dosyalarının sistem dosyalarıyla karışmaması ve rahat okunabilme adına key dosyalarını keys isimli bir klasörde kullanıcı isimleriyle beraber tutacağız. Bunun için önce keys klasörünü oluşturup dizin izinlerini verelim ve keyleri client isimleriyle oluşturalım.

mkdir /etc/wireguard/keys
cd /etc/wireguard/keys
umask 077
wg genkey | tee privatekey_server | wg pubkey > publickey_server

Server için gerekli olan privatekey ve publickey değerlerini oluşturduktan sonra VPN kullanacak kullanıcılar içinde private ve public key oluşturmamız gerekiyor. Örnek olarak ben kerteriz kullanıcısının PC kullanacağı VPN için keyleri oluşturacağım. Siz de kaç adet kullanıcınız varsa her biri için key çifti oluşturmalısınız.

cd /etc/wireguard/keys
wg genkey | tee privatekey_Kerteriz_pc | wg pubkey > publickey_Kerteriz_pc

Oluşturduğumuz keyleri cat komutu ile tek tek görüntüleyerek bir not defterine not alınız. Bu keyleri ilgili yerlere sırası gelince yazacağız.

cat privatekey_server 
cat publickey_server
cat privatekey_Kerteriz_pc 
cat publickey_Kerteriz_pc

Artık sunucu konfigürasyon dosyamız olan wg0.conf isimli dosyayı oluşturup içini doldurmaya sıra geldi. Dosyayı oluşturduktan sonra nano ile açınız ve belirtilen yerleri kendi değerleriniz ile doldurunuz.

touch /etc/wireguard/wg0.conf
nano /etc/wireguard/wg0.conf

Açılan dosyayı aşağıdaki komutları kendi bilgilerinizle güncelleyerek kaydediniz.

[Interface]
Address = 10.0.0.1/24
SaveConfig = true
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820
PrivateKey = [Server Private Key]

[Peer]
PublicKey = [Client Public Key]
AllowedIPs = 10.0.0.2/32

Bu konfigürasyon dosyasında yer alan bazı alanları hızlıca açıklayalım: Address: Bu adres oluşturacağınız sanal bir IP aralığıdır. Sunucuya 10.0.0.1 ip sini atayacağız. Ardından eklenen her client sıradan .2 , .3 şeklinde gidecektir. Bu ip aralığını genişletebilir/daraltabilir (subnet mask olan 24 ü değiştirerek) veya farklı bir ip bloğu belirleyebilirsiniz. Uğraşmak istemezseniz bu şekilde kalabilir

SaveConfig: Her kullanıcı eklendiğinde servis çalışırken ayarları otomatik günceller

PostUp / PostDown: Wireguard için birazdan oluşturacağımız interface her açılıp kapanacağında gerçekleştirilecek işlemleri tanımlıyoruz.

ListenPort: Sunucunun dinleyeceği UDP portu. Bu portu 1-65535 arasındaki kullanılabilir portlardan herhangi biriyle de değiştirebilirsiniz. Fakat sunucuda firewall kullanıyorsanız belirlediğiniz portun trafiğine izin vermeyi unutmayınız.

PrivateKey: Oluşturduğumuz sunucu public key değeri.

[Peer]: Bu alanda VPN kullanacak istemcileri oluşturuyoruz. Birden fazla client için bu 3 satırı sona eklemeniz gerekmektedir. Dikkat etmeniz gereken şey her kullanıcının alacağı ip adresini sıradan değiştirmeyi unutmayınız. Örneğin:

...
...
[Peer]
PublicKey = [Client-1 Public Key]
AllowedIPs = 10.0.0.2/32

[Peer]
PublicKey = [Client-2 Public Key]
AllowedIPs = 10.0.0.3/32

2.3 Sunucuda IP Forwarding etkinleştirme

Konfigürasyon dosyasıyla işlerimizi tamamladıktan sonra hızlıca Ip Forwarding i aktifleştirelim. Bunun için /etc/sysctl.conf dosyasını nano ile açın ve net.ipv4.ip_forward=1 yazan satırı bulup başındaki # işaretini kaldırıp aktifleştirelim.

661x418

Tabii sunucuyu yeniden başlatma gerektirmemesi adına da aşağıdaki adımı gerçekleştirmenizi öneririm.

sysctl -p
echo 1 > /proc/sys/net/ipv4/ip_forward

2.4 Güvenlik Duvarı Yapılandırması

Bağlantıların başarılı bir şekilde sağlanması için firewall kurallarını ekleyerek firewall u etkinleştirelim.

sudo ufw allow 22/tcp
sudo ufw allow 51820/udp
sudo ufw enable

2.5 WireGuard Servislerinin Başlatılması

Gerekli ayarlamaları yaptıktan sonra artık WireGuard servislerini başlatarak sunucu tarafındaki işlemlerimizi tamamlamış olacağız. Bunun için ilk olarak WireGuard’ı başlatalım.

wg-quick up wg0

Şimdi Wireguard hizmetinin önyükleme sırasında otomatik olarak yeniden başlamasını etkinleştirelim.

systemctl enable wg-quick@wg0

Son olarak VPN tünelinin aşağıdaki iki komutla çalışıp çalışmadığını kontrol edelim:

wg show

Görmeniz gereken sonuç aşağıdaki gibi bir çıktı olmalıdır:

762x107

İkinci kontrolümüz ise interface in açılıp açılmadığı ve doğru ip adresini alıp almadığıdır. Bunun için aşağıdaki komutu gönderin.

ifconfig wg0

Görmeniz gereken sonuç aşağıdaki gibi bir çıktı olmalıdır:

849x117

Tebrikler! Sunucu tarafındaki tüm aşamaları tamamladınız. Artık WireGuard VPN hizmetini kullanacağımız istemcide gerekli ayarları yapıp kullanmaya başlama işlemi kaldı.

3. WireGuard İstemci Kurulumu

Sunucu kurulum aşamlarını tamamladıktan sonra geriye sadece kullanacağımız istemcileri ayarlayarak VPN hizmetinin tadını çıkarmak kalıyor. Aşağıda farklı tür istemciler için kurulum aşamalarını göreceksiniz. İstediğiniz istemciyi seçerek işlemlere devam edebilirsiniz.

3.1 Windows İstemci WireGuard Kurulumu

WireGuard resmi sayfasından güncel Windows kurulum paketini indirerek kurunuz.

WireGuard Windows İstemci dosyasını indirmek için Tıklayınız

Açılan programda ise sırasıyla Add Tunnel altında yer alan Add Empty Tunnel seçeneğini kullanarak aşağıdaki parametleri resimde olduğu gibi ilgili alana yapıştırarak kendinize göre düzenleyiniz.

[Interface]
PrivateKey = [Client Private Key]
Address = [Client IP Adresi]/32
DNS = 1.1.1.1

[Peer]
PublicKey = [Server Public Key]
AllowedIPs = 0.0.0.0/0
Endpoint = [Server IP Adresi]:[Port]
PersistentKeepalive = 21
658x422

Ayarları kaydettikten sonra programdaki Activate butonu ile VPN hizmetini başlatabilirsiniz. Çalışıp çalışmadığını doğrulamak için ise WhatsMyIP sitesini kullanarak gördüğünüz IP adresinin sunucunun ip adresi ve lokasyonun sunucunun lokasyonu olduğunu görerek yapabilirsiniz.

3.2 Linux İstemci WireGuard Kurulumu

İlk olarak WireGuard paketlerini indirerek kurunuz.

add-apt-repository ppa:wireguard/wireguard
apt install wireguard

Ardından istemci konfigürasyon dosyasını /etc/wireguard/wg0-client.conf oluşturarak not aldığınız key bilgileri ve ilgili ayarları yazınız.

[Interface]
Address = 10.100.100.2/32
PrivateKey = [Client Private Key]

[Peer]
PublicKey = [Server Public Key]
Endpoint = [Server IP Adresi]:[Port]
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 21

Bu dosyada yer alan Address alanındaki IP server konfigürasyonunda bu client için atadığınız IP adresi olmalıdır. Ardından servisi başlatarak VPN hizmetini kullanabiliriz.

wg-quick up wg0-client

3.3 Android / IOS İstemci WireGuard Kurulumu

Akıllı cihazlarınızda WireGuard VPN hizmetini kullanmak için öncelikle marketten WireGuard uygulamasını indiriniz. Ardından aynı bilgisayarınızda yaptığınız gibi gerekli konfigürasyonları yazarak VPN hizmetini kullanmaya başlayabilirsiniz.

Android cihazlarda WireGuard uygulamasını indirmek için Tıklayınız

IOS cihazlarda WireGuard uygulamasını indirmek için Tıklayınız

4. Sonuç

Kişisel veri güvenliğinin aşırı derecede önem arz ettiği bu dönemlerde kendinizi ve ailenizi VPN kullanarak koruyabilirsiniz. Fakat bu koruma içgüdüsüyle yanlış bir VPN e bulaşıp daha çok zarar görmek yerine en düşük maaliyetle kendi WireGuard VPN sunucunuzu nasıl kurabileceğinizi bu yazımızda detaylıca anlattık. Sizde aşağıdaki yorum alanından varsa soracağınız ve takıldığınız yerleri yazabilirsiniz. Hepinize güvenli internet kullanımı dileriz.