Bu Yazımızda DigitalOcean üzerinde Açmış oldugumuz sunucumuz üzerine WireGuard VPN Yapılandırması Yapacağız.

1 - İlk Digitalocean vb bir platformda bir ubuntu server oluşturuyoruz burada amacımız bulunduğumuz lokasyondan farklı bir ülkede IP adresi olan bir sunucumuzun olması.
“DigitalOcean Web Arayüzü”

2. Digital Ocean üzerindeki sunucumuzun güncelleme işlemlerini yaptıktan sonra repo ekleme ve ardından Wireguard yükleme işlemini yapabiliriz.

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

( lsmod | grep 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.    

3. Sonraki aşamada ise server && client için "privatekey" & "puublickey" oluşturma aşaması var. ilerleyen zamanlarda yeni kullanıcılar oluşturduğumuzda key dosyalarının sistem dosyaları ile karıştırmamamk için ve daha rahat bulunabilmesi için key dosyalarını keys klasörünü oluşturup dizin izinlerini veriyoruz ve keyleri client uygun isimlerle oluşturuyoruz.

( WireGuard Server | Keys )
Server için gerekli olan privatekey ve publickey değerlerini oluşturuyoruz.    

4. VPN kullanacak kullanıcılar içinde private ve public key oluşturmamız gerekiyor. Örnek olarak ben socks_server kullanıcısının PC kullanacağı VPN için keyleri oluşturacağım. Server Kullanıcak pc kadar key çifti oluşturulmalıdır. .

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

6. 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.

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

[Interface]
[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
( WireGuard Server | Address: )
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    
( WireGuard Server | SaveConfig: )
SaveConfig: Her kullanıcı eklendiğinde servis çalışırken ayarları otomatik günceller    
( WireGuard Server | PostUp / PostDown: )
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.    
( WireGuard Server | ListenPort: )
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.    
( WireGuard Server | PrivateKey: )
Oluşturduğumuz sunucu public key değeri.    
( WireGuard Server | [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.    

8. 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.

( WireGuard Server | sysctl )
Tabii sunucuyu yeniden başlatma gerektirmemesi adına da aşağıdaki adımı gerçekleştirmenizi öneririm.   

# -sysctl -p+ :  Bu komut, /etc/sysctl.conf veya /etc/sysctl.d/ dizinlerinde bulunan yapılandırma dosyalarındaki değişiklikleri etkinleştirmek için kullanılır. Bu dosyalarda yapılan değişiklikler genellikle sistem ayarlarıyla ilgilidir ve bu komutla bu ayarların anında etkinleştirilmesi sağlanır.
Örnek Kullanım : #sysctl -p

# -echo 1 > /proc/sys/net/ipv4/ip_forward
+ : Bu komut, Linux işletim sistemlerinde IP yönlendirme özelliğini etkinleştirmek veya devre dışı bırakmak için kullanılır.
Örnek Kullanım : echo 1 > /proc/sys/net/ipv4/ip_forward

9. 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

10. 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

11. Şimdi Wireguard hizmetinin önyükleme sırasında otomatik olarak yeniden başlamasını etkinleştirelim.
systemctl enable wg-quick@wg0

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

( WireGuard Server | wg show )
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ı.

Faydalı bir konu olması dileğimle, azimli günler dilerim. (muhammet)