Wireguard kullanarak kendi kendine barındırılan bir VPN kurun
Bir VPN (Sanal Özel Ağ) , kullanıcının bilgisayarı doğrudan özel ağa bağlıymış gibi, kullanıcının özel bir ağa uzaktan bağlanmasına olanak tanır. Teknoloji, başlangıçta, dahili ağ konumunda gerçekte bulunmayan çalışanlar için bir şirketin dahili özel ağına uzaktan erişime izin vermek için geliştirildi.
Dahili ağın bulunduğu yere bir VPN Sunucusu dağıtılır. Bu sunucu genel ağ üzerindedir ve çalışan tarafından bir VPN istemcisi kullanılarak erişilebilir. VPN Sunucusuna bağlanmak için kimlik doğrulama gereklidir. VPN Sunucusu ve VPN İstemcisi arasındaki iletişim, bir tünel protokolü kullanılarak güvence altına alınır. Bu iletişimin şifrelenebileceğini veya şifrelenmeyebileceğini unutmayın, ancak genellikle çoğu VPN protokolünde şifrelenir.
VPN'nin başka bir kullanımı , İnternet'e erişirken anonimlik kazanmak veya bazı web sitelerine erişirken uygulanan coğrafi kısıtlamaları atlatmaktır. Bu gibi durumlarda, kullanıcının bağlanmak istediği ağ özel bir ağ değil, İnternet'tir.
Yıllar boyunca birçok VPN protokolü geliştirilmiştir. Bu protokoller, sunucu ve istemci arasındaki iletişim için farklı tünel protokollerini ve şifreleme algoritmalarını kullanır.
Son zamanlarda geniş kullanım alanı bulan bu protokollerden biri de Wireguard'dır . Wireguard, OpenVPN, IPSec gibi iyi bilinen geleneksel olarak kullanılan VPN protokollerinden daha hafif, daha basit ve daha performanslıdır. Halihazırda Windows, Mac OS ve çok sayıda Linux dağıtımı için uygulanmaktadır. Linux'ta bir çekirdek modülü olarak uygulanır. Ubuntu 20.04'ün resmi depolarında mevcuttur.
Bu yazımızda Ubuntu 20.04'te Wireguard VPN Sunucusu ve İstemcisi nasıl kurulur onu göreceğiz.
Kurulum
Bu yazı için Ubuntu 20.04 Linode üzerinde Wireguard Server ve Ubuntu 20.04 ile yerel makinemde Wireguard Client kuruyorum.
Paket wireguard
hem Wireguard Sunucusunu hem de İstemciyi kurar. Hem Sunucu makinesinde hem de İstemci makinesinde aşağıdaki komutu çalıştırın .
sudo apt install wireguard
Sunucu Yapılandırması
Güvenlik Anahtarları
Wireguard bağlantısını doğrulamak ve güvenliğini sağlamak için bir dizi genel/özel anahtar çifti oluşturmamız gerekiyor . Bu, aşağıdaki komutlar kullanılarak yapılabilir:
sudo su
cd /etc/wireguard
umask 077
wg genkey | tee private_key | wg pubkey > public_key
Tüm yapılandırma görevlerini bir süper kullanıcı olarak yaptığımızı unutmayın. Bunun nedeni, /etc/wireguard
normal kullanıcılar için dizine erişimin engellenmesi ve normal bir kullanıcı için sadece sudo ayrıcalıklarıyla dizin erişiminin sağlanamamasıdır.
Ardından, dosya oluşturma maskesini077
. Bu, herhangi bir işlem tarafından bu klasörde yeni bir dosya oluşturulduğunda, izinlerinin otomatik olarak 077 ile maskeleneceği anlamına gelir. bu klasörde 777 izinleriyle bir dosya oluşturulursa, otomatik olarak maskelenir ve izinler etkin bir şekilde 700 olur. Bu, yalnızca dosyanın sahibinin dosya üzerinde tüm izinlere sahip olması ve diğer herkesin hiçbir izni olmaması için yapılır.
Bir sonraki satırda, sunucu için ortak/özel anahtar çiftini oluşturuyoruz. Dosyalara kaydedilirler private_key
ve public_key
. Anahtarları görüntülemek için şunu çalıştırın:
cat private_key
cat public_key
Özel anahtarı kopyalayın, bir sonraki adımda ihtiyacımız var.
Not: Özel anahtarınızı asla genel olarak paylaşmayın!
Yapılandırma Dosyası
Wireguard Server için bir konfigürasyon dosyası oluşturalım. Dosya için herhangi bir isim seçebilirsiniz. wg0.conf
Bu örnekte bir dosya oluşturacağız .
vim wg0.conf
Dosyaya aşağıdakileri ekleyin.
[Interface]
Address = 10.20.43.1/24
SaveConfig = true
ListenPort = 51190
PrivateKey =
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o -j MASQUERADE
Daha önce kopyaladığımız Özel Anahtarı yukarıdaki kodda 5. satıra yapıştırın.
Wireguard'ı sunucunun IP Adresinden farklı (sanal) bir alt ağ üzerinde yapılandırmamız gerekiyor . Burada sunucu için 10.20.43.1 kullandım ve istemci için 10.20.43.2 kullanacağım. Burada herhangi bir alt ağ kullanılabilir. Sunucunun ve arayüzün IP Adresini almak için şunu çalıştırın:
ifconfig
Vurgulanan kısım IP Adresidir
Sunucunun IP Adresini not edin. Bu, istemci yapılandırması sırasında gereklidir.
Yukarıdaki resimde görüldüğü gibi sunucunun kullandığı arayüz eth0
. Arayüz adı, kullanıcının ağına göre farklılık gösterebilir, bu olabilir wlan0
veya wlp2s0
kullanıcının bir kablosuz kart kullanarak bir WiFi ağına bağlanması durumunda olabilir .
Girişi PostUp
ve PostDown
arayüzünüzü değiştirin; bu örnekte öyle eth0
. PostUp
ve PostDown
yönergeleri, sunucu sırasıyla başladığında ve durduğunda hangi komutların çalıştırılacağını belirtmek için kullanılır. Örneğimizde, iptables
sunucunun IP Adresi istemciler tarafından paylaşılacak şekilde IP kurallarını ayarlamak için komutu kullanıyoruz . Sunucu durduğunda kurallar düşecektir.
Dosyayı kaydedin ve çıkın. Vim'i kullanırken Esc tuşuna basın , ardından kaydedip çıkmak için yazın :wq
ve Enter tuşuna basın .
ufw
Sunucuda bir güvenlik duvarı kullanıyorsanız , VPN sunucusu 51190 için bağlantı noktasına UDP bağlantılarına izin vermemiz gerekir.
ufw allow 51190/udp
Hizmeti Başlatmak
Artık konfigürasyon tamamlandığına göre Wireguard VPN hizmetini başlatabiliriz.
Hizmetin önyükleme zamanında başlamasını sağlamak için şunu çalıştırın:
systemctl enable [email protected]
wg0
Yapılandırma dosyasının adının burada olduğuna dikkat edin.
Hizmeti başlatmak için şunu çalıştırın:
service [email protected] start
Hizmetin başarıyla başlatıldığını doğrulayın :
service [email protected] status
Konfigürasyon dosyasında oluşturduğumuz arayüzün IP komutunu kullanarak başladığını doğrulayın .
ip a show wg0
Wireguard VPN Sunucusu şimdi kuruldu ve çalışıyor. Şimdi istemciyi yapılandıralım.
İstemci Yapılandırması
Wireguard için İstemci Yapılandırması, bir sunucu yapılandırmasıyla aşağı yukarı aynıdır. İstemci için anahtarları oluşturuyoruz ve ardından bir yapılandırma dosyası oluşturuyoruz.
Güvenlik Anahtarları
İstemci için genel/özel anahtar çiftini oluşturmak için şunu çalıştırın:
sudo su
cd /etc/wireguard
umask 077
wg genkey | tee client_private_key | wg pubkey > client_public_key
İstemci için genel ve özel anahtarlar artık sırasıyla dosyalarda client_private_key
ve client_public_key
.
cat
Komutu kullanarak oluşturulduklarını kontrol edin .
cat client_private_key
cat client_public_key
Görüntülenen özel anahtarı, istemci için yapılandırma dosyasına eklememiz gerektiğinden kopyalayın.
Yapılandırma Dosyası
Yapılandırma dosyasını istediğiniz herhangi bir adla oluşturun . wg0-client
Bu örnek için isim ile oluşturacağız .
vim wg0-client.conf
Aşağıdaki yapılandırmayı ekleyin.
[Interface]
# IP Address and Private Key of the Client
Address = 10.20.43.2/24
PrivateKey =
[Peer]
# Public key, IP Address and Port of the Server
PublicKey =
Endpoint = :51190
AllowedIPs = 0.0.0.0/0, ::/0
İstemci için alt ağ adresini girin. Daha önce açıklandığı gibi 10.20.43.2
, bu örnekte istemci için kullanıyoruz .
Önceki adımda oluşturulan istemci özel anahtarını yukarıdaki yapılandırma kodunda 4. satıra ekleyin .
'Eş' altında, bağlanmak istediğimiz Wireguard VPN sunucusu hakkında bilgi ekliyoruz .
Sunucunun genel anahtarını girin. Enter sunucunun IP Adresini karşı verilen formatta daha önce belirtildiği, ve port bitiş noktasına . Bu, sunucu yapılandırma dosyasında belirttiğimiz ve sunucudaki VPN hizmetinin başlatıldığı bağlantı noktasıdır.
İstemci tarafından kullanılan dinamik bir genel IP üzerindeki herhangi bir isteğin her zaman VPN sunucusuna iletilmesi için izin verilen IP'ler (0.0.0.0/0) verildiği gibi girilmelidir.
Dosyayı kaydedin ve çıkın. Vim'i kullanırken Esc tuşuna basın , ardından kaydedip çıkmak için yazın :wq
ve Enter tuşuna basın .
İstemci hizmetinin her önyüklemede çalışmasını sağlayın ve başlatın.
systemctl enable [email protected]
service [email protected] start
Hizmetin başlayıp başlamadığını doğrulayın .
service [email protected] status
Sunucuya Eş Eklemek
Artık VPN sunucumuz ve istemcimiz çalışır durumda. Ancak, sunucu ve istemci arasında bir eşler arası bağlantı kurmadıkça, ikisi arasında güvenli bir tünel kurulmaz.
Sunucuya geri dönün . İlk olarak, VPN hizmetini durdurun .
service [email protected] stop
Ardından, eş (istemci) için yapılandırma eklemek üzere yapılandırma dosyasını açın .
vim /etc/wireguard/wg0.conf
Dosyaya aşağıdaki satırları ekleyin .
[Peer]
PublicKey =
AllowedIPs = 10.20.43.2/32
Şimdi, VPN hizmetini yeniden başlatın .
service [email protected] start
Bu kadar! Wireguard VPN istemcisi ve sunucu kurulumu için gereken tüm yapılandırma budur. Şimdi VPN'imizi test edelim.
VPN'i test etme
İlk olarak, VPN tünel iletişiminin çalıştığından emin olmak için istemciden sunucuya basit bir ping yapalım. İstemcide aşağıdakileri çalıştırın :
ping 10.20.43.1
Ardından, bir web tarayıcısı açın ve istemci makineden İnternet'e bağlanıp bağlanamadığınızı kontrol etmek için herhangi bir web sitesini açın . İnternet bağlantınızı komut satırından da kontrol edebilirsiniz wget
.
wget
Şimdi tünel bağlantısını ve İnternet bağlantısını kontrol ettik. Her ikisi de çalışıyorsa, şimdi istemciye gelen tüm internet trafiğinin sunucudan geçtiğinden emin olmamız gerekiyor.
Bunun için sadece istemcinin IP Adresini İnternet tarafından görüldüğü şekliyle kontrol etmemiz yeterlidir. Bunu yapmanın bir yolu whatsmyip.org adresine gitmektir . Veya komut satırından, Curl kullanarak IP info adlı başka bir benzer hizmeti sorgulayabiliriz.
İstemci makinede aşağıdakileri çalıştırın
curl https://ipinfo.io/ip
Evet. VPN sunucusunun barındırıldığı Linode'un genel IP Adresidir. VPN kullanılarak anonimlik bu şekilde sağlanır, çünkü İnternet'in her yerinde artık bilgisayarınızın değil VPN sunucusunun IP'si görülür.
Çözüm
Kurulum kolaylığı, kurmak için daha yüksek düzeyde ağ ve yönlendirme bilgisi gerektiren OpenVPN gibi geleneksel VPN yazılımlarına göre Wireguard'ın en önemli avantajlarından biridir. Ancak, Wireguard kurulumunuz hata veriyorsa veya beklendiği gibi çalışmıyorsa sorunlara neden olabilecek Wireguard için ayrıntılı resmi belgeler eksikliği vardır.
Bununla birlikte, İnternet üzerinden güvenli iletişim için kendi kendine barındırılan bir VPN istiyorsanız, Wireguard mükemmel bir seçimdir. Wireguard ve kullandığı protokoller ve teknolojiler hakkında daha fazla bilgi edinmek için resmi siteye göz atabilirsiniz .