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.
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.
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;
- Ö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 🙂
- İş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
SSH keyi nasıl oluşturacağınızı öğrenebilmek için şu iki konuyu inceleyebilirsiniz;
- DigitalOcean SSH Key Ekleme: https://www.digitalocean.com/docs/droplets/how-to/add-ssh-keys/
- Vultr SSH Key Ekleme: https://www.vultr.com/docs/how-do-i-generate-ssh-keys
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.
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:
İ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:
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
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.