Özellikle şirketlerin kullandığı VPN servisleri, sistemler arasında güvenli ve gizli bir yol sağlar. Farklı özellikleri olan VPN servislerini, eğer gelecekte şirketinizde lazım olursa, nasıl Azure, AWS gibi platformlara kurabileceğinizi gösterdiğim bir yazı dizisine başlıyorum. Umarım şirketiniz buna ihtiyaç duymaz. Ancak duyarsa ne yapacağınızı biliyorsunuz. Birkaç protokolle VPN kurmayı gösterdikten sonra, bunları nasıl daha güvenli ve gizli hale getirebileceğinizi gösterdiğim rehber de gelecek. Şimdilik sadece temel kurulumları anlatacağım. Kurulumlarda güvenlik açıkları olabileceğini, en yüksek güvenlik için daha detaylı kurulum yapmak gerektiğini unutmayın.

Sanal makine kurma adımları, tüm VPN'lerde aynı olacağı için bir kez yazacağım ve diğer konularda bağlantı veya alıntı koyacağım. Sanal makineyi nereden kiraladığınızın veya kurduğunuzun önemi yok. Kayyum atanmayacağına emin olmanız yeterli. Sanal makineyi kurup bağlandıktan sonra, tüm adımlar aynı olacak. Başlayalım.

Öncelikle AWS veya Amazon'dan bir sanal makine kurarak başlayalım. Ben bilgisi olmayan kullanıcıların kesinlikle Azure kullanmasını öneriyorum. Daha kolay bir arayüz. Daha basit servisler. En düşük özellikli, ücretsiz kullanım ile gelen makineler yeterli gelecektir. Bulut platformlarının her kullanıcıya farklı kampanyalar sunabileceği, kampanyaları, teklifleri ve ücretleri değiştirebileceğini unutmayınız. Bulut platformları takip etmek, ürünlerinizi ayarlamak ve bütçenizi yönetmekten siz sorumlusunuz. Sürpriz ücretlerle karşılaşmamak için düzenli olarak takip ediniz!

İstediğiniz Linux dağıtımını kullanabilirsiniz ancak hem rehbere uygunluk hem de stabil olması açısından Debian öneriyorum.

Sunucu kurulumları​


Azure için sanal makine kurulumu​


Azure kullanmak isterseniz öncelikle bir hesap oluşturunuz. https://azure.microsoft.com/tr-tr/pricing/purchase-options/azure-account#freeservices

Hesap oluşturduğunuzda size ücretsiz kredi ve bazı servislerde aylık kullanım sınırı veriyor. Yukarıdaki sayfadan bunları takip edebilirsiniz. Ayrıca üniversite öğrencisiyseniz GitHub Student Pack ile daha fazla hizmete erişim için kullanabileceğiniz öğrenci aboneliği alabilirsiniz. Detaylar için GitHub'ın sayfasını ziyaret edin.

Uygun aboneliği oluşturduktan sonra ana sayfaya gidin. Microsoft Azure

Karşınızda "Sanal Makineler" kısmını arayın. Bulamazsanız yukarı taraftan arayabilirsiniz.

1776591885602.webp


Üzerine geldiğinizde açılan kısımda aşağı kaydırın ve ücretsiz tekliflerin altında "Linux Sanal Makinesi" seçeneğine tıklayın.

1776591943519.webp


Gelen ekranda "Oluştur" a tıklayalım ve karşımıza sanal makine oluşturma sayfasının gelmesini sağlayalım.

Bu ekranda ilk olarak aboneliğin altında bir kaynak grubu oluşturun. Daha sonra sanal makinemize isim verelim. Her bölgenin fiyatlandırması ve sunabileceği hizmetler farklıdır. Deneyiminizi en çok bu ayarın etkileyeceğini unutmayın. Görüntü kısmında ben Debian kullanacağım. Ne kullandığınız fark etmez. İsterseniz Ubuntu ile de devam edebilirsiniz. Boyut kısmında ücretsiz kullanımda 2 farklı boyut sunuluyor genelde. Bu iki boyuttan hangisini isterseniz seçebilirsiniz. B1s veya B2ats sunulur genelde. İki boyutta işinizi görür.

Kimlik doğrulama türünü SSH bırakalım. Oluşturma sırasında bize anahtar dosyamızı verecek. Bu dosyayı kullanarak sanal makineye bağlanacağız.

1776592177254.webp


Bağlanacağınız kullanıcı adını değiştirmek isterseniz buradan değiştirebilirsiniz. Onun dışında ayarlamamız gereken bir şey kalmadı.

1776592763370.webp


En aşağı iniyoruz ve "Gözden Geçir + Oluştur" butonuna tıklıyoruz.

Son ekranda da iyice inceleyip sıkıntı olmadığını gördükten sonra oluştur butonuna tıkladığımızda karşımıza anahtar çifti oluşturma penceresi gelecek. İlk seçeneğe olan "Özel anahtarı indir ve kaynak oluştur"a tıklayıp indireceğimiz .pem dosyasını güvenli bir klasöre koyuyoruz.

1776592892999.webp


Bizi kaynağın oluşturulma sayfasına yönlendirecektir otomatik olarak. Dağıtımın tamamlanmasını bekleyiniz. Dağıtım tamamlandı yazınca sağ üstte çıkacak bildirimden veya ekranın ortasından "Kaynağa git" seçeneğine tıklayalım.

Sanal makinemizin sayfasından Bağlan tuşuna basalım ve açılan menüde de bağlanı seçelim.

1776593040331.webp


Karşımıza bağlanma ekranı gelecek. En altta SSH komutu seçeneğinin karşısındaki komutu komple kopyalayalım ve Windows veya Linux terminalimizi önceki adımda indirdiğimiz .pem dosyamızın olduğu konumda açalım. Azure sekmesini kapatmayalım. Daha sonra uygun portları açmak için tekrar geleceğiz.

1776593453610.webp


Terminale komutu yapıştıralım. <private-key-file-path> yazan kısmı silelim ve dosyamızın ismini girelim. Dosya ile aynı klasöre açmadıysanız terminali dosyanın tam yolunu giriniz.

WARNING: UNPROTECTED PRIVATE KEY FILE!

1776593786602.webp


Anahtar dosyamızın herkes tarafından erişebilir olmasından kaynaklanıyor. Aşağıdaki komutla çözebiliriz.

Linux ve MacOS için:

Bash:
chmod 600 <anahtar-dosyanızın-adı>.pem

1776593879752.webp


Windows için:

Bash:
icacls "<anahtar-dosya-yolu-ya-da-adı.pem" /inheritance:r
Bash:
icacls "<anahtar-dosya-yolu-ya-da-adı.pem" /grant:r "%username%":"(R)"

1776593820033.webp


Enter'a bastığımızda sunucumuza bağlanmış olacağız. Bağlanmaya devam etmek istediğinize emin misiniz ekranı gelebilir ilk bağlanmada. Yes yazıp devam edelim. Karşımıza sunucumuzun terminali gelmiş olacak.

1776594126577.webp



Amazon Web Services (AWS) için sanal makine (EC2) kurulumu


İlgili sayfaya gidelim. Ücretsiz Bulut Bilişim Hizmetleri - AWS Ücretsiz Kullanım

Hesap oluşturalım.

Şifre belirledikten sonra hesap türünüzün nasıl olmasını istediğini soracak. Ücretsizi seçelim.

1776594693024.webp


Sonraki adımda sizden ödeme bilgisi isteyecek. Bu ödeme doğrulama için 1 TL'lik bir ücret. Enflasyonun vurmadığı kısıtlı yerlerden.

Tüm bilgileri girdikten sonra biraz bekletip konsol sayfamıza atacak. Burada öncelikle hemen sağ üstten bölgemizi değiştirelim. Ben en iyi gecikme değerini Frankfurt'tan alıyorum.

1776595012980.webp


Değişikliği yaptıktan sonra sol üstteki arama kısmına EC2 yazalım ve çıkan sonuca tıklayalım.

1776595204200.webp


Bir bulut sunucusu başlat diyelim.

1776595281431.webp


Karşımıza güzel ve kalabalık bir ekran gelecek. Bu ekranda öncelikle AWS'ye girdiğimizde tanımamız için bir ad verelim. Yine bir işletim sistemi seçmemiz gerekli. Azure'nin ücretsiz sürümüne göre AWS'de daha çok seçenek var. İstediğinizi seçebilirsiniz. Herhangi bir sıkıntı çıkmayacaktır.

1776595384912.webp


Aşağı kaydırdığımızda bizi boyut seçme kısmı karşılayacak. Burada eskiye kıyasla AWS ücretsiz kullanım limitlerini ve kullanım şeklini değiştirmiş. Ben yeterli geleceği için t3.small seçeceğim. Siz ücretsiz kullanımda verilen bir boyut seçmeye dikkat edin.

1776595746599.webp


Kaydırmaya devam ettiğimizde anahtar çifti oluşturma bölümü karşımıza çıkıyor. Yeni anahtar çifti oluştur diyelim. Karşımıza bir ekran çıkartacak. Bir isim verelim. Bağlantılarımızı OpenSSH ile yaptığımız için .pem olarak kalsın ayarımız. Siz PuTTY kullanıyorsanız zaten ne yapacağınızı biliyorsunuzdur. Anahtar çifti oluştur butonuna tıklayalım ve indirdiğimiz dosyayı güvenli bir yerde saklayalım.

1776595849987.webp


1776595929224.webp


Kaydırıp depolamayı 20 GB yapıyorum. Ücretsiz kullanımda depolama sınırı var. Aştığınız durumda hesap açarken bize tanımlanan krediden düşmeye başlar. VPN sunucusu gibi işler için 20 GB fazlasıyla yeterli.

1776596120353.webp


Sağ taraftan "Bulut sunucusunu başlat" diyorum ve başlamasını bekliyorum. Başlayınca ekranda bulut sunucusunun ismine tıklıyorum ve sayfasına gidiyorum. Bulamazsanız yukarıya EC2 yazın, çıkan ekranda "Bulut Sunucuları (çalışan)"na tıklayın. Listeden sanal makinenize girin. Ardından "Bağlan" seçeneğine tıklayın.

1776596224625.webp


1776596277771.webp


Çıkan ekranda SSH istemcisi menüsüne gidin. En alttaki kodu kopyalayın. Terminalimizi açalım. İndirdiğimiz .pem dosyasıyla aynı konumda olduğumuzu veya .pem dosyasının yolunu tam olarak kopyaladığımızdan emin olalım. Farklı bir konumdan kullanacaksanız tırnak içindeki yeri değiştirmeyi unutmayın. AWS ekranını kapatmayınız. İleri adımlarda port ayarlaması için döneceğiz.

1776596383428.webp


1776596511021.webp


Karşınıza bağlanmaya devam etmek istediğinize emin misiniz sorusu gelirse yes yazıp devam edelim.

WARNING: UNPROTECTED PRIVATE KEY FILE!

1776593786602.webp


Anahtar dosyamızın herkes tarafından erişebilir olmasından kaynaklanıyor. Aşağıdaki komutla çözebiliriz.

Linux ve MacOS için:

Bash:
chmod 600 <anahtar-dosyanızın-adı>.pem

1776593879752.webp


Windows için:

Bash:
icacls "<anahtar-dosya-yolu-ya-da-adı.pem" /inheritance:r
Bash:
icacls "<anahtar-dosya-yolu-ya-da-adı.pem" /grant:r "%username%":"(R)"

İki farklı platformda da sunucularımıza bağlandık. Şimdi hangi platformda kurduğumuz fark etmeksizin sunucularımıza geçelim.

Önemli bir not​


Sonraki adımlara kolaylık olması için ufak bir not düşeceğim. İleri adımlarda sunucunun IP adresine ihtiyacımız olacak. Sunucunun şu anki IP adresini girersek şöyle bir sıkıntı olur: Eğer bir şer olur ve sunucumuzun IP adresi değişirse biz tekrar bazı ayarları değiştirmek zorunda kalırız. Bunun yerine DNS veya statik IP kullanabiliriz. Siz ben şimdilik uğraşmak istemiyorum diyorsanız sunucunuzun şu anki IP'sini kullanmaya devam edebilirsiniz. Herhangi bir sorun halinde konunun altına yazabilirsiniz.

Azure için DNS etiketi oluşturma:

Azure'de makine sayfasında IP adresinin üstüne tıklayın. Sizi IP adresinin yapılandırma sayfasına atacaktır. Burada DNS ad etiketi kısmına bir isim verelim ve aşağıdan uygula tuşuna basalım. Makine sayfasına dönelim. Burada DNS adı değerini not edelim. Sonraki adımlarda işimize yarayacaktır.

1776600534827.webp


AWS için Elastic IP (statik IP) oluşturma:

EC2 konsolunda solda Esnek IP'ler kısmına tıklayın, sağ üstte Esnek IP adresini ayırına tıklayın. Gelen ekranda sağ altta "Ayırın"ı seçin. Sizi geri Esnek IP adresleri ekranına atacaktır. Ekranda gelen IP adresini başındaki kutucuktan seçin. Ardından Eylemler'e tıklayın. Buradan Esnek IP adresini ilişkilendirin seçeneğini seçelim. Açılan ekranda bir bulut sunucusu seçeneğinin altından EC2 makinemizi seçelim. Sağ alttan ilişkilendirin seçelim. AWS'de elastik IP'ler ücretlidir. Genelde çok ufak bir ücreti vardır. Zaten hesabı yeni açtıysanız oradan düşecektir bu ücret. Şimdi bu IP'yi not edelim. Sonraki adımlarda işimize yarayacaktır.

1776601261193.webp


1776601403760.webp


Yazılım kurulumuna geçiyoruz​

Docker kurulumu


Öncelikle ilk girişimiz olduğu için sistemimizi güncelleyelim.

Bash:
sudo apt update && sudo apt upgrade -y

Güncelleme tamamlandıktan sonra şimdi Docker kurulumuna başlayabiliriz.

Öncelikle çakışabilecek eski paketleri kaldıralım:

Bash:
 sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-doc podman-docker containerd runc | cut -f1)

Sırasıyla aşağıdaki komutları girelim.

Bash:
sudo apt install ca-certificates curl
Bash:
sudo install -m 0755 -d /etc/apt/keyrings
Bash:
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
Bash:
sudo chmod a+r /etc/apt/keyrings/docker.asc

Bu aşağıdaki kodu olduğu gibi yapıştırınız, bölmeyiniz.

Bash:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

Apt'ye kaynaklarımızı ekledik. Şimdi yüklemeye başlayalım.

Bash:
sudo apt update

Bash:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

1776597395124.webp


İndirme sonrası Docker arkada otomatik olarak çalışmaya başlar. Kontrol etmek için aşağıdaki komutu girelim. Çıkan ekranda active (running) yazıyorsa sıkıntı yok demektir. Ctrl+c yapıp bu ekrandan çıkalım.

Bash:
sudo systemctl status docker

1776597620455.webp


VPN scriptinin kurulumu


WireGuard için birden fazla açık kaynak sunucu yazılımı mevcut. Biz bugün wg-easy ile ilerleyeceğiz. Bu scripti seçmemizin en büyük ve galiba tek sebebi kullanımı kolay ve işlevli bir web panelinin olması.

Öncelikle konfigürasyon dosyamız için bir klasör oluşturalım

Bash:
sudo mkdir -p /etc/docker/containers/wg-easy

Yapılandırma dosyasını indirelim

Bash:
sudo curl -o /etc/docker/containers/wg-easy/docker-compose.yml https://raw.githubusercontent.com/wg-easy/wg-easy/master/docker-compose.yml

İlgili klasörümüze gidelim.

Bash:
cd /etc/docker/containers/wg-easy

Kuruluma başlamadan önce yukarıdaki komutları girdikten sonra parantez açmak istiyorum. wg-easy yeni sürümlerinde web panele giriş yaparken SSL kullanımını zorunlu tutuyor. Eğer SSL kullanmak istemiyorsanız bu süprizbozanın içindeki adımları uygulayın. SSL kullanmanızı ve bu adımları yapmamanızı öneririz! Kullanmak istiyorsanız süprizbozanı kapatın ve hemen aşağıdaki "Konteynırı başlatalım" kısmından devam ediniz.

Bash:
sudo nano docker-compose.yml
Açılan ekranda environment ve INSECURE başındaki # işaretlerini kaldırmamız gerek. Gezmek için ok tuşlarını kullanabilirsiniz. Kaldırdıktan sonra Ctrl+x e basın sonrasında y'ye basın.

Tekrarlıyoruz. SSL kullanın!

Öncesi


1776602767844.webp



Sonrası:

1776603069503.webp

Konteynırı başlatalım.

Kod:
sudo docker compose up -d

Gerekli portların açılması


Azure


Gerekli portları ayarlamak için öncelikle sanal makinemizin sayfasına dönelim. Sol menüden Ağ ayarları sayfasına gidelim. Açılan sayfada "Bağlantı noktası kuralı oluştur" diyelim. Gelen bağlantı noktası kuralını seçelim.

1776598110860.webp


Öncelikle "Hedef bağlantı noktası aralıkları" kısmına 51820 yazalım, protokolden UDP seçelim. İsim olarak VPN yazalım ve ekleye tıklayalım. Sonrasında tekrar "Bağlantı noktası kuralı oluştur" diyelim ve gelen bağlantı noktası kuralını seçelim. Bu sefer "Hedef bağlantı noktası aralıkları" kısmına 51821 yazalım, protokolü TCP seçelim ve adını webpanel yapalım. İkisini de kaydettikten sonra web kurulumu adımlarına atlayabilirsiniz.

1776598296097.webp
1776598846544.webp


Amazon Web Services


EC2 makinemizin sayfasındayken sol taraftan "Güvenlik Grupları" seçeneğine tıklayalım. AWS ilk güvenlik grubunu "launch-wizard-1" olarak adlandırır. Listedeki bir diğeri de default seçeneğidir. Default olmayana tıklayalım. Amazon zaten bizi "Gelen kurallar" kısmında karşılar. Burada sağ taraftan "Gelen kuralları düzenle" seçeneğine tıklayalım.

1776599132130.webp


Gelen ekranda 2 kez "Kural ekle"ye basalım ve iki kurallık yer açalım. Birinin türünü Özel TCP, diğerini Özel UDP seçelim. TCP olanın Port Range kısmına 51821, UDP olanın Port Range kısmına 51820 yazalım. İkisinde de Kaynağı Her yer-IPv4 seçelim. Daha sonra karışıklık olmaması için Görüntü açıklaması kısımlarına isim verelim. Kuralları kaydet diyelim ve çıkalım.

1776599177561.webp


1776599237578.webp


Azure ve AWS için ortak not


SSH, VPN ve panel portlarının tüm internete açık olmasını önermiyoruz. Dış bağlantılardan sunucuya gelebilecek tehditleri azaltmak için size önerimiz hangi platformu kullanıyorsanız olun Kaynağı sadece kendi IP adresiniz seçmenizdir. Bunu seçmenizin tek dezavantajı IP adresiniz her değiştiğinde veya farklı cihazlardan girmeye çalıştığınızda IP adresini AWS veya Azure üzerinden güncellemek/yeni IP adresi eklemek zorunda kalacaksınız. Size önerim VPN portu için Kaynak IP adresi eklemesenizde panel ve SSH portları için filtreleme uygulayın. Bu konu hakkında ileri sorularınızı konunun altında sorabilirsiniz. Bunu yapmak için adımlar:

Azure'de sanal makine sayfasında sol taraftan "Ağ ayarları"nı açın. SSH'a tıklayın ve Kaynağı "My IP adress" seçip kaydedin. Bunu eklediğimiz VPN ve webpanel isimli portlar içinde uygulayın.

1776599618596.webp


AWS'de bunu yapmak için gelen kuralları düzenle kısmına girin. Açılan pencerede üç değerinde Kaynak değerini IP adresim olarak seçin.

1776599684029.webp


1776599766997.webp



Kurulum devamı (Web kurulumu)


Şimdi Azure ve AWS üzerinde sanal makine sayfasından IP adresimizi kopyalayalım. AWS'de bu "Genel IPv4 adresi" olarak, Azure'de "Birincil NIC genel IP’si" olarak geçebilir.

Daha sonra tarayıcımızdan http://kopyaladığınızip:51821/ adresine gidelim. Bizi kurulum scripti karşılayacaktır. Devam et diyelim. Sonraki ekranda kullanıcı adı ve şifre belirleyelim.

1776599993013.webp


1776600030256.webp


Mevcut bir kurumunuz var mı sorusuna hayır diyelim. İlk başta Azure kullanıyorsak DNS adı, AWS kullanıyorsak statik IP oluşturmuştuk. Hangisini oluşturduysak Ana Bilgisayar kısmına yazalım ve devam edelim.

1776600654821.webp


Karşımıza kurulum başarılı yazısı geldi. Giriş yap tuşuna tıklayalım.

1776600689893.webp


SSL'i ayarlayalım


wg-easy yeni sürümlerinde varsayılan olarak SSL'i zorunlu tutuyor. Öncesinde SSL kullanmak istemiyorsanız nasıl yapmanız gerektiğini söylemiştik. Şimdi ise SSL'i nasıl kuracağınızı gösterelim.

Azure için


Azure'de az önce DNS adı oluşturmuştuk. Şimdi onu tekrar kullanacağız. Öncelikle Azure'de sanal makinemizin sayfasına gidelim. Sol tarafta port oluşturmak için Ağ ayarları sayfasına gelelim ve aşağıdaki portları Gelen bağlantı noktası olarak oluşturalım.

1776603398668.webp
1776603439803.webp



Şimdi sunucumuzun terminaline dönelim ve şunu yazalım

Bash:
sudo nano /etc/docker/containers/wg-easy/docker-compose.yml

Daha sonra dosyadaki her şeyi silip aşağıdakini yapıştırın. Burada WG_HOST değerinin karşısına ve aşağıdaki sizinadres.bolge.cloudapp.azure.com değerinin yerine sanal makine sayfanızdaki DNS adı kısmındakini yazacaksınız. Yapıştırdıktan sonra Ctrl+X yapın ve y'ye tıklayın. Kaydedip çıkacaktır.

Yani aşağıdaki gibi bir yapı olacak finalde.

Bash:
volumes:
  etc_wireguard:
  caddy_data:
  caddy_config:

services:
  wg-easy:
    image: ghcr.io/wg-easy/wg-easy:15
    container_name: wg-easy
    environment:
      # Azure panelinden aldığınız DNS ismini buraya yazın.
      - WG_HOST=SENIN-ADRESIN.westeurope.cloudapp.azure.com
 
      #- PASSWORD=BurayaGucluBirSifreYazin
 
    networks:
      wg:
        ipv4_address: 10.42.42.42
        ipv6_address: fdcc:ad94:bacf:61a3::2a
    volumes:
      - etc_wireguard:/etc/wireguard
      - /lib/modules:/lib/modules:ro
    ports:
      - "51820:51820/udp"
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.ip_forward=1
      - net.ipv4.conf.all.src_valid_mark=1
      - net.ipv6.conf.all.disable_ipv6=0
      - net.ipv6.conf.all.forwarding=1
      - net.ipv6.conf.default.forwarding=1

  reverse-proxy:
    image: caddy:latest
    container_name: caddy
    restart: unless-stopped
    networks:
      - wg
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - caddy_data:/data
      - caddy_config:/config
    # "--from" kelimesinden sonraki kısmı kendi DNS adınızla değiştirin.
    command: caddy reverse-proxy --from sizinadres.bolge.cloudapp.azure.com --to wg-easy:51821

networks:
  wg:
    driver: bridge
    enable_ipv6: true
    ipam:
      driver: default
      config:
        - subnet: 10.42.42.0/24
        - subnet: fdcc:ad94:bacf:61a3::/64

Şimdi yeniden başlatalım her şeyi

Bash:
cd /etc/docker/containers/wg-easy

Bash:
sudo docker compose up -d

Bu adımdan sonra Azure'den ağ ayarlarına gidin ve 51821 portunu silin. Artık ihtiyacımız yok. Şimdi https://sizinadres.bolge.cloudapp.azure.com (yani Azure'de sanal makine sayfasında yazan DNS adı) adresine gittiğinizde önceki adımlarda belirlediğiniz bilgilerle giriş yapabileceksiniz. Bu adıma atlayıp profilinizi oluşturup kullanmaya başlayabilirsiniz!

AWS için


AWS'de işimiz biraz daha sıkıntılı. Öncelikle gerekli portları oluşturuyoruz. Kuralları kaydet deyip çıkıyoruz.

1776605449675.webp


Burada 3. taraf bir servis kullanmak zorundayız çünkü AWS'nin Route 53 servisi ücretsiz hesaplar tarafından desteklenmiyor. Biz "traefik.me" kullanacağız bu yüzden.

Sitesinden nasıl çalıştığına dair Türkçe çeviri

traefik.me, herkese açık internet üzerinde özel bir DNS sunucusu çalıştırır. Bilgisayarınız bir traefik.me alan adını sorguladığında, traefik.me DNS sunucusu IP adresini bu alan adından çıkarır ve yanıt olarak geri gönderir.

Not: traefik.me servisi bazen global yoğunluktan dolayı SSL sertifikası alırken gecikebilir veya hata verebilir. Panele SSL ile erişemezseniz birkaç dakika bekleyip Docker konteynerini yeniden başlatın.

Aşağıdaki iki komutu sırasıyla girin. Ardından açılacak dosyadaki her şeyi silin ve aşağıdaki uzun kodu yapıştırın.

Bash:
cd /etc/docker/containers/wg-easy/
Bash:
sudo nano docker-compose.yml

Kod:
volumes:
  etc_wireguard:
  caddy_data:
  caddy_config:

services:
  wg-easy:
    image: ghcr.io/wg-easy/wg-easy:15
    container_name: wg-easy
    environment:
      # SENIN_AWS_IP_ADRESIN yazan yeri daha önce oluşturduğun elastik IP ile değiştir (Örn: 15.20.30.40.traefik.me)
      - WG_HOST=SENIN_AWS_IP_ADRESIN.traefik.me
 
      #- PASSWORD=BurayaGucluBirSifreYazin
 
    networks:
      wg:
        ipv4_address: 10.42.42.42
    volumes:
      - etc_wireguard:/etc/wireguard
      - /lib/modules:/lib/modules:ro
    ports:
      - "51820:51820/udp"
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.ip_forward=1
      - net.ipv4.conf.all.src_valid_mark=1

  # Otomatik SSL Sertifikası (Caddy)
  reverse-proxy:
    image: caddy:latest
    container_name: caddy
    restart: unless-stopped
    networks:
      - wg
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - caddy_data:/data
      - caddy_config:/config
    # Aşağıdaki --from sonrasında SENIN_AWS_IP_ADRESIN yazan yeri daha önce oluşturduğun elastik IP ile değiştir
    command: caddy reverse-proxy --from SENIN_AWS_IP_ADRESIN.traefik.me --to wg-easy:51821

networks:
  wg:
    driver: bridge

Eğer AWS'de 80 ve 443 portlarında erişimi kendi IP'niz olacak şeklinde kısıtladıysanız 5 dakikalığına tüm IPv4 adreslerine olacak şekilde açın. Aşağıdaki komutu girin. Daha sonra https://ipadresiniz.traefik.me adresine gidin. "ipadresiniz" yazan yere IP adresinizi yazmayı unutmayın. Bu adresten panele https ile başarıyla ulaştıktan sonra port kısıtlamalarını geri getirebilirsiniz.
Not: AWS güvenlik grubundan 51821 numaralı gelen kuralını silmeyi unutmayın. Caddy artık trafiği 443 üzerinden yönlendirdiği için bu porta dışarıdan erişilmesine gerek kalmıyor.

Bash:
sudo docker compose up -d

Panele giriş ve kullanıcıları ayarlama

SSL ve diğer tüm her şeyi ayarladıktan sonra adrese gidin. Daha önce belirlediğiniz bilgilerle giriş yapın. Giriş yaptıktan sonra karşınıza bu şekil bir sayfa gelecektir. Yeni istemci tuşuna tıklayın. Yeni istemciye bir isim ve son kullanma tarihi verin. Tarihi boş bırakıp geçebilirsiniz.

1776607442046.webp


1776607496915.webp


Yapılandırmayı indir tuşuna tıklayın.

1776607519521.webp


WireGuard istemcilerini yapılandırma


Windows için​


Düz WireGuard uygulamasını hızlıca indirerek kullanabilirsiniz. Bu linkten indirin. https://download.wireguard.com/windows-client/wireguard-installer.exe

Sol alttan Add tunnel seçeneğine tıklayın. İndirdiğiniz .conf dosyasını seçin. Sol tarafta çift tıklayarak çalıştırabilirsiniz. Wireguard uygulamasını kapatmadan Windows'u kapatırsanız sonraki açılışta otomatik başlar.

Android için​


Wireguard uygulamasını indirebilirsiniz. Uygulamaya girince sağ alttan artı tuşuna tıklayın. QR okutma seçeneğine tıklayın. Wireguard yönetim panelinizdeki QR göster tuşuna basarak QR'ı gösterin ve telefondan okutun. Bir isim verin ve aktifleştirerek kullanmaya başlayın.

Linux için​


Ağ ayarlarından VPN dağıtımını içeri aktar seçeneğini seçerek config dosyasını aktarın ve etkinleştirin.



Olası hatalar ve çözümleri


Kullanıcılardan geri bildirim geldikçe güncellenecektir.

[U][B]sudo apt update && sudo apt upgrade -y[/B][/U] komutu çalıştırıldıktan sonra karşıma mavi bir ekran geldi

Bu ekranın gelme sebebi bazı çakışmalar, yeniden başlatılması gereken servisler olabilir. sshd_config ile ilgili gelirse "keep the local version currently installed" seçeneğinin üstündeyken enter'a basalım.

1776597017393.webp


Referanslar:​


 
Son düzenleme:
Yakın zamanda wg-easy ve AdGuard Home kurulumunu gerçekleştirdim. Keşke bu rehberi biraz daha önce görseydim, işim 2-3 saat daha kısa sürebilirdi :D

Rehberdeki yöntemden farklı olarak domain almak yerine web panellerini localhost'a yönlendirdim. İstemci tarafında ise hosts dosyasını düzenleyerek SSH tüneli üzerinden web arayüzlerine erişim sağlıyorum.

Rehber o kadar iyi hazırlanmış ki benim gibi ilk kez kurulum yapacak olanlar 2-3 saat uğraşmadan kurulumu tamamlayabilir. Eline sağlık 👏
 
@VcEnox övgüleriniz için teşekkür ederim hocam. Rehberi hazırlarken biraz karışık mı hazırladım acaba diye düşünmüştüm. Yararlı geldiyse ne mutlu.

Domain gibi bazı ekstraları dış servisten ayarlama sebebim, bilmeyen kullanıcının gözünü terminal ile korkutmak yerine grafiksel arayüz kullanabilmelerini sağlamaktı. Teşekkür ederim tekrardan.