Digital Ocean'da Wireguard VPN Kurulumu

Hiçbir ticari kuruluş, verilerinizi yetkililerden saklamaz. Bu sebeple, hiçbir VPN servisinin size %100 mahremiyet sağlayacağından emin olamazsınız. Bunun en bariz örneğini, gizlilik odaklı çalıştığını iddia eden Protonmail'de yakın zamanda gördük. Öncelikle belirtmem gerekir ki aşağıdaki adımları uygulamak da sizi sanal dünyada tam anlamıyla gizlemekte yeterli olmayacaktır. Ancak tüm özel bilgilerinizi ortalıkta bırakmanın ve mahremiyet iddiasındaki VPN servislerini kullanmanın dışında üçüncü bir seçenek olacaktır.

Digital Ocean'da hesap açmak için referans linkimi kullanarak çalışmalarıma katkı sağlayabilirsiniz.

 

 

NOT: VPN, yasa dışı faaliyetler için herhangi bir koruma sağlamaz.

 

 

0. Gereksinimler

  • Digital Ocean hesabı ve API anahtarı
  • Herhangi bir bilgisayardaki bir Unix terminali
  • İşlemlerin uygulanacağı bilgisayarda openssh-client, curl, jq paketlerinin kurulu olması gerekir.

 

 

1. Düşük bütçeli bir VPS oluşturmak

Kişisel VPN sunucusu olarak kullanacağınız Droplet, yüksek kaynağa ihtiyaç duymaz. Bu sebeple en ucuz VPS hizmetini satın alıyoruz.

Bir OpenSSH anahtarı oluşturun

ssh-keygen -b 2048 -t rsa -f ~/.ssh/id_rsa_droplet -q -N ""

Bu işlem sizin SSH anahtarınızı değiştirmez.

 

 

OpenSSH anahtarınızı Digital Ocean'a kaydedin

# Digital Ocean'dan aldığınız API anahtarını aşağıdaki ile değiştirin
DIGITALOCEAN_TOKEN='gQDsJvGPvwrpE70HD6VmzLxdTBakoe8RTmcuuJimWpqj09qMtxy7mrRvTQ7WIlK1S'

# Dropletinize bir isim verin
DROPLET_NAME='wg-server'

DIGITALOCEAN_SSHKEY_ID=$( \
    curl -sX POST \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
        -d '{"name":"My SSH Public Key","public_key":"'"$(cat ~/.ssh/id_rsa_droplet.pub)"'"}' \
        "https://api.digitalocean.com/v2/account/keys" \
            | jq -r '.ssh_key.id')
    echo "This is id of your ssh key: $DIGITALOCEAN_SSHKEY_ID"

 

 

Bu OpenSSH anahtarını kullanarak bağlanabileceğiniz bir Droplet oluşturun

Bu komutlar en ucuz Droplet'i oluşturmanızı sağlayacak (Bir aylık kullanımda 5-6$). Biz bu adımları otomatize edip sadece ihtiyacımız olduğunda kullanacağımız için muhtemelen bu kadar ödemeyeceğiz.

curl -sX POST \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
    -d '{
        "name":"'${DROPLET_NAME}'",
        "region":"fra1",
        "size":"s-1vcpu-1gb",
        "image":"debian-10-x64",
        "ssh_keys":"'${DIGITALOCEAN_SSHKEY_ID}'",
        "backups":false,
        "ipv6":false,
        "user_data":null,
        "private_networking":null,
        "volumes": null,
        "tags":["my-server"]
        }' \
        "https://api.digitalocean.com/v2/droplets" \
            | jq -r '.droplet.id'

 

 

Eğer ekranda 9-10 haneli bir sayı olan Droplet ID'sini görüyorsanız her şey yolunda demektir. Yaklaşık 15-20 saniye içinde sunucunuz kullanıma hazır hale gelecektir.

 

 

Droplet'inizin IPv4 adresini öğrenin

Sunucu, kullanıma hazır olana kadar beklemeniz gerekiyor. Bunun için bu işlemi bir While döngüsü ile yapıyoruz.

while true;
do
    curl -sX GET \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
        "https://api.digitalocean.com/v2/droplets?page=1&per_page=100" \
            | jq -r '.droplets[-1].networks.v4[].ip_address' | egrep -v '^10\.' && break
    sleep 3
done

 

 

Sunucunuza bağlanın

ssh -i ~/.ssh/id_rsa_droplet root@IP_ADRESİ

 

 

2. Wireguard VPN konteynırının ayağa kaldırılması

Gerekli paketlerin kurulması

# Backport reposunu ekleyin
echo 'deb http://deb.debian.org/debian buster-backports main contrib non-free' > /etc/apt/sources.list.d/buster-backports.list

# Paket yöneticisi veritabanını güncelleyip gerekli paketleri kurun
apt update
apt install -y wireguard-tools docker.io curl

 

 

Parola ve Wireguard anahtarını oluşturun

# Wireguard sunucu anahtarını oluşturun
WG_WIREGUARD_PRIVATE_KEY="$(wg genkey)"

# Wireguard arayüz parolasını oluşturun
WG_ADMIN_PASSWORD="$(tr -dc A-Za-z0-9 < /dev/urandom | head -c 32 | xargs)"

# Wireguard kullanıcı adı, parola ve adrei:
echo -e "\n\n\tKullanıcı adı: admin\n\n\tParola: $WG_ADMIN_PASSWORD\n\n\tAdres: http://$(curl -s ifconfig.me):8000\n\n"

Ekrana basılan parolayı ve adresi güvenli bir yerde saklayın. Tekrar öğrenmeniz mümkün olmayabilir.

 

 

Docker Daemon servisini başlatın ve Wireguard sunucusunu ayağa kaldırın

# Docker servisini çalıştırın
systemctl enable --now docker

# Wireguard sunucu konteynırını ayağa kaldırın
docker run \
    -d --restart=unless-stopped \
    --cap-add NET_ADMIN \
    --device /dev/net/tun:/dev/net/tun \
    -v /wg:/data \
    -e "WG_ADMIN_PASSWORD=$WG_ADMIN_PASSWORD" \
    -e "WG_WIREGUARD_PRIVATE_KEY=$WG_WIREGUARD_PRIVATE_KEY" \
    -p 8000:8000/tcp \
    -p 51820:51820/udp \
        place1/wg-access-server

 

 

Konteynırın ayağa kalktığından emin olun

docker ps

Çalışmaya başlayan bir imajın listelendiğini görüyor olmalısınız.

 

 

3. Sunucunuzun arayüzüne bağlanın

Wireguard sunucunuzun arayüzüne bağlanmak için daha önce ekrana basılmış olan adres, kullanıcı adı ve parola bilgilerini kullanın.

Gelen ekranda yeni kullanıcıya bir isim vererek konfigürasyon dosysasını herhangi bir cihazda kullanabilirsiniz.

 

 

Oluşturduğunuz konfigürasyonu bir GNU/Linux dağıtımında kullanmak için

Konfigürasyon dosyasını kopyalayın ve sudo nano /etc/wireuard/wg0.conf komutu ile kaydedin.

Ve ağ arayüzünü aktif edin.

sudo wg-quick up wg0
sudo wg

Handshake zamanını görüyorsanız bağlantı tamamlanmıştır.

Oluşturduğunuz konfigürasyonu bir Android cihazda kullanmak için

Ekrana gelen Android seçeneğine tıklayın ve telefonunuza kurduğunuz Wireguard İstemcisi'ndeki QR kod seçeneği ile bağlantıyı aktif edin.

Oluşturduğunuz konfigürasyonu bir WC bilgisayarda kullanmak için

Bir Wireguard istemcisi kurun ve kurulum talimatlarını izleyin.

 

 

4. Dropletin silinmesi

NOT: Bu işlem tüm Dropletlerinizi silecektir. Eğer Digital Ocean'da kullanımda olan başka bir Dropletiniz varsa silme işlemini web arayüzünden elle yapın.

# Droplet listesini alın
DROPLETS=($(curl -sX GET \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
    "https://api.digitalocean.com/v2/droplets?page=1&per_page=100" \
        | jq  -r '.droplets[].id'))
echo ${DROPLETS[@]}

#Listelenen Dropletleri silin
for i in ${DROPLETS[@]}
do
    curl -X DELETE \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
        "https://api.digitalocean.com/v2/droplets/${i}"
done

 

 

Bu şekilde Wireguard sunucusunu her kullanımdan sonra yok ederek IP adresinizi de sürekli olarak yenilemiş olursunuz. Kullanım verileriniz herhangi bir VPN sağlayıcı tarafından kaydedilmemiş olur ancak IP adresleriniz Digital Ocean tarafından kaydedilir ve yasa dışı kullanım sonucunda hesap sahibine cezai yaptırım uygulanabilir.

Tüm bu işlemleri tek bir betik kullanarak yapmak için aşağıdaki repoyu inceleyebilirsiniz.

gitlab.com/msenturk/deploy-temporary-wiregu..