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