Ubuntu'da WireGuard Nasıl Kurulur


Giriş

WireGuard, hem IPv4 hem de IPv6 bağlantılarını destekleyen hafif bir Sanal Özel Ağ (VPN) çözümüdür. VPN, özel bir ağdaymışsınız gibi güvenilmeyen ağlardan geçmenizi sağlar. Bu sayede, halka açık WiFi dahil olmak üzere güvenilmeyen ağlara bağlandığınızda, dizüstü bilgisayarlar veya mobil telefonlar gibi cihazlardan internete daha güvenli bir şekilde erişme imkânı sunar.

WireGuard’in şifrelemesi, eşlerin kendi aralarında şifreli tüneller kurabilmesi için açık ve özel anahtarlara dayanır. Her WireGuard sürümü, protokolü basit ve öngörülebilir tutmaya yardımcı olan sabit bir modern kriptografik yöntem seti kullanır. Bu tasarım, çalışma zamanı müzakeresini önler ve yapılandırma hatası riskini azaltır.

Karşılaştırıldığında, OpenVPN ve IPsec gibi diğer VPN yazılımları, kimlik doğrulamak ve şifreli tüneller oluşturmak için Taşıma Katmanı Güvenliği ve sertifikalara dayanır. Bu yaklaşım esneklik sağlarken ve geniş bir istemci yelpazesini desteklerken, aynı zamanda yapılandırma karmaşıklığını artırır ve operasyonel davranışı anlamayı zorlaştırır.

Bu öğreticide, bir Ubuntu sunucusunda WireGuard kuracak ve başka bir bilgisayarı hem IPv4 hem de IPv6 kullanarak ona bir eş olarak bağlanacak şekilde yapılandıracaksınız; bu genellikle çift yığın yapılandırma olarak adlandırılır. Ayrıca, eş trafiğini bir ağ geçidi yapılandırmasında WireGuard sunucusu üzerinden nasıl yönlendireceğinizi ve VPN'i şifreli eşler arası iletişim için nasıl kullanacağınızı öğreneceksiniz.

Temel kurulumun yanı sıra, bu rehber gerçek dünya dağıtımları için önemli olan pratik konuları da kapsar. Bunlar arasında WireGuard’ın eşler arası mimarisini anlamak, anahtarları yönetmek ve döndürmek, IPv6 ve çift yığın yönlendirmeyi doğru şekilde ele almak, NAT arkasındaki eşlerin güvenilirliğini artırmak, performansı optimize etmek ve WireGuard’ın iletim protokolleri ve güvenlik duvarı davranışı açısından OpenVPN ile nasıl karşılaştırıldığını anlamak yer alır.

Bu öğretici için, başka bir Ubuntu sistemi WireGuard Eş olarak kullanılır. Bu serideki sonraki öğreticiler, Windows, macOS, Android ve iOS'ta WireGuard'ın kurulumunu ve kullanımını ele almaktadır.

Frontend uygulamalarınızı GitHub üzerinden Linux-Console.net Uygulama Platformu ile dağıtın. Linux-Console.net, uygulamanızın ölçeklenmesine odaklansın.

Not: Eğer WireGuard'ı bir Linux-Console.net Droplet üzerinde kurmayı planlıyorsanız, bilmeniz gerekir ki biz, birçok hosting sağlayıcısı gibi, aşım olan bant genişliği için ücret alıyoruz. Bu nedenle, sunucunuzun ne kadar trafik işlediğine dikkat edin. Daha fazla bilgi için Bant Genişliği Faturalandırma sayfamıza bakın.

Önemli Noktalar:

  • WireGuard, basit bir tasarıma sahip ve genel ile özel anahtar çiftlerine dayanan modern kriptografi kullanan, yapılandırma karmaşıklığını ve hataları azaltan hafif bir VPN'dir.
  • WireGuard, tüm sistemlerin aynı yazılımı çalıştırdığı bir eşler arası mimariyi takip eder ve sunucu ve eş terimleri yalnızca ağ topolojisini tanımlar, farklı roller veya yetenekleri değil.
  • WireGuard'daki tüm şifreleme, kimlik doğrulama ve yönlendirme davranışı, kontrol düzlemi, sertifika yetkilisi veya çalışma zamanı müzakeresi olmaksızın yapılandırma dosyalarında açıkça tanımlanmıştır.
  • AllowedIPs ayarı iki amaç için kullanılır: hangi trafiğin tünel üzerinden yönlendirileceğini kontrol eder ve eşlerden gelen gelen trafiğe yönelik katı bir erişim kontrol listesi olarak işlev görür.
  • WireGuard hem IPv4 hem de IPv6'yı eşit olarak destekler ve çift yığın yapılandırmaları, her protokol için dikkatli yönlendirme, güvenlik duvarı kuralları ve yönlendirme ayarları gerektirir.
  • WireGuard'ı VPN geçidi olarak kullanırken, eş trafiklerin dış ağlara ulaşabilmesi için sunucuda IP yönlendirme ve güvenlik duvarı maskeleme yapılandırılmalıdır.
  • wg-quick yardımcı aracı, rota oluşturma, güvenlik duvarı kuralları ve arayüz kurulumu işlemlerini otomatikleştirirken, WireGuard çekirdek modülü yalnızca paketleri şifreleme ve çözme işlemlerine odaklanır.
  • IPv6 sızıntıları, ::/0 gibi IPv6 rotaları açıkça dahil edilmediğinde çift yığın (dual-stack) kurulumlarda meydana gelebilir ve bu durumda IPv4 trafiği doğru şekilde tünellenmiş olsa bile IPv6 trafiği VPN'i atlayabilir.
  • WireGuard, sistem yönlendirmelerini, DNS ayarlarını veya güvenlik duvarı kurallarını otomatik olarak değiştirmez, bu nedenle yönlendirme ve ağ davranışını yönetmek için wg-quick gibi araçlar veya manuel yapılandırma gereklidir.
  • Çift yığınlı WireGuard dağıtımları, işletim sistemi her protokolü bağımsız olarak yönettiğinden, IPv4 ve IPv6 yönlendirme, güvenlik duvarı kuralları ve ICMPv6 desteğinin ayrı ayrı yapılandırılmasını gerektirir.

Önkoşullar

Bu eğitimi takip etmek için ihtiyacınız olacak:

  • Bir Ubuntu sunucusu, sudo yetkisine sahip bir root olmayan kullanıcı ve etkin bir güvenlik duvarı ile. Bunu kurmak için, Ubuntu ile İlk Sunucu Kurulumu kılavuzumuzu takip edebilirsiniz. Bu kılavuz boyunca buna WireGuard Sunucusu diyeceğiz.

  • WireGuard Sunucunuza bağlanmak için kullanacağınız bir istemci bilgisayara ihtiyacınız olacak. Bu eğitimde bu bilgisayara WireGuard Eş olarak atıfta bulunacağız. Bu eğitim için, WireGuard Eş olarak yerel bilgisayarınızı kullanmanız önerilir, ancak isterseniz uzak sunucular veya mobil telefonları da istemci olarak kullanabilirsiniz. Eğer uzak bir sistem kullanıyorsanız, bu eğitimdeki tüm isteğe bağlı bölümleri takip ettiğinizden emin olun, aksi takdirde sistemin dışında kalabilirsiniz.

  • WireGuard'ı IPv6 ile kullanmak için, sunucunuzun bu tür trafiği destekleyecek şekilde yapılandırıldığından emin olmanız gerekir. Eğer WireGuard ile IPv6 desteğini etkinleştirmek istiyorsanız ve bir Linux-Console.net Droplet kullanıyorsanız, lütfen bu belgeler sayfasına bakın: Droplet'lerde IPv6 Nasıl Etkinleştirilir. IPv6 desteğini bir Droplet oluştururken ekleyebilir veya daha sonra o sayfadaki talimatları kullanarak ekleyebilirsiniz.

WireGuard Mimarisi Genel Bakış

WireGuard'ı yapılandırmadan önce, sistemlerin, eşlerin ve ağ trafiğinin nasıl etkileşimde bulunduğunu anlamak faydalıdır. WireGuard, kontrol düzlemlerinden, sertifika otoritelerinden ve yapılandırma parametrelerinin çalışma anında müzakeresinden kaçınan kasıtlı olarak basit bir mimari kullanır. Tüm şifreleme, kimlik doğrulama ve yönlendirme davranışı, yapılandırma dosyaları aracılığıyla açık şekilde tanımlanır.

Eşler Arası Tasarım ve Topoloji Terminolojisi

WireGuard temelde eşler arası bir protokoldür. Tüm katılımcı sistemlerde aynı WireGuard yazılımı ve çekirdek modülü çalışır ve ayrı bir sunucu veya istemci ikili dosyası yoktur.

Bu öğreticide, WireGuard Sunucusu terimi, bir hub-and-spoke (merkez-çapraz) topolojisindeki merkezi bir düğümü ifade eder. Bu sistem genel olarak erişilebilirdir ve diğer düğümler için koordinasyon noktası olarak görev yapar. WireGuard Eş terimi, bu merkeze bağlanan cihazları ifade eder. Bu terimler, bu kılavuzda kullanılan ağ topolojisini açıklamak için kullanılır; farklı yazılım rolleri veya yeteneklerini ifade etmez.

Bu ayrımı anlamak önemlidir çünkü WireGuard'ın yalnızca sunucuya özgü yapılandırma seçenekleri yoktur. Her sistem, anahtarların, adreslerin ve yönlendirme kurallarının nasıl tanımlandığına tamamen bağlı olarak bir merkez, bir uç nokta veya her ikisi olarak hareket edebilir.

Bir WireGuard Dağıtımındaki Temel Bileşenler

Bir WireGuard kurulumu, her biri belirli bir sorumluluğa sahip az sayıda net tanımlanmış bileşenden oluşur.

  • Merkezi Eş (Hub): Merkezi eş, tek bir port üzerinden şifreli UDP trafiğini dinleyen, herkese açık bir sistemdir. Genellikle wg0 olarak adlandırılan bir sanal tünel arayüzüne ev sahipliği yapar ve iletişim kurmasına izin verilen diğer eşlerin açık anahtarlarını depolar. Hub, dinamik olarak eşleri keşfetmez veya bağlantıları otomatik olarak kabul etmez. Trafik, yalnızca açık anahtarları ve izin verilen IP aralıkları açıkça yapılandırılmış eşlerden kabul edilir.

  • Eşler Arası Bağlantı (Halkalar): Eşler arası bağlantı kuran cihazlar, merkezi eşe şifreli tüneller oluşturur. Bu cihazlar dizüstü bilgisayarlar, sunucular, sanal makineler veya mobil sistemler olabilir. Her eşin kendine ait benzersiz bir kriptografik anahtar çifti ve tünel arayüzüne atanmış bir veya daha fazla özel IP adresi vardır. Bir eş, yalnızca yönlendirme kuralları bunu yapmasını söylediğinde tünel üzerinden trafik gönderir.

  • Tünel Arayüzü (wg0): Tünel arayüzü, her katılımcı sistemde oluşturulan sanal bir ağ aygıtıdır. Tüm şifreli trafik bu arayüzden girer ve çıkar. İşletim sistemi açısından wg0, normal bir ağ arayüzü gibi davranır; bu da standart yönlendirme tablolarının, güvenlik duvarı kurallarının ve yönlendirme davranışlarının uygulanmasına olanak tanır.

Şifreleme, Kimlik Doğrulama ve El Sıkışma

WireGuard, eşleri doğrulamak ve trafiği şifrelemek için açık anahtar şifrelemesi kullanır. Her eş, yerel sistemde kalan ve asla iletilmeyen uzun vadeli bir özel anahtar oluşturur. Buna karşılık gelen açık anahtar, diğer eşlerle paylaşılır ve onların yapılandırmalarına eklenir.

İletişim başladığında, WireGuard Noise protokol çerçevesine dayalı sessiz ve otomatik bir kriptografik el sıkışma gerçekleştirir. Bu el sıkışma geçici oturum anahtarlarını oluşturur ve Mükemmel İleriye Dönük Gizlilik sağlar. Bu oturum anahtarları kullanıcı müdahalesi olmadan periyodik olarak değiştirilir.

WireGuard şifreleme paketlerini, kimlik doğrulama yöntemlerini veya protokol sürümlerini müzakere etmez. Tüm kriptografik ilkelere tasarım gereği sabittir. Bu, modern güvenlik garantileri sağlamaya devam ederken tüm bir yapılandırma hatası sınıfını ortadan kaldırır.

Desteklenen Trafik Akışı Modelleri

WireGuard, yönlendirme ve iletimin nasıl yapılandırıldığına bağlı olarak birden fazla trafik modelini destekler. Bu eğitim, en yaygın iki kullanım durumuna odaklanmaktadır.

Eşler Arası veya Dahili Ağ Erişimi

Eşler arası veya dahili erişim yapılandırmasında, trafik yalnızca VPN’in parçası olan sistemler arasında şifrelenir. Merkezi eş güvenli bir uç nokta veya yönlendirici gibi çalışır, ancak trafiği dış ağlara iletmez.

Bu yapılandırma genellikle özel hizmetlere erişmek, altyapıyı yönetmek veya izole sistemleri bağlamak için kullanılır. Trafik, yalnızca hedef adres eşleştiğinde ve eşin yapılandırmasında tanımlanan özel IP aralıklarıyla uyuştuğunda tünele yönlendirilir.

VPN Ağ Geçidi Modu

Ağ geçidi modunda, merkezi eş diğer eşlerden gelen trafiği genel İnternet dahil olmak üzere dış ağlara iletir. Eşler, trafiğinin bir kısmını veya tamamını tünele gönderir ve merkezi eş bu trafiği IP yönlendirme ve ağ adresi çevirisi kullanarak iletir.

Bu yapılandırma, çekirdek yönlendirme ve güvenlik duvarı kuralları dahil olmak üzere ek sistem ayarları gerektirir. Ağ geçidi modu etkinleştirildiğinde, eşlerden gelen giden trafik merkezi eşin genel IP adresinden geliyormuş gibi görünür.

AllowedIPs’in Çifte Rolü

AllowedIPs direktifi, WireGuard'ta iki farklı amaç için kullanılır.

Öncelikle, giden yönlendirme davranışını tanımlar. Bir paketin hedef adresi AllowedIPs içindeki bir girişle eşleştiğinde, o paket WireGuard tünelinden yönlendirilir.

İkinci olarak, AllowedIPs katı bir gelen erişim kontrol listesi gibi çalışır. Bir paket bir eşten alındığında, WireGuard paketin kaynak IP adresini kontrol eder. Kaynak adres, o eşin AllowedIPs listesinde yoksa, paket hemen düşürülür.

Bu çift rol kasıtlıdır ve yapılandırma hatalarının en yaygın kaynaklarından biridir. Yalnızca doğru yönlendirme yeterli değildir. Bir eşin kullanmasına izin verilen kaynak IP adresleri de açıkça izin verilmelidir.

Yönlendirme Otomasyonu ve Yardımcı Araçlar

WireGuard çekirdek modülü kendisi sistem yönlendirmelerini, DNS ayarlarını veya güvenlik duvarı kurallarını değiştirmez. Sadece paketleri şifreler ve çözer ve bunları eşlerle ilişkilendirir.

Yönlendirme otomasyonu, wg-quick gibi yardımcı araçlar tarafından yönetilir. Bu yardımcı program, WireGuard yapılandırma dosyasını okur ve bir tünel açıldığında veya kapatıldığında gerekli yönlendirme tablosu girişlerini, DNS ayarlarını ve güvenlik duvarı kurallarını uygular.

WireGuard, ham wg komutları, systemd-networkd veya özel betikler gibi alternatif araçlar kullanılarak yapılandırılmışsa, bu yönlendirme değişiklikleri manuel olarak yönetilmelidir.

Bu ayrım, çekirdek protokolü basit tutarken farklı sistem ağ yığınlarıyla esnek entegrasyona olanak tanır.

Adım 1 — WireGuard'ı Kurma ve Anahtar Çifti Oluşturma

Bu öğreticideki ilk adım, sunucunuza WireGuard'ı kurmaktır. Başlamak için, WireGuard Sunucunuzun paket indeksini güncelleyin ve aşağıdaki komutları kullanarak WireGuard'ı kurun. Eğer bu oturumda sudo komutunu ilk kez kullanıyorsanız, sizden sudo kullanıcınızın şifresi istenebilir:

sudo apt update

sudo apt install wireguard

Artık WireGuard'ı yüklediğinize göre, bir sonraki adım sunucu için bir özel ve genel anahtar çifti oluşturmaktır. Anahtarları oluşturmak için yerleşik wg genkey ve wg pubkey komutlarını kullanacak ve ardından özel anahtarı WireGuard’ın yapılandırma dosyasına ekleyeceksiniz.

Ayrıca, varsayılan olarak dosya sunucunuzdaki herhangi bir kullanıcı tarafından okunabilir olduğundan, az önce oluşturduğunuz anahtarın izinlerini chmod komutunu kullanarak değiştirmeniz gerekecek.

WireGuard için özel anahtarı oluşturun ve izinlerini aşağıdaki komutları kullanarak değiştirin:

wg genkey | sudo tee /etc/wireguard/private.key

sudo chmod go= /etc/wireguard/private.key

sudo chmod go=... komutu, yalnızca root kullanıcısının özel anahtara erişebilmesini sağlamak için dosyadaki diğer kullanıcılar ve gruplar için tüm izinleri kaldırır.

Tek satırlık base64 kodlu bir çıktı almalısınız, bu çıktı özel anahtardır. Çıktının bir kopyası ayrıca komutun tee kısmı tarafından gelecekte başvurmak üzere /etc/wireguard/private.key dosyasında saklanır. Çıktı olarak verilen özel anahtarı dikkatlice not edin, çünkü daha sonra bu bölümlerde WireGuard’ın yapılandırma dosyasına eklemeniz gerekecek.

Bir sonraki adım, özel anahtardan türetilen ilgili açık anahtarı oluşturmaktır. Açık anahtar dosyasını oluşturmak için aşağıdaki komutu kullanın:

sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key

Bu komut, | (pipe) operatörü kullanılarak birbirine bağlanmış üç ayrı komuttan oluşur:

  • sudo cat /etc/wireguard/private.key: bu komut, özel anahtar dosyasını okur ve standart çıkış akışına yazdırır.
  • wg pubkey: ikinci komut, birinci komuttan çıkan çıktıyı standart girişi olarak alır ve bunu işleyerek bir açık anahtar oluşturur.
  • sudo tee /etc/wireguard/public.key: son komut, genel anahtar oluşturma komutunun çıktısını alır ve /etc/wireguard/public.key adlı dosyaya yönlendirir.

Komutu çalıştırdığınızda tekrar base64 ile kodlanmış tek satırlık bir çıktı alacaksınız; bu, WireGuard Sunucunuz için genel anahtardır. Bunu bir yerde not edin, çünkü sunucuya bağlanan herhangi bir istemciye bu genel anahtarı dağıtmanız gerekecektir.

Adım 2 — IPv4 ve IPv6 Adreslerini Seçmek

Önceki bölümde WireGuard'ı yüklediniz ve sunucuya giden ve sunucudan gelen trafiği şifrelemek için kullanılacak bir anahtar çifti oluşturduğunuz. Bu bölümde, sunucu için bir yapılandırma dosyası oluşturacak ve sunucunuz yeniden başlatıldığında WireGuard'ın otomatik olarak başlatılmasını ayarlayacaksınız. Ayrıca WireGuard Sunucunuz ve eşlerinizle kullanılacak özel IPv4 ve IPv6 adreslerini tanımlayacaksınız.

Hem IPv4 hem de IPv6 adreslerini kullanmayı planlıyorsanız, bu bölümlerin her ikisini de takip edin. Aksi takdirde, VPN’inizin ağ ihtiyaçları için uygun bölümdeki talimatları izleyin.

Adım 2(a) — Bir IPv4 Aralığı Seçmek

Eğer WireGuard sunucunuzu IPv4 eşleri ile kullanıyorsanız, sunucunun istemciler için ve tünel arayüzü için kullanacağı bir özel IPv4 adres aralığına ihtiyacı vardır. Aşağıdaki ayrılmış adres bloklarından herhangi bir IP adres aralığını seçebilirsiniz (bu blokların nasıl tahsis edildiğini daha fazla öğrenmek isterseniz RFC 1918 spesifikasyonunu inceleyebilirsiniz):

  • 10.0.0.0 ile 10.255.255.255 arası (10/8 öneki)
  • 172.16.0.0 ile 172.31.255.255 (172.16/12 ön eki)
  • 192.168.0.0 ile 192.168.255.255 arası (192.168/16 öneki)

Bu eğitim amacıyla, rezerv edilmiş IP aralıklarının ilk bloğundan bir IP adresi bloğu olarak 10.8.0.0/24 kullanacağız. Bu aralık, 255 farklı eş bağlantıya kadar izin verir ve genellikle diğer özel IP aralıklarıyla çakışan veya uyumsuz adresler içermemelidir. Bu örnek aralık ağlarınızla uyumlu değilse, ağ yapılandırmanızla çalışacak bir adres aralığı seçmekte özgürsünüz.

WireGuard Sunucusu, özel tünel IPv4 adresi için aralıktan tek bir IP adresi kullanacaktır. Burada 10.8.0.1/24 kullanılacaktır, ancak 10.8.0.1 ile 10.8.0.255 arasındaki herhangi bir adres kullanılabilir. 10.8.0.1/24 dışında bir adres kullanıyorsanız seçtiğiniz IP adresini not alın. Bu IPv4 adresini, WireGuard Sunucu Yapılandırması Oluşturma bölümünde tanımladığınız yapılandırma dosyasına ekleyeceksiniz.

Adım 2(b) — Bir IPv6 Aralığı Seçmek

Eğer IPv6 ile WireGuard kullanıyorsanız, RFC 4193'teki algoritmaya dayalı olarak benzersiz bir yerel IPv6 unicast adres öneki oluşturmanız gerekecektir. WireGuard ile kullandığınız adresler sanal bir tünel arayüzü ile ilişkilendirilecektir. Özel IPv6 adreslerinin ayrılmış fd00::/8 bloğu içinde rastgele ve benzersiz bir IPv6 öneki oluşturmak için birkaç adımı tamamlamanız gerekecektir.

RFC'ye göre, benzersiz bir IPv6 öneki elde etmenin önerilen yolu, günün saatini bir seri numarası veya cihaz kimliği gibi bir sistemden alınan benzersiz bir tanımlayıcı değerle birleştirmektir. Bu değerler daha sonra hashlenir ve kısaltılır, böylece IP'lerin ayrılmış özel fd00::/8 bloğu içinde benzersiz bir adres olarak kullanılabilecek bir bit seti elde edilir.

WireGuard Sunucunuz için bir IPv6 aralığı oluşturmaya başlamak için, aşağıdaki komut ile date aracını kullanarak 64 bitlik bir zaman damgası toplayın:

date +%s%N

1970-01-01 00:00:00 UTC'dan itibaren saniyeleri (date komutundaki %s) ve nanosaniyeleri (%N) birleştirilmiş şekilde alacağınız sayı şöyle bir sayı olacaktır:

1628101352127592197

Bu bölümde daha sonra kullanmak üzere değeri bir yere kaydedin. Ardından, sunucunuzun /var/lib/dbus/machine-id dosyasındaki machine-id değerini kopyalayın. Bu tanımlayıcı sisteminize özeldir ve sunucu var olduğu sürece değişmemelidir.

cat /var/lib/dbus/machine-id

Aşağıdakine benzer bir çıktı alacaksınız:

/var/lib/dbus/machine-id
20086c25853947c7aeee2ca1ea849d7d

Şimdi zaman damgasını machine-id ile birleştirmeniz ve ortaya çıkan değeri SHA-1 algoritmasını kullanarak hashlemeniz gerekiyor. Komut aşağıdaki formatı kullanacaktır:

printf <timestamp><machine-id> | sha1sum

Komutu, zaman damgası ve makine kimliği değerlerinizi yerine koyarak çalıştırın:

printf 162810135212759219720086c25853947c7aeee2ca1ea849d7d | sha1sum

Aşağıdakine benzer bir hash değeri alacaksınız:

4f267c51857d6dc93a0bca107bca2f0d86fac3bc  -

Dikkat edin, sha1sum komutunun çıktısı onaltılı (hexadecimal) biçimdedir, bu yüzden çıktı tek bir veri baytını temsil etmek için iki karakter kullanır. Örneğin, örnek çıktıda 4f ve 26, hashlenmiş verinin ilk iki baytıdır.

RFC'deki algoritma, karmalanmış çıktının yalnızca en az anlamlı (son) 40 bitini veya 5 baytını gerektirir. Hash'ten son 5 onaltılık kodlanmış baytı yazdırmak için cut komutunu kullanın:

printf 4f267c51857d6dc93a0bca107bca2f0d86fac3bc | cut -c 31-

-c argümanı, cut komutuna yalnızca belirli bir karakter setini seçmesini söyler. 31- argümanı ise cut'a girdi satırının 31. karakterinden sonuna kadar tüm karakterleri yazdırmasını söyler.

Aşağıdakine benzer bir çıktı almanız gerekir:

0d86fac3bc

Bu örnek çıktıda, byte kümesi şudur: 0d 86 fa c3 bc.

Artık oluşturduğunuz 5 baytı fd öneki ile ekleyerek benzersiz IPv6 ağ ön ekinizi oluşturabilirsiniz; okunabilirlik için her 2 baytı bir : iki nokta ile ayırın. Benzersiz ön ekinizdeki her alt ağ toplamda 18,446,744,073,709,551,616 olası IPv6 adresini barındırabileceğinden, basitlik için alt ağı standart bir /64 boyutuyla sınırlayabilirsiniz.

Daha önce /64 alt ağ boyutuyla oluşturulan baytları kullanarak ortaya çıkan önek şunlar olacaktır:

Unique Local IPv6 Address Prefix
fd0d:86fa:c3bc::/64

Bu fd0d:86fa:c3bc::/64 aralığı, sunucunuz ve eşlerinizdeki WireGuard tünel arayüzlerine bireysel IP adresleri atamak için kullanacağınız aralıktır. Sunucu için bir IP atamak amacıyla, son :: karakterlerinden sonra bir 1 ekleyin. Ortaya çıkan adres fd0d:86fa:c3bc::1/64 olacaktır. Eşler aralıkta herhangi bir IP kullanabilir, ancak genellikle her yeni eş eklediğinizde değeri bir artırırsınız, örneğin fd0d:86fa:c3bc::2/64. IP adresini not edin ve bu öğreticinin bir sonraki bölümünde WireGuard Sunucusunu yapılandırmaya devam edin.

IPv6 ve Çift Yığın Yapılandırma Dikkate Alınması

Bu öğreticideki mevcut adımlar, IPv6 adreslerinin nasıl oluşturulacağını ve bunların WireGuard arayüzlerine nasıl atanacağını açıklamaktadır. Ancak, WireGuard'ta IPv6 davranışı, özellikle WireGuard VPN ağ geçidi olarak kullanıldığında, IPv4'ten birkaç önemli yönden farklıdır. Bu farklılıkları anlamak, yönlendirme hatalarını, kısmi tünelleme sorunlarını ve yaygın IPv6 sızıntılarını önlemeye yardımcı olur.

WireGuard'ta IPv6 Desteği

WireGuard, IPv6'yı birinci sınıf bir protokol olarak destekler. IPv6 trafiği, IPv4 trafiği ile aynı mekanizmalar kullanılarak şifrelenir, doğrulanır ve yönlendirilir. Ayrı bir IPv6 modu veya ek bir yapılandırma bayrağı yoktur. Tünel arayüzüne IPv6 adresleri atanmışsa ve yönlendirme kuralları izin veriyorsa, IPv6 trafiği tünelden otomatik olarak geçer.

IPv4'ün aksine, IPv6 küresel olarak yönlendirilebilir adresler kullanarak NAT'tan kaçınacak şekilde tasarlanmıştır, ancak pratikte birçok VPN ve bulut ortamı operasyonel basitlik için hâlâ NAT kullanmaktadır. Ancak, bu davranış ağ ortamına bağlıdır. Bulut VPS örnekleri veya ev yönlendiricileri gibi birçok VPN ağ geçidi kurulumunda, sunucu VPN eşlerine yönlendirilebilecek bir atanmış IPv6 öneki almaz.

Bu yaygın senaryolarda, eşler genellikle Özel IPv6 adresleriyle atanır, genellikle Benzersiz Yerel Adres (ULA) aralığından. Özel IPv6 adresleri kullanıldığında ve sunucunun bunlar için yönlendirilebilir bir öneki yoksa, IPv6 maskeleme hâlâ gereklidir. Bu genellikle VPN eşlerinin genel İnternet'e erişmesine izin vermek için IPv4 maskelemesine benzer şekilde ip6tables -t nat kurallarıyla uygulanır.

IPv6, uygun önek yetkilendirmesi mevcut olduğunda NAT'tan tamamen kaçınabilir. Ancak, çoğu basit VPN ağ geçidi dağıtımı, yönlendirmeyi yönetilebilir tutmak için hâlâ IPv6 gizlemeye dayanır.

Çift Yığın Davranışı Açıklandı

Çift yığın yapılandırması, aynı WireGuard arayüzünde hem IPv4 hem de IPv6'nın kullanılmasını sağlar. Bu kurulumda, wg0 arayüzüne bir IPv4 adresi ve bir IPv6 adresi atanır ve her protokol bağımsız olarak yönlendirilir.

İşletim sistemi IPv4 ve IPv6 rotalarını ayrı ayrı değerlendirir. Bir eş, IPv4 trafiğini tünel üzerinden başarıyla yönlendirebilirken IPv6 trafiği tüneli atlayabilir ya da tam tersi olabilir. Bu davranış beklenen bir durumdur ve neredeyse her zaman WireGuard’ın kendisinde bir sorun yerine yapılandırma sorununu gösterir.

Çift yığınlı yönlendirmenin doğru çalışabilmesi için birkaç koşulun sağlanması gerekir. Hem sunucunun hem de eşin WireGuard arayüzlerine IPv4 ve IPv6 adreslerinin atanmış olması gerekir. AllowedIPs yönergesi hem IPv4 hem de IPv6 aralıklarını içermelidir. IP yönlendirme IPv4 ve IPv6 için ayrı ayrı etkinleştirilmelidir. Güvenlik duvarı kuralları, her iki protokol için de yönlendirme ve geri dönüş trafiğine izin vermelidir.

Adres Ataması ve Önek Uzunlukları

IPv4 için, WireGuard dağıtımları genellikle 10.0.0.0/8 veya 192.168.0.0/16 gibi özel adres aralıklarını kullanır. Her eşe genellikle tek bir IPv4 adresi atanır.

IPv6 için, VPN ağı genellikle /64 önek olarak tanımlanır, örneğin fd00::/64. Ethernet ağları komşu keşfi ve adres otomatik yapılandırması için bir /64 gerektirirken, WireGuard Laye 3 nokta-noktaya arayüz olarak çalışır ve bu mekanizmaları kullanmaz.

Bu nedenle, her eşe /128 IPv6 adresi atamak güvenlidir ve genellikle tavsiye edilir, örneğin fd00::2/128. /128 adreslerin kullanılması, sıkı bir yönlendirme davranışını garanti eder ve eşlerin uygun yönlendirme kuralları olmadan alt ağdaki diğer adreslerle doğrudan iletişim kurmaya çalışmasını önler.

Ağı /64 olarak tanımlamak ve eşlere /128 adresler atamak, netlik sağlar ve belirsiz yönlendirmeyi önler.

Tüm Trafiği IPv6 ile Yönlendirme

WireGuard bir VPN geçidi olarak yapılandırıldığında, IPv6 trafiği de IPv4 trafiğiyle aynı şekilde açıkça yönlendirilmelidir.

IPv4 için, tüm trafiğin yönlendirilmesi 0.0.0.0/0 öneki kullanılarak yapılır. IPv6 için eşdeğer önek ::/0'dir. Hedef, tüm trafiği VPN üzerinden yönlendirmekse, her iki önek de dahil edilmelidir.

Eğer sadece 0.0.0.0/0 yapılandırılmışsa, IPv4 trafiği VPN üzerinden gönderilirken IPv6 trafiği yerel ağ arayüzünü kullanmaya devam eder. Bu durum IPv6 sızıntısı olarak bilinir. Bu genellikle DNS sorgularının, web trafiğinin veya uygulama bağlantılarının IPv6 üzerinden VPN’i atlayarak geçmesine, IPv4 trafiğinin ise koruma altında kalmasına yol açar.

IPv6 sızıntıları sıkça kafa karışıklığına yol açar ve çift yığın ağ etkinleştirildiğinde her zaman test edilmelidir.

Güvenlik Duvarı, Yönlendirme ve ICMPv6

IPv6 yönlendirme, IPv4 yönlendirmeden bağımsız olarak etkinleştirilmelidir. Birini etkinleştirmek diğerini otomatik olarak etkinleştirmez. Arayüzler arasında trafik yönlendirirken her iki ayarın da etkin olması gerekir.

Güvenlik duvarı kuralları IPv6 için de açıkça tanımlanmalıdır. ufw, iptables ve nftables gibi araçlar IPv4 ve IPv6’yı ayrı kural setleri olarak değerlendirir. Eksik IPv6 kuralları, IPv4 bağlantısı çalışıyor gibi görünse bile trafiği sessizce engelleyebilir.

ICMPv6 trafiğine izin vermek özellikle önemlidir. IPv4'ün aksine, IPv6 temel işlevler için ICMPv6'ya dayanır; örneğin Path MTU Discovery gibi. ICMPv6 engellenirse, küçük paketler çalışıyor gibi görünse bile, daha büyük paketler gönderildiğinde bağlantılar takılabilir veya başarısız olabilir.

Yaygın Çift Yığın Tuzakları

Çift yığınlı WireGuard kurulumlarında genellikle birkaç sorun ortaya çıkar. IPv6 yönlendirmeleri AllowedIPs yönergesinde eksik olabilir ve bu durum IPv6 trafiğinin tüneli atlamasına neden olabilir. Sunucuda IPv6 yönlendirmesi etkin olmayabilir, bu da trafiğin tünel arayüzünden çıkmasını engeller. Güvenlik duvarı kuralları IPv4 trafiğine izin verirken, IPv6 veya ICMPv6 trafiğini engelleyebilir. DNS çözücüler, IPv6 yönlendirmesi düzgün yapılandırılmamış olsa bile IPv6 adresleri döndürebilir.

Bu sorunlar genellikle aralıklı hatalar olarak ortaya çıkar ve sık sık uygulama veya protokol sorunları olarak yanlış teşhis edilir.

Yalnızca IPv4, Yalnızca IPv6 ve Çift Yığın Arasında Seçim Yapmak

Bazı ortamlarda, tek bir protokol kullanmak işlemleri basitleştirir.

Sadece IPv4 ile yapılan dağıtımlar, eski sistemler ve araçlarla entegre etmek daha kolaydır. Sadece IPv6 ile yapılan dağıtımlar, IPv4 NAT ihtiyacını ortadan kaldırır ve adres tükenmesini önler, ancak sağlayıcılardan ve istemci ağlarından tutarlı IPv6 desteği gerektirir.

Çift yığın dağıtımları en büyük esnekliği sağlar, ancak en dikkatli planlama, yapılandırma ve doğrulamayı da gerektirir.

Adım 3 — WireGuard Sunucu Yapılandırması Oluşturma

WireGuard Sunucunuzun yapılandırmasını oluşturmadan önce aşağıdaki bilgilere ihtiyacınız olacak:

  • WireGuard'ı Kurma ve Bir Anahtar Çifti Oluşturma bölümünden özel anahtarınızın elinizde olduğundan emin olun.
  • IPv4 ile WireGuard kullanıyorsanız, IPv4 Aralığı Seçme bölümünde sunucu için seçtiğiniz IP adresine ihtiyacınız olacak, bu örnekte 10.8.0.1/24 olarak gösterilmiştir.
  • Eğer WireGuard'ı IPv6 ile kullanıyorsanız, IPv6 Aralığı Seçerken oluşturduğunuz sunucunun IP adresine ihtiyacınız olacak. Bu örnekte IP fd0d:86fa:c3bc::1/64.

Gerekli özel anahtar ve IP adres(ler)ine sahip olduğunuzda, aşağıdaki komutu çalıştırarak nano veya tercih ettiğiniz düzenleyici ile yeni bir yapılandırma dosyası oluşturun:

sudo nano /etc/wireguard/wg0.conf

Aşağıdaki satırları dosyaya ekleyin ve vurgulanan base64_encoded_private_key_goes_here değerinin yerine kendi özel anahtarınızı, Address satırındaki IP adreslerini ise kendi IP adreslerinizle değiştirin. Ayrıca, WireGuard'ın farklı bir portta kullanılmasını isterseniz ListenPort satırını da değiştirebilirsiniz:

/etc/wireguard/wg0.conf
[Interface] PrivateKey = base64_encoded_private_key_goes_here Address = 10.8.0.1/24, fd0d:86fa:c3bc::1/64 ListenPort = 51820 SaveConfig = true

SaveConfig satırı, bir WireGuard arayüzü kapatıldığında yapılan değişikliklerin yapılandırma dosyasına kaydedilmesini sağlar.

/etc/wireguard/wg0.conf dosyasını kaydedin ve kapatın. Eğer nano kullanıyorsanız, bunu CTRL+X, ardından Y ve ENTER tuşlarına basarak onaylayabilirsiniz. Artık, WireGuard VPN sunucunuzu nasıl kullanmayı planladığınıza bağlı olarak üzerine inşa edebileceğiniz bir başlangıç sunucu yapılandırmasına sahipsiniz.

Adım 4 — WireGuard Sunucusunun Ağ Yapılandırmasını Ayarlamak

Eğer bir eş cihazı WireGuard Server’a bağlamak için WireGuard kullanıyor ve sadece server üzerindeki hizmetlere erişmek istiyorsanız, bu bölümü tamamlamanıza gerek yoktur. Eğer WireGuard eş cihazınızın internet trafiğini WireGuard Server üzerinden yönlendirmek istiyorsanız, bu öğreticinin bu bölümünü izleyerek IP yönlendirmeyi yapılandırmanız gerekecektir.

Yönlendirmeyi yapılandırmak için, nano veya tercih ettiğiniz editörü kullanarak /etc/sysctl.conf dosyasını açın:

sudo nano /etc/sysctl.conf

Eğer WireGuard ile IPv4 kullanıyorsanız, dosyanın en altına aşağıdaki satırı ekleyin:

net.ipv4.ip_forward=1

Eğer WireGuard ile IPv6 kullanıyorsanız, dosyanın en altına bu satırı ekleyin:

net.ipv6.conf.all.forwarding=1

Hem IPv4 hem de IPv6 kullanıyorsanız, her iki satırı da eklediğinizden emin olun. İşiniz bittiğinde dosyayı kaydedip kapatın.

Dosyayı okumak ve mevcut terminal oturumunuz için yeni değerleri yüklemek için şunu çalıştırın:

sudo sysctl -p
net.ipv6.conf.all.forwarding = 1
net.ipv4.ip_forward = 1

Artık WireGuard Sunucunuz, sanal VPN ethernet cihazından gelen trafiği sunucudaki diğer cihazlara ve oradan da genel internete iletebilecek. Bu yapılandırmayı kullanmak, tüm web trafiğinizi WireGuard Eşiniz üzerinden sunucunuzun IP adresiyle yönlendirmenize olanak tanıyacak ve istemcinizin genel IP adresi etkin bir şekilde gizlenecek.

Ancak, trafiğin sunucunuz üzerinden doğru şekilde yönlendirilmeden önce, bazı güvenlik duvarı kurallarını yapılandırmanız gerekecek. Bu kurallar, WireGuard Sunucunuz ve Eşleriniz arasındaki trafiğin düzgün bir şekilde akmasını sağlayacaktır.

Adım 5 — WireGuard Sunucusunun Güvenlik Duvarını Yapılandırma

Bu bölümde, sunucu ve istemciler arasındaki trafiğin doğru şekilde yönlendirilmesini sağlamak için WireGuard Sunucusu’nun yapılandırmasını düzenleyip güvenlik duvarı kuralları ekleyeceksiniz. Önceki bölümde olduğu gibi, eğer WireGuard VPN’inizi yalnızca VPN’inize sınırlı kaynaklara erişmek için makineden makineye bir bağlantı için kullanıyorsanız, bu adımı atlayın.

WireGuard VPN trafiğinin Sunucunun güvenlik duvarından geçmesine izin vermek için, istemci bağlantılarını doğru şekilde yönlendirmek amacıyla dinamik ağ adresi çevirisi (NAT) sağlayan iptables konsepti olan masquerading’i etkinleştirmeniz gerekecek.

İlk olarak, WireGuard Sunucunuzun genel ağ arayüzünü ip route alt komutunu kullanarak bulun:

ip route list default

Genel arayüz, bu komutun çıktısında geçen ve “dev ” kelimesini izleyen dizedir. Örneğin, bu sonuç aşağıda vurgulanan eth0 adlı arayüzü göstermektedir:

default via 203.0.113.1 dev eth0 proto static

Bir sonraki adımda iptables kurallarına ekleyeceğiniz için cihazınızın adını not edin.

WireGuard Sunucunuza güvenlik duvarı kuralları eklemek için, /etc/wireguard/wg0.conf dosyasını tekrar nano veya tercih ettiğiniz bir düzenleyici ile açın.

sudo nano /etc/wireguard/wg0.conf

Dosyanın en altına, SaveConfig=true satırından sonra, aşağıdaki satırları yapıştırın:

/etc/wireguard/wg0.conf
. . . PostUp = ufw route allow in on wg0 out on eth0 PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE PostUp = ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE PreDown = ufw route delete allow in on wg0 out on eth0 PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE PreDown = ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

PostUp satırları, WireGuard Sunucusu sanal VPN tünelini başlattığında çalışacaktır. Buradaki örnekte, üç ufw ve iptables kuralı ekleyecektir:

  • ufw route allow in on wg0 out on eth0: Bu kural, wg0 VPN arayüzünden gelen IPv4 ve IPv6 trafiğinin sunucudaki eth0 ağ arayüzüne yönlendirilmesine izin verecektir. Bu, önceki bölümde yapılandırdığınız net.ipv4.ip_forward ve net.ipv6.conf.all.forwarding sysctl değerleri ile birlikte çalışır.
  • iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE: Bu kural maskeleme (masquerading) yapılandırır ve wg0 VPN arayüzünden gelen IPv4 trafiklerini, sanki WireGuard Sunucusu’nun genel IPv4 adresinden geliyormuş gibi yeniden yazar.
  • ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE: Bu kural maskeleme (masquerading) yapılandırır ve wg0 VPN arayüzünden gelen IPv6 trafiğini, sanki WireGuard Sunucusu’nun genel IPv6 adresinden geliyormuş gibi yeniden yazar.

Not: IPv6 gizleme (masquerading), ip6table_nat için çekirdek desteği gerektirir. Bazı dağıtımlarda veya bulut imajlarında bu modül mevcut olmayabilir veya varsayılan olarak etkinleştirilmemiş olabilir. Bu durumlarda, NAT yerine doğru IPv6 yönlendirmesini yetkilendirilmiş ön eklerle kullanmanız ve ULA adresleri yerine eşlere yönlendirilebilir bir IPv6 ön eki duyurmanız gerekir.

PreDown kuralları, WireGuard Sunucusu sanal VPN tünelini durdurduğunda çalışır. Bu kurallar PostUp kurallarının tersidir ve VPN durdurulduğunda VPN arayüzü için yapılan yönlendirme ve maskeleme kurallarını geri almak amacıyla çalışır.

Her iki durumda da, VPN'iniz için uygun olan IPv4 ve IPv6 kurallarını dahil etmek veya hariç tutmak için yapılandırmayı düzenleyin. Örneğin, sadece IPv4 kullanıyorsanız, ip6tables komutlarını içeren satırları dışlayabilirsiniz.

Tersine, yalnızca IPv6 kullanıyorsanız, yapılandırmayı sadece ip6tables komutlarını içerecek şekilde düzenleyin. ufw satırları, IPv4 ve IPv6 ağlarının herhangi bir kombinasyonu için mevcut olmalıdır. İşiniz bittiğinde dosyayı kaydedip kapatın.

WireGuard Sunucunuzda güvenlik duvarını yapılandırmanın son kısmı, WireGuard UDP portuna ve bu porttan gelen trafiğe izin vermektir. Sunucunun /etc/wireguard/wg0.conf dosyasında portu değiştirmediyseniz açacağınız port 51820 olacaktır. Yapılandırmayı düzenlerken farklı bir port seçtiyseniz, aşağıdaki UFW komutunda bunu kullanmayı unutmayın.

Eğer ön koşul eğitimini takip ederken SSH portunu açmayı unuttuysanız, bunu buraya da ekleyin:

sudo ufw allow 51820/udp

sudo ufw allow OpenSSH

Not: Farklı bir güvenlik duvarı kullanıyorsanız veya UFW yapılandırmanızı özelleştirdiyseniz, ek güvenlik duvarı kuralları eklemeniz gerekebilir. Örneğin, tüm ağ trafiğinizi VPN bağlantısı üzerinden yönlendirmeye karar verirseniz, DNS istekleri için 53 numaralı bağlantı noktasına izin verildiğinden ve HTTP ve HTTPS trafiği için sırasıyla 80 ve 443 numaralı bağlantı noktalarının açık olduğundan emin olmanız gerekir. VPN üzerinden kullandığınız başka protokoller varsa, onlar için de kurallar eklemeniz gerekecektir.

Bu kuralları ekledikten sonra, UFW'yi yeniden başlatmak ve değiştirdiğiniz tüm dosyalardaki değişiklikleri yüklemek için UFW'yi devre dışı bırakıp tekrar etkinleştirin:

sudo ufw disable

sudo ufw enable

Kuralların yerinde olduğunu ufw status komutunu çalıştırarak doğrulayabilirsiniz. Komutu çalıştırın, ve aşağıdaki gibi bir çıktı almanız gerekir:

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
51820/udp                  ALLOW       Anywhere                  
22/tcp                     ALLOW       Anywhere                  
51820/udp (v6)             ALLOW       Anywhere (v6)             
22/tcp (v6)                ALLOW       Anywhere (v6)

WireGuard sunucunuz artık VPN trafiğini doğru bir şekilde yönetmek üzere yapılandırıldı, buna eşler için yönlendirme ve maskeleme de dahildir. Güvenlik duvarı kuralları uygulandıktan sonra, eş bağlantılarını dinlemek için WireGuard hizmetini başlatabilirsiniz.

Adım 6 — WireGuard Sunucusunu Başlatma

WireGuard, yerleşik wg-quick betiğini kullanarak bir systemd servisi olarak çalışacak şekilde yapılandırılabilir. VPN'i her kullanmak istediğinizde tüneli oluşturmak için wg komutunu manuel olarak kullanabilirsiniz, ancak bu işlem tekrarlayan ve hataya açık bir süreçtir. Bunun yerine, wg-quick betiğinin yardımıyla tüneli yönetmek için systemctl kullanabilirsiniz.

systemd servisi kullanmak, WireGuard'ı önyükleme sırasında başlatacak şekilde yapılandırabileceğiniz anlamına gelir, böylece sunucu çalıştığı sürece VPN'inize istediğiniz zaman bağlanabilirsiniz. Bunu yapmak için, tanımladığınız wg0 tüneli için wg-quick servisini systemctl'e ekleyerek etkinleştirin:

sudo systemctl enable wg-quick@wg0.service

Komutun, tünel adı olan wg0 cihaz adını servis adının bir parçası olarak belirttiğine dikkat edin. Bu ad, /etc/wireguard/wg0.conf yapılandırma dosyasına karşılık gelir. Bu isimlendirme yaklaşımı, sunucunuzu kullanarak istediğiniz kadar ayrı VPN tüneli oluşturabilmenizi sağlar.

Örneğin, bir tünel cihazınız olabilir ve adına prod diyebilirsiniz ve yapılandırma dosyası /etc/wireguard/prod.conf olur. Her tünel yapılandırması farklı IPv4, IPv6 ve istemci güvenlik duvarı ayarlarını içerebilir. Bu şekilde, her birinin kendine özgü IP adresleri ve yönlendirme kuralları olan birden fazla farklı eş (peer) bağlantısını destekleyebilirsiniz.

Şimdi servisi başlatın:

sudo systemctl start wg-quick@wg0.service

Aşağıdaki komutla WireGuard servisinin aktif olduğunu çift kontrol edin. Servisin aktif olarak listelendiğini görmelisiniz. wg-quick arayüzü yapılandırdıktan sonra çıkış yaptığı için active (exited) normaldir.

sudo systemctl status wg-quick@wg0.service
● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0
     Loaded: loaded (/lib/systemd/system/wg-quick@.service; enabled; vendor preset: enabled)
     Active: active (exited) since Wed 2021-08-25 15:24:14 UTC; 5s ago
       Docs: man:wg-quick(8)
             man:wg(8)
             https://www.wireguard.com/
             https://www.wireguard.com/quickstart/
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8
             https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8
    Process: 3245 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS)
   Main PID: 3245 (code=exited, status=0/SUCCESS)

Aug 25 15:24:14 wg0 wg-quick[3245]: [#] wg setconf wg0 /dev/fd/63
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip -4 address add 10.8.0.1/24 dev wg0
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip -6 address add fd0d:86fa:c3bc::1/64 dev wg0
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip link set mtu 1420 up dev wg0
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ufw route allow in on wg0 out on eth0
Aug 25 15:24:14 wg0 wg-quick[3279]: Rule added
Aug 25 15:24:14 wg0 wg-quick[3279]: Rule added (v6)
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
Aug 25 15:24:14 wg0 wg-quick[3245]: [#] ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
Aug 25 15:24:14 wg0 systemd[1]: Finished WireGuard via wg-quick(8) for wg0.

Çıktı, sanal wg0 cihazını oluşturmak ve yapılandırma dosyasına eklediğiniz IPv4 ve IPv6 adreslerini atamak için kullanılan ip komutlarını gösterir. Bu kuralları tünelde sorun gidermek için kullanabilir veya VPN arayüzünü manuel olarak yapılandırmak isterseniz wg komutuyla da yapabilirsiniz.

Sunucu yapılandırılıp çalıştırıldıktan sonra, bir sonraki adım, istemci makinenizi WireGuard Eşleşeni olarak yapılandırmak ve WireGuard Sunucusuna bağlanmaktır.

Adım 7 — Bir WireGuard Eşini Yapılandırma

Bir WireGuard Peer yapılandırmak, WireGuard Sunucusunu kurmaya benzer. İstemci yazılımını kurduktan sonra, bir açık ve özel anahtar çifti oluşturacak, eş için bir IP adresi veya adresler belirleyecek, eş için bir yapılandırma dosyası tanımlayacak ve ardından wg-quick komut dosyasını kullanarak tüneli başlatacaksınız.

Aşağıdaki adımları kullanarak bir anahtar çifti ve yapılandırma oluşturarak VPN’inize istediğiniz kadar eş (peer) ekleyebilirsiniz. VPN’e birden fazla eş ekliyorsanız, çakışmaları önlemek için özel IP adreslerini takip ettiğinizden emin olun.

WireGuard Peer'i yapılandırmak için, WireGuard paketinin aşağıdaki apt komutlarını kullanarak yüklü olduğundan emin olun. WireGuard Peer üzerinde şunu çalıştırın:

sudo apt update

sudo apt install wireguard

WireGuard Eşinin Anahtar Çifti Oluşturulması

Sonraki adımda, sunucuda kullandığınız aynı adımları kullanarak eş üzerinde anahtar çiftini oluşturmanız gerekecek. Yerel makinenizden veya eş olarak hizmet verecek uzaktaki sunucudan, aşağıdaki komutları kullanarak eş için özel anahtarı oluşturabilirsiniz:

wg genkey | sudo tee /etc/wireguard/private.key

sudo chmod go= /etc/wireguard/private.key

Yine, özel anahtar olan base64 kodlu çıktının tek bir satırını alacaksınız. Çıktının bir kopyası ayrıca /etc/wireguard/private.key dosyasında da saklanır. Bu bölümün ilerleyen kısmında WireGuard’ın yapılandırma dosyasına eklemeniz gerekeceği için, çıkan özel anahtarı dikkatlice not edin.

Ardından genel anahtar dosyasını oluşturmak için aşağıdaki komutu kullanın:

sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key

Yine WireGuard Eşiniz için olan base64 kodlu tek satırlık bir çıktı alacaksınız. Şifreli bir bağlantı kurmak için genel anahtarı WireGuard Sunucusuna dağıtmanız gerekeceğinden, başvuru amacıyla bir yere kopyalayın.

WireGuard Eşinin Konfigürasyon Dosyasını Oluşturma

Artık bir anahtar çiftine sahip olduğunuza göre, peer'in WireGuard Sunucusuna bağlanması için ihtiyaç duyduğu tüm bilgileri içeren bir yapılandırma dosyası oluşturabilirsiniz.

Yapılandırma dosyası için birkaç bilgiye ihtiyacınız olacak:

  • Eş üzerinde oluşturduğunuz base64 kodlu özel anahtar.
  • WireGuard Sunucusunda tanımladığınız IPv4 ve IPv6 adres aralıkları.
  • WireGuard Sunucusundan base64 ile kodlanmış genel anahtar.
  • WireGuard Sunucusunun genel IP adresi ve port numarası. Genellikle bu IPv4 adresi olur, ancak sunucunuzun bir IPv6 adresi varsa ve istemci cihazınızın internete IPv6 bağlantısı varsa, IPv4 yerine bunu kullanabilirsiniz.

Tüm bu bilgilere sahip olduğunuzda, WireGuard Peer makinesinde nano veya tercih ettiğiniz editörü kullanarak yeni bir /etc/wireguard/wg0.conf dosyası açın:

sudo nano /etc/wireguard/wg0.conf

Dosyaya aşağıdaki satırları ekleyin ve gerekli bölümlere ilgili verileri yerleştirin:

/etc/wireguard/wg0.conf
[Interface] PrivateKey = base64_encoded_peer_private_key_goes_here Address = 10.8.0.2/24 Address = fd0d:86fa:c3bc::2/64 [Peer] PublicKey = U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE= AllowedIPs = 10.8.0.0/24, fd0d:86fa:c3bc::/64 Endpoint = 203.0.113.1:51820

İlk Address satırının, daha önce seçtiğiniz 10.8.0.0/24 alt ağından bir IPv4 adresi kullandığına dikkat edin. Bu IP adresi, sunucunun IP’sinden farklı olduğu sürece alt ağdaki herhangi bir şey olabilir. Bir peer ekledikçe adresleri 1'er 1'er artırmak genellikle IP’leri tahsis etmenin en kolay yoludur.

Benzer şekilde, ikinci Address satırının, daha önce oluşturduğunuz alt ağdan bir IPv6 adresi kullandığına ve sunucunun adresini bir artırdığına dikkat edin. Yine, farklı bir adres kullanmaya karar verirseniz, aralıktaki herhangi bir IP geçerlidir.

Dosyanın diğer dikkat çekici kısmı son AllowedIPs satırıdır. Bu iki IPv4 ve IPv6 aralığı, eşin yalnızca hedef sistemin IP adresi bu aralıklardan birinde bulunuyorsa trafiği VPN üzerinden göndermesini sağlar. AllowedIPs yönergesini kullanarak, VPN'i eş üzerinde yalnızca diğer eşlere ve VPN üzerindeki hizmetlere bağlanacak şekilde kısıtlayabilir veya tüm trafiği VPN üzerinden yönlendirecek şekilde ayarlayabilir ve WireGuard Sunucusu'nu bir ağ geçidi olarak kullanabilirsiniz.

Sadece IPv4 kullanıyorsanız, o zaman sonundaki fd0d:86fa:c3bc::/64 aralığını (ve , virgülü) çıkartın. Tersine, sadece IPv6 kullanıyorsanız, o zaman sadece fd0d:86fa:c3bc::/64 önekini dahil edin ve 10.8.0.0/24 IPv4 aralığını çıkarın.

Her iki durumda da, tüm eşinizin trafiğini VPN üzerinden göndermek ve WireGuard Sunucusunu tüm trafik için bir ağ geçidi olarak kullanmak isterseniz, tüm IPv4 adres alanını temsil eden 0.0.0.0/0 ve tüm IPv6 adres alanı için ::/0 kullanabilirsiniz.

(İsteğe Bağlı) Bir Eşin Tüm Trafiğini Tünel Üzerinden Yönlendirecek Şekilde Yapılandırılması

Eğer tüm eşin trafiğini 0.0.0.0/0 veya ::/0 rotalarını kullanarak tünel üzerinden yönlendirmeyi seçtiyseniz ve eş bir uzak sistemse, bu bölümdeki adımları tamamlamanız gerekecektir. Eşiniz yerel bir sistemse, bu bölümü atlamak en iyisidir.

Genel bir IP adresi kullanarak SSH veya başka bir protokolle eriştiğiniz uzak eşler için, eşin wg0.conf dosyasına bazı ek kurallar eklemeniz gerekecektir. Bu kurallar, tünel bağlıyken sistemle dışarıdan hala bağlantı kurabilmenizi sağlayacaktır. Aksi takdirde, tünel kurulduğunda, normalde genel ağ arabirimi üzerinden yönlendirilecek tüm trafik wg0 tünel arabirimini doğru şekilde atlamayacak ve uzak sisteme erişilemez hale gelecektir.

Öncelikle, sistemin varsayılan geçit olarak kullandığı IP adresini belirlemeniz gerekecek. Aşağıdaki ip route komutunu çalıştırın:

ip route list table main default

Aşağıdakine benzer bir çıktı alacaksınız:

default via 203.0.113.1 dev eth0 proto static

Daha sonra kullanmak üzere ağ geçidinin vurgulanan IP adresini 203.0.113.1 ve cihazı eth0 not edin. Cihaz adınız farklı olabilir. Öyleyse, aşağıdaki komutlarda eth0 yerine onu kullanın.

Sonraki adım olarak, ip address show komutunu kullanarak cihazı inceleyerek sistemin genel IP adresini bulun:

ip -brief address show eth0

Aşağıdakine benzer bir çıktı alacaksınız:

eth0             UP             203.0.113.5/20 10.20.30.40/16 2604:a880:400:d1::3d3:6001/64 fe80::68d5:beff:feff:974c/64

Bu örnek çıktıda, vurgulanan 203.0.113.5 IP adresi (sonundaki /20 olmadan) WireGuard yapılandırmasına eklemeniz gereken eth0 cihazına atanmış genel adrestir.

Şimdi WireGuard Eşinin /etc/wireguard/wg0.conf dosyasını nano veya tercih ettiğiniz bir düzenleyici ile açın.

sudo nano /etc/wireguard/wg0.conf

[Peer] satırından önce, aşağıdaki 4 satırı ekleyin:

PostUp = ip rule add table 200 from 203.0.113.5
PostUp = ip route add table 200 default via 203.0.113.1
PreDown = ip rule delete table 200 from 203.0.113.5
PreDown = ip route delete table 200 default via 203.0.113.1

[Peer]
. . .

Bu satırlar, özel bir yönlendirme kuralı oluşturacak ve sistemin genel trafiğinin varsayılan ağ geçidini kullanmasını sağlamak için özel bir rota ekleyecektir.

  • PostUp=ip rule add table 200 from 203.0.113.5 - Bu komut, IP sistemin genel 203.0.113.5 adresiyle eşleştiğinde, 200 numaralı tabloda herhangi bir yönlendirme girişini kontrol eden bir kural oluşturur.
  • PostUp=ip route add table 200 default via 203.0.113.1 - Bu komut, 200 tablosu tarafından işlenen her türlü trafiğin yönlendirme için WireGuard arayüzü yerine 203.0.113.1 ağ geçidini kullanmasını sağlar.

PreDown satırları, tünel kapatıldığında özel kuralı ve yönlendirmeyi kaldırır.

Not: Bu kuralları oluştururken tablo numarası 200 rastgeledir. 2 ile 252 arasında bir değer kullanabilir veya /etc/iproute2/rt_tables dosyasına bir etiket ekleyerek özel bir isim kullanabilir ve sayısal değer yerine bu isme başvurabilirsiniz.

Linux'te yönlendirme tablolarının nasıl çalıştığı hakkında daha fazla bilgi için Linux ile IP Katmanı Ağ Yönetimi Kılavuzu'nun Yönlendirme Tabloları bölümünü ziyaret edin.

Tüm eşin trafiğini VPN üzerinden yönlendiriyorsanız, WireGuard Sunucusunun Ağ Yapılandırmasını Ayarlama ve WireGuard Sunucusunun Güvenlik Duvarını Yapılandırma bölümlerinde WireGuard Sunucusunda doğru sysctl ve iptables kurallarını yapılandırdığınızdan emin olun.

(İsteğe Bağlı) WireGuard Eşinin DNS Çözücülerini Yapılandırma

Eğer WireGuard Sunucusunu tüm eşlerinizin trafiği için bir VPN geçidi olarak kullanıyorsanız, DNS çözücülerini belirten bir satırı [Interface] bölümüne eklemeniz gerekir. Bu ayarı eklemezseniz, DNS istekleriniz VPN ile güvence altına alınmayabilir veya İnternet Servis Sağlayıcınız veya diğer üçüncü kişiler tarafından görülebilir.

Eğer WireGuard'ı yalnızca VPN ağı üzerindeki kaynaklara veya eşler arası bir yapılandırmada erişmek için kullanıyorsanız, bu bölümü atlayabilirsiniz.

Eşinizin yapılandırmasına DNS çözücüleri eklemek için, önce WireGuard Sunucunuzun hangi DNS sunucularını kullandığını belirleyin. Aşağıdaki komutu WireGuard Sunucusu üzerinde çalıştırın ve eğer ethernet aygıtınız bu örnekteki eth0 değilse, kendi aygıt adınızı yerine koyun:

resolvectl dns eth0

Aşağıdakine benzer bir çıktı almanız gerekir:

Link 2 (eth0): 67.207.67.2 67.207.67.3 2001:4860:4860::8844 2001:4860:4860::8888

Çıktı olarak verilen IP adresleri, sunucunun kullandığı DNS çözümleyicileridir. İhtiyacınıza göre bunların herhangi birini veya tamamını ya da sadece IPv4 veya IPv6'yı kullanmayı seçebilirsiniz. Kullanacağınız çözümleyicileri not edin.

Sonraki adım olarak seçtiğiniz çözümleyicileri WireGuard Peer’in yapılandırma dosyasına eklemeniz gerekecek. Tekrar WireGuard Peer üzerinde, /etc/wireguard/wg0.conf dosyasını nano veya tercih ettiğiniz bir düzenleyici ile açın:

sudo nano /etc/wireguard/wg0.conf

[Peer] satırından önce, aşağıdakileri ekleyin:

DNS = 67.207.67.2 2001:4860:4860::8844

[Peer]
. . .

Yine, IPv4 ve IPv6 ile ilgili tercihlerinize veya gereksinimlerinize bağlı olarak listeyi ihtiyaçlarınıza göre düzenleyebilirsiniz.

Sonraki adımda VPN'e bağlandığınızda, DNS sorgularını VPN üzerinden gönderip göndermediğinizi DNS leak test gibi bir siteyi kullanarak kontrol edebilirsiniz.

Ayrıca, sunucuda çalıştırdığınız gibi resolvectl dns komutunu kullanarak eşinizin yapılandırılmış çözümleyicileri kullandığını kontrol edebilirsiniz. VPN tüneli için yapılandırdığınız DNS çözümleyicilerini gösteren aşağıdaki gibi bir çıktı almanız gerekir:

Global: 67.207.67.2 67.207.67.3
. . .

Tüm bu DNS çözümleyici ayarları yapıldıktan sonra, artık eşin genel anahtarını sunucuya eklemeye ve ardından eş üzerinde WireGuard tünelini başlatmaya hazırsınız.

Adım 8 — Eşin Genel Anahtarını WireGuard Sunucusuna Ekleme

Eş bilgisayarı sunucuya bağlamadan önce, eşin genel anahtarını WireGuard Sunucusuna eklemek önemlidir. Bu adım, VPN üzerinden bağlanabilmenizi ve trafiği yönlendirebilmenizi sağlar. Bu adım tamamlanmadan, WireGuard sunucusu eşin tünel üzerinden herhangi bir trafik göndermesine veya almasına izin vermez.

Aşağıdaki komutu çalıştırarak WireGuard Eş için base64 ile kodlanmış açık anahtarın bir kopyasına sahip olduğunuzdan emin olun:

sudo cat /etc/wireguard/public.key
PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=

Şimdi WireGuard sunucusuna giriş yapın ve aşağıdaki komutu çalıştırın:

sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed-ips 10.8.0.2,fd0d:86fa:c3bc::2

Komutun allowed-ips bölümünün, virgülle ayrılmış bir IPv4 ve IPv6 adresleri listesi aldığını unutmayın. Eğer bir eşin kendisine atayabileceği IP adresini sınırlamak isterseniz bireysel IP'ler belirtebilirsiniz ya da örnekteki gibi, eşleriniz VPN aralığındaki herhangi bir IP'yi kullanabiliyorsa bir aralık belirtebilirsiniz. Ayrıca, iki eşin aynı allowed-ips ayarına sahip olamayacağını unutmayın.

Mevcut bir eş için allowed-ips bilgisini güncellemek isterseniz, aynı komutu tekrar çalıştırabilir, ancak IP adreslerini değiştirebilirsiniz. Birden fazla IP adresi desteklenmektedir. Örneğin, az önce eklediğiniz WireGuard Eşi için mevcut 10.8.0.2 ve fd0d:86fa:c3bc::2 IP'lerine ek olarak 10.8.0.100 IP adresini eklemek isterseniz, aşağıdaki komutu çalıştırırsınız:

sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= allowed-ips 10.8.0.2,10.8.0.100,fd0d:86fa:c3bc::2

Eş ekleme komutunu çalıştırdıktan sonra, sunucuda tünelin durumunu wg komutunu kullanarak kontrol edin:

sudo wg
interface: wg0
 public key: U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE=
 private key: (hidden)
 listening port: 51820

peer: PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=
 allowed ips: 10.8.0.2/32, fd0d:86fa:c3bc::/128

peer satırının WireGuard Peer’ın genel anahtarını ve kendine IP atamak için kullanmasına izin verilen IP adreslerini veya adres aralıklarını nasıl gösterdiğine dikkat edin.

Artık sunucuda eşin bağlantı parametrelerini tanımladığınıza göre, bir sonraki adım eş üzerinde tüneli başlatmaktır.

Adım 9 — WireGuard Eşini Tünele Bağlamak

Sunucunuz ve eşiniz, IPv4, IPv6, paket iletimi ve DNS çözümlemesini destekleyecek şekilde yapılandırıldığından, şimdi eşinizi VPN tüneline bağlama zamanı geldi.

VPN'in yalnızca belirli kullanım senaryoları için açık olmasını isteyebileceğinizden, bağlantıyı manuel olarak kurmak için wg-quick komutunu kullanacağız. Tüneli sunucuda yaptığınız gibi otomatik olarak başlatmak isterseniz, WireGuard Sunucusunu Başlatma bölümündeki adımları wq-quick komutunu kullanmak yerine izleyin.

Tüm trafiği VPN üzerinden yönlendiriyor ve DNS iletimini ayarlamışsanız, tünele başlamadan önce WireGuard Eşinde resolvconf aracını yüklemeniz gerekecek. Bunu ayarlamak için aşağıdaki komutu çalıştırın:

sudo apt install resolvconf

Tüneli başlatmak için WireGuard Eşinde aşağıdakini çalıştırın:

sudo wg-quick up wg0

Aşağıdakine benzer bir çıktı alacaksınız:

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.8.0.2/24 dev wg0
[#] ip -6 address add fd0d:86fa:c3bc::2/64 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] resolvconf -a tun.wg0 -m 0 -x

Eşe atadığınız vurgulu IPv4 ve IPv6 adreslerine dikkat edin.

Eğer eşte AllowedIPs değerini 0.0.0.0/0 ve ::/0 olarak ayarlarsanız (veya VPN için seçtiğiniz aralıklar dışında başka aralıklar kullanırsanız), çıktınız aşağıdakine benzer olacaktır:

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.8.0.2/24 dev wg0
[#] ip -6 address add fd0d:86fa:c3bc::2/64 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] resolvconf -a tun.wg0 -m 0 -x
[#] wg set wg0 fwmark 51820
[#] ip -6 route add ::/0 dev wg0 table 51820
[#] ip -6 rule add not fwmark 51820 table 51820
[#] ip -6 rule add table main suppress_prefixlength 0
[#] ip6tables-restore -n
[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] iptables-restore -n

Bu örnekte, komutun eklediği ve eş yapılandırmasındaki AllowedIPs ile eşleşen vurgulanmış rotalara dikkat edin.

Tünelin durumunu eş cihaz üzerinde wg komutunu kullanarak kontrol edebilirsiniz:

sudo wg
interface: wg0
 public key: PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg=
 private key: (hidden)
 listening port: 49338
 fwmark: 0xca6c

peer: U9uE2kb/nrrzsEU58GD3pKFU3TLYDMCbetIsnV8eeFE=
 endpoint: 203.0.113.1:51820
 allowed ips: 10.8.0.0/24, fd0d:86fa:c3bc::/64
 latest handshake: 1 second ago
 transfer: 6.50 KiB received, 15.41 KiB sent

Durumu tekrar sunucuda da kontrol edebilir ve benzer bir çıktı alabilirsiniz.

Eşinizin VPN kullanıp kullanmadığını ip route ve ip -6 route komutlarını kullanarak doğrulayın. VPN’i tüm internet trafiğiniz için bir ağ geçidi olarak kullanıyorsanız, CloudFlare’in 1.1.1.1 ve 2606:4700:4700::1111 DNS çözücülerine yönlendirilen trafik için hangi arayüzün kullanılacağını kontrol edin.

Eğer WireGuard'ı sadece VPN üzerindeki kaynaklara erişmek için kullanıyorsanız, bu komutlara geçerli bir IPv4 veya IPv6 adresi, örneğin ağ geçidi adresi gibi bir adres ekleyin. Örneğin 10.8.0.1 veya fd0d:86fa:c3bc::1.

ip route get 1.1.1.1
1.1.1.1 dev wg0 table 51820 src 10.8.0.2 uid 1000
   cache

wg0 cihazının kullanıldığını ve eşe atadığınız IPv4 adresi 10.8.0.2'yi fark edin. Benzer şekilde, IPv6 kullanıyorsanız, aşağıdakini çalıştırın:

ip -6 route get 2606:4700:4700::1111
2606:4700:4700::1111 from :: dev wg0 table 51820 src fd0d:86fa:c3bc::2 metric 1024 pref medium

Yine wg0 arayüzüne ve eşinize atadığınız fd0d:86fa:c3bc::2 IPv6 adresine dikkat edin.

Eğer eşinizin bilgisayarında bir tarayıcı yüklüyse, trafiğini VPN üzerinden yönlendirip yönlendirmediğini doğrulamak için ipleak.net ve ipv6-test.com sitelerini de ziyaret edebilirsiniz.

Eş cihazda VPN bağlantısını kesmeye hazır olduğunuzda, wg-quick komutunu kullanın:

sudo wg-quick down wg0

VPN tünelinin kapandığını gösteren aşağıdaki gibi bir çıktı alacaksınız:

[#] ip link delete dev wg0
[#] resolvconf -d tun.wg0 -f

Eğer eşte AllowedIPs değerini 0.0.0.0/0 ve ::/0 olarak ayarlarsanız (veya VPN için seçtiğiniz aralıklar dışında başka aralıklar kullanırsanız), çıktınız aşağıdakine benzer olacaktır:

[#] ip rule delete table 200 from 203.0.113.5
[#] ip route delete table 200 default via 203.0.113.1
[#] ip -4 rule delete table 51820
[#] ip -4 rule delete table main suppress_prefixlength 0
[#] ip -6 rule delete table 51820
[#] ip -6 rule delete table main suppress_prefixlength 0
[#] ip link delete dev wg0
[#] resolvconf -d tun.wg0 -f
[#] iptables-restore -n
[#] ip6tables-restore -n

VPN'e tekrar bağlanmak için, peerde wg-quick up wg0 komutunu tekrar çalıştırın. Bir peere ait yapılandırmayı WireGuard Sunucusu'ndan tamamen kaldırmak isterseniz, aşağıdaki komutu çalıştırabilirsiniz; kaldırmak istediğiniz peerin doğru genel anahtarını yerine koymayı unutmayın:

sudo wg set wg0 peer PeURxj4Q75RaVhBKkRTpNsBPiPSGb5oQijgJsTa29hg= remove

Genellikle bir eş yapılandırmasını yalnızca eş artık mevcut değilse veya şifreleme anahtarları ele geçirilmiş veya değiştirilmişse kaldırmanız gerekir. Aksi takdirde, eşin her seferinde anahtarını ve allowed-ips değerini eklemenizi gerektirmeden VPN'e yeniden bağlanabilmesi için yapılandırmayı olduğu gibi bırakmak daha iyidir.

WireGuard Anahtarlarını Yönetmek ve Döndürmek

WireGuard, kimlik doğrulama ve şifreleme için sabit genel ve özel anahtar çiftlerine dayanır. Bu tasarım yapılandırma karmaşıklığını önemli ölçüde azaltır, ancak anahtar yönetimi sorumluluğunu tamamen yöneticinin üzerine bırakır. Uzun süreli VPN dağıtımları, paylaşımlı altyapılar veya birden çok eşin bulunduğu ortamlar için, güvenliği ve operasyonel istikrarı korumak adına dikkatli anahtar yönetimi şarttır.

WireGuard Anahtar Türlerini Anlamak

Her WireGuard Eş, iki tür kriptografik anahtar kullanır.

  • Uzun vadeli özel anahtarlar: Bir özel anahtar, bir eş cihazı benzersiz şekilde tanımlar ve her zaman gizli tutulmalıdır. Bu anahtar, şifreli el sıkışmaları sırasında eşi doğrulamak ve kısa süreli oturum anahtarları türetmek için kullanılır. Eğer bir özel anahtar ifşa olursa, bu anahtara sahip olan herhangi bir sistem eş cihazın yerine geçebilir.

  • Uzun vadeli açık anahtarlar: Bir açık anahtar, bir özel anahtardan türetilir ve diğer kullanıcılarla paylaşılır. Merkezi hub üzerinde, açık anahtarlar hangi kullanıcıların iletişim kurmasına izin verildiğini ve hangi IP adreslerini kullanabileceklerini belirler.

Bu uzun süreli anahtarlara ek olarak, WireGuard şifreli el sıkışmaları sırasında otomatik olarak geçici oturum anahtarları türetir. Bu oturum anahtarları periyodik olarak değiştirilir ve yönetici müdahalesi olmadan Mükemmel İleri Gizlilik sağlar.

Önerilen Anahtar Yönetimi Uygulamaları

Aşağıdaki uygulamalar riski azaltmaya ve devam eden operasyonları basitleştirmeye yardımcı olur:

  • Her eşe benzersiz bir anahtar çifti atayın: Her cihazın kendi özel ve genel anahtar çiftine sahip olması gerekir. Benzersiz anahtarlar kullanmak, bir cihazın erişimini diğerlerini etkilemeden iptal etmeyi sağlar. Anahtarların birden çok sistemde tekrar kullanılması, bir ihlalin etkisini artırır ve denetimi zorlaştırır.

  • Özel anahtar materyaline erişimi sınırlayın: Özel anahtar dosyaları sadece root kullanıcısı tarafından okunabilir olmalıdır. Linux sistemlerinde, bu genellikle chmod 600 /etc/wireguard/private.key gibi bir komut kullanarak izinleri 600 olarak ayarlamak anlamına gelir. Dosya erişimini sınırlamak, yedekler, günlükler veya ayrıcalığı olmayan kullanıcılar aracılığıyla kazara ifşayı önlemeye yardımcı olur.

  • Açık bir eş envanteri tutun: Her eşin açık anahtarını, cihaz adını, atanmış IPv4 ve IPv6 adreslerini ve amaçlanan kullanımını eşleyen bir kayıt tutun. Eş sayısı arttıkça bu dokümantasyon giderek daha önemli hale gelir ve sorun giderme, denetimler ve rutin bakım işlemlerini kolaylaştırır.

  • Kullanılmayan veya etkin olmayan eşleri derhal kaldırın: Bir cihaz hizmet dışı bırakıldığında veya VPN erişimine artık ihtiyaç duymadığında, genel anahtarını merkezi eş yapılandırmasından kaldırın. Kullanılmayan anahtarları yerinde bırakmak, saldırı yüzeyini artırır ve gelecekte yapılacak incelemeleri zorlaştırır.

Anahtar Değişimini Gerektiren Durumlar

Anahtar rotasyonu, birkaç yaygın senaryoda gerçekleştirilmelidir:

  • Şüpheli veya doğrulanmış anahtar sızıntısı: Bir özel anahtarın kopyalanmış, sızdırılmış veya yetkisiz bir kişi tarafından erişilmiş olma olasılığı varsa, taklit edilmeyi önlemek için derhal değiştirilmelidir.

  • Kaybolan veya çalınan cihazlar: Bir cihaz kaybolduğunda veya çalındığında, anahtarlarını değiştirmek, cihazın orijinal yapılandırma kurtarılsa bile VPN’e artık bağlanamamasını sağlar.

  • Kurumsal güvenlik gereksinimleri: Bazı ortamlarda, herhangi bir ihlal şüphesi olmasa bile, iç politikaları veya uyumluluk standartlarını karşılamak için periyodik anahtar değiştirme gerekebilir.

  • Cihaz sahipliği veya rolündeki değişiklikler: Bir eş başka bir kullanıcıya veya amaca yeniden atanırsa, anahtarlarını döndürmek istemeden devam eden erişimi önler.

Bir Eşin Anahtarlarını Güvenli Bir Şekilde Döndürmek

WireGuard, dahili IP adreslerini belirli genel anahtarlara kripto anahtar yönlendirme tablosu kullanarak eşler. Bu tasarım nedeniyle, aynı dahili IP adresi iki genel anahtara aynı anda güvenli bir şekilde atanamaz. Bu nedenle, anahtar döndürme genellikle yapılandırma güncellenirken kısa bir bağlantı kesintisi gerektirir.

Bir eşin anahtarlarını döndürmek için şu süreci izleyin:

  1. Peer üzerinde yeni bir özel ve genel anahtar çifti oluşturun.
  2. Merkezi eşin yapılandırmasını güncelleyerek eski genel anahtarı yenisiyle değiştirin ve aynı AllowedIPs değerlerini koruyun. Arayüzü henüz yeniden başlatmayın.
  3. Eşin yapılandırma dosyasını yeni özel anahtarı kullanacak şekilde güncelleyin.
  4. Güncellenmiş yapılandırmayı merkezi eş üzerinde uygulayın, örneğin WireGuard servisini yeniden yükleyerek veya wg syncconf kullanarak. Bu noktada, eş geçici olarak bağlantısını kaybedecektir.
  5. Eş cihazdaki WireGuard arayüzünü yeniden başlatın, böylece yeni özel anahtarı kullanmaya başlasın.
  6. Yeni bir el sıkışmanın tamamlandığını ve trafiğin doğru şekilde aktığını doğrulayın.
  7. Eski anahtara yapılan ve hâlâ mevcut olan tüm referansları kaldırın.

Bu değişim-temelli yaklaşım, WireGuard'ın kriptografik yönlendirmeyi nasıl uyguladığını ve belirsiz veya çelişkili yapılandırmalardan nasıl kaçındığını yansıtır.

Merkezi Eş Üzerinde Anahtarları Döndürmek

Merkezi eşin özel anahtarını değiştirmek, tüm bağlanan eşleri etkiler. Bağlantının yeniden sağlanabilmesi için her eşin yapılandırması yeni genel anahtar ile güncellenmelidir.

Bu değişiklik tüm eşler üzerinde aynı anda etkili olduğundan, merkezi eş anahtarının döndürülmesi dikkatlice planlanmalı ve bir bakım penceresinde gerçekleştirilmelidir. Pratikte, merkezi anahtarlar eş anahtarlarına göre daha az sıklıkla döndürülür.

Önceden Paylaşılan Anahtarları Yönetmek (İsteğe Bağlı)

Genel ve özel anahtar çiftlerine ek olarak, WireGuard her eş için isteğe bağlı bir Önceden Paylaşılmış Anahtar (PSK) destekler. Bir PSK, WireGuard’ın mevcut şifrelemesinin üzerine ek bir simetrik şifreleme katmanı ekler.

Önceden Paylaşılan Anahtarlar, gelecekteki kriptografik gelişmelere karşı bir savunma olarak yüksek güvenlikli ortamlarda yaygın şekilde kullanılmaktadır. Şifrelenmiş trafik bugün kaydedilse ve gelecekte temel açık anahtar algoritması ele geçirilse bile, bir PSK geçmiş oturumların şifrelerinin çözülmesini yine de engeller.

PSK'ler kullanılıyorsa, bunlar hassas sırlar olarak ele alınmalı ve düzenli aralıklarla değiştirilmelidir. Bir PSK'nin değiştirilmesi, eş anahtarların değiştirilmesiyle aynı operasyonel desen izlenerek yapılır ve bağlantının her iki tarafında da koordineli olmalıdır.

Dönüş Sıklığını Seçmek

WireGuard sabit bir anahtar değiştirme takvimi uygulamaz. Uygun anahtar değiştirme aralıkları ortama bağlıdır.

  • Kişisel veya kısa süreli görevlendirmeler, planlı rotasyon gerektirmeyebilir.
  • Paylaşılan veya üretim ortamları genellikle anahtarları her 6 ila 12 ayda bir değiştirir.
  • Yüksek güvenlikli ortamlar, politikaya bağlı olarak daha sık rotasyon gerektirebilir.

Düzenli değişim, uzun ömürlü kimlik bilgileriyle ilişkili riski azaltır ve WireGuard uygulamalarını yaygın güvenlik uygulamalarıyla uyumlu hale getirir.

WireGuard ve OpenVPN: Pratik Farklar

WireGuard ve OpenVPN, her ikisi de yaygın olarak kullanılan VPN teknolojileridir, ancak şifreleme, yapılandırma ve ağ davranışı konusunda çok farklı yaklaşımlar benimserler. Bu farkları anlamak, geliştiricilerin operasyonel kısıtlamalarına en uygun çözümü seçmelerine yardımcı olur.

Yapılandırma ve İşletim Modeli

WireGuard, genel ve özel anahtar çiftlerine dayalı statik bir yapılandırma modeli kullanır. Tüm eşler açıkça tanımlanmıştır ve yönlendirme davranışı sabit yapılandırma değerleri ile kontrol edilir. Kontrol kanalı, sertifika yetkilisi veya parametrelerin dinamik müzakeresi yoktur.

OpenVPN, TLS ve X.509 sertifikalarına dayanır. Müşterileri doğrulamak, şifreleme ayarlarını müzakere etmek ve oturumları yönetmek için bir kontrol kanalı kullanır. Bu model esneklik sağlar ancak yapılandırma ve işletme karmaşıklığını artırır.

Uygulamada, WireGuard yapılandırmaları daha kısa, denetlemesi daha kolay ve ince yanlış yapılandırmalara daha az açık olur. OpenVPN yapılandırmaları daha fazla kontrol sağlar, ancak güvenli ve tutarlı kalabilmesi için dikkatli yönetim gerektirir.

Kriptografi ve Güvenlik Tasarımı

WireGuard sabit bir set modern kriptografik yöntem kullanır. Bu seçimler yapılandırılamaz. Bu tasarım, kriptografik düşürme saldırılarını ortadan kaldırır ve şifreleme paketlerini seçme ihtiyacını ortadan kaldırır.

OpenVPN, geniş bir şifreleme algoritması ve kimlik doğrulama yöntemi yelpazesini destekler. Bu esneklik, eski sistemlerle uyumluluğa olanak sağlasa da, zayıf veya tutarsız yapılandırma riskini de artırır.

Her iki çözüm de Mükemmel İleri Güvenliği destekler. WireGuard, anahtar değişimini el sıkışma mekanizması üzerinden otomatik olarak gerçekleştirirken, OpenVPN TLS oturum davranışına dayanır.

Performans Özellikleri

WireGuard, yüksek performans ve düşük gecikme için tasarlanmıştır. Linux çekirdeğinde çalışır ve küçük bir kod tabanına sahiptir, bu da yükü ve bağlam değiştirmeyi azaltır. Çoğu ortamda, WireGuard minimal ayarlama ile daha yüksek veri aktarım hızı ve daha tutarlı gecikme sağlar.

Tarihsel olarak, OpenVPN kullanıcı alanında çalışır ve bağlam değişimleri ile protokol işleme nedeniyle ek yük oluşturur. Modern OpenVPN sürümleri, performansı önemli ölçüde artıran Kernel Data Channel Offload (DCO) özelliğini destekler, ancak bu özellik her zaman varsayılan kurulumlarda etkin değildir veya mevcut olmayabilir.

DCO ile bile, WireGuard genellikle daha az yapılandırma değişkeniyle güçlü bir performans elde eder.

Ağ Gezintisi ve Güvenlik Duvarı Aşımı

WireGuard ağ değişikliklerini sorunsuz bir şekilde yönetir. Bir eşin IP adresi değişirse, örneğin WiFi ve mobil ağlar arasında geçiş yaparken, tünel yeniden görüşme yapmadan çalışmaya devam eder.

Ancak, WireGuard yalnızca UDP üzerinden çalışır. UDP verimli olmasına rağmen, bazen kısıtlayıcı halka açık WiFi ağlarında, kurumsal güvenlik duvarlarında veya kurumsal ağlarda engellenir. UDP trafiği engellendiğinde WireGuard'ın yerel bir yedekleme yöntemi yoktur.

OpenVPN hem UDP hem de TCP'yi destekler. UDP kullanılamadığında, OpenVPN TCP port 443 üzerinden çalışacak şekilde yapılandırılabilir ve VPN trafiği standart HTTPS trafiğine benzer hale gelir. Bu özellik, sıkı güvenlik duvarı kuralları veya sansür uygulanan ortamlarda OpenVPN'i daha güvenilir kılar.

Kısıtlayıcı ağların arkasında çalışan kullanıcılar için, TCP desteği genellikle OpenVPN'i WireGuard'a tercih etmede belirleyici faktördür.

Özellik Kapsamı ve Genişletilebilirlik

OpenVPN, WireGuard'ın bilinçli olarak sağlamadığı özellikleri içerir. Bunlar arasında kullanıcı tabanlı kimlik doğrulama, dinamik adres ataması ve harici kimlik sistemleri ile entegrasyon bulunur.

WireGuard tamamen güvenli tünellemeye odaklanır. Kimlik doğrulama iş akışları, erişim kontrolü ve dinamik yapılandırma protokolün dışında ele alınmalıdır.

Bu, OpenVPN'i karmaşık kimlik doğrulama veya merkezi kullanıcı yönetimi gerektiren ortamlar için daha uygun hale getirirken, WireGuard altyapı düzeyinde VPN'ler ve eşler arası erişim için daha uygundur.

Özet Karşılaştırması

GörünümWireGuardOpenVPN
Taşıma protokolüYalnızca UDPUDP ve TCP
Yapılandırma stiliStatik, anahtar tabanlıDinamik, sertifika tabanlı
Kod tabanı büyüklüğüKüçükBüyük
Şifreleme seçenekleriDüzeltildiYapılandırılabilir
PerformansYüksekOrta ila yüksek
Dolaşım desteğiDahiliSınırlı
Güvenlik duvarı direnciKısıtlayıcı ağlarda sınırlıTCP 443 üzerinden güçlü
KarmaşıklıkDüşükYüksek

WireGuard ve OpenVPN Arasından Seçim Yapmak

WireGuard, altyapı VPN'leri, site-to-site tüneller, mobil istemciler ve sadelik, performans ve öngörülebilirliğin öncelikli olduğu ortamlar için oldukça uygundur.

OpenVPN, TCP tabanlı tünelleme, gelişmiş kimlik doğrulama veya kısıtlayıcı güvenlik duvarlarının arkasında güvenilir çalışma gerektiren kurumsal ortamlar için güçlü bir seçenek olmaya devam ediyor.

Birçok modern uygulamada, WireGuard OpenVPN’in yerine geçer; bu, daha fazla özellik sunduğu için değil, daha az özellik sunup daha net bir davranış sergilediği için olur.

Performans Ayarı ve Optimizasyon

WireGuard varsayılan ayarlarıyla iyi performans gösterir, ancak gerçek dünya ağ koşulları güvenilirliği ve veri iletim hızını etkileyebilir. Paket boyutu, yönlendirme kapsamı, NAT davranışı ve DNS çözümlemesi gibi faktörler, tünelin sürekli veya kesintili kullanım sırasında nasıl davrandığını etkiler.

En yaygın ayar alanlarına ve ayarlamaların ne zaman uygun olduğuna bakalım.

MTU Seçimi ve Paket Parçalanması

Maksimum İletim Birimi (MTU), parçalanma olmadan iletilebilecek en büyük paket boyutunu tanımlar. WireGuard, paketleri şifreler ve kapsüller, bu da fiziksel bir ağ arabirimine kıyasla etkili MTU’yu düşürür.

Varsayılan olarak, WireGuard bir 1420 MTU kullanır. Bu değer, IPv6 başlıkları, UDP ve WireGuard kapsüllemesinin birleşik ek yükünü göz önünde bulundurur ve çoğu Ethernet tabanlı ağ için iyi çalışır. Bazı ortamlar daha küçük bir MTU gerektirir. Bu durum, mobil ağlarda, PPPoE bağlantılarında ve ek kapsülleme katmanlarına sahip bulut platformlarında yaygındır. MTU çok büyük olduğunda paketler düşürülebilir veya parçalanabilir. Bu genellikle küçük istekler için çalışan, ancak daha büyük transferlerde takılan veya başarısız olan bağlantılarla sonuçlanır. Bu belirtiler görülürse, MTU'yu kademeli olarak düşürmek önerilir. 1360 gibi değerler veya daha kısıtlı ortamlarda, IPv6 minimum MTU'su olan 1280 gibi değerler, genellikle verimlilik üzerinde minimum etkiyle bu sorunları çözer.

MTU, yeniden başlatmalar arasında tutarlı bir davranışı sağlamak için yapılandırma dosyasının [Interface] bölümünde açıkça ayarlanmalıdır.

AllowedIPs Kapsamı ve Etkisi

AllowedIPs yönergesi hem yönlendirme davranışını hem de performansı etkiler. Geniş adres aralıkları, tünelden daha fazla trafiğin geçmesine neden olur; bu da şifreleme yükünü ve sunucu üzerindeki yükü artırır. Dar AllowedIPs değerleri kullanmak, tüneli yalnızca korunması gereken trafikle sınırlar. Bu, CPU kullanımını azaltır ve gereksiz kapsüllenmeden kaçınır.

0.0.0.0/0 veya ::/0 yapılandırıldığında, tüm trafik VPN üzerinden yönlendirilir. Bu yapılandırma, gizlilik, merkezi çıkış kontrolü veya güvenilmez ağlar söz konusu olduğunda uygundur, ancak genel internet trafiği için gecikmeyi ve kaynak kullanımını artırır.

Performans ayarı genellikle mümkün olduğunda AllowedIPs değerlerini daraltmayı ve tam tünel yönlendirmesinden yalnızca gerekli olduğunda kaçınmayı içerir.

NAT Geçişi ve Bağlantı Kararlılığı (PersistentKeepalive)

WireGuard, veri iletilmediğinde kasıtlı olarak sessizdir. Varsayılan olarak periyodik keepalive paketleri göndermez. Ev yönlendiricileri, mobil ağlar veya birçok bulut ağı gibi NAT kullanan ortamlarda, bu sessizlik NAT cihazının bağlantı eşlemesini kapatmasına yol açabilir. Bu olduğunda, sunucudan gelen gelen trafik, eş tarafından tekrar trafik gönderilene kadar engellenir. Bu davranış genellikle gecikme, bağlantıların gecikmesi veya aralıklı hatalar olarak algılanır.

Bunu önlemek için, WireGuard PersistentKeepalive ayarını sağlar. Bu seçenek, eş yapılandırmasının [Peer] bölümüne eklenebilir. Bu, eşin NAT eşlemesini açık tutmak için belirli aralıklarla küçük bir keepalive paketi göndermesini sağlar. 25 saniye değeri yaygın olarak kullanılır ve çoğu NAT cihazıyla iyi çalışır. Eğer bir bağlantı başlangıçta çalışıyor ama boşta kaldıktan sonra başarısız oluyorsa, PersistentKeepalive=25 özelliğinin etkinleştirilmesi birincil ve önerilen çözümdür.

DNS Çözümlemesi ve Tünel Davranışı

DNS yapılandırması, algılanan VPN performansı üzerinde önemli bir etkiye sahiptir. DNS çözümleyicileri tünel üzerinden doğru şekilde yönlendirilmediğinde, tünel düzgün çalışıyor olsa bile uygulamalar yavaş veya güvenilmez görünebilir.

Gateway yapılandırmalarında, DNS sorgularının tutarlı yönlendirmeyi sağlamak ve sızıntıları önlemek için VPN üzerinden gönderilmesi gerekir. Bu, eş yapılandırmasında DNS çözümleyicilerinin açıkça tanımlanmasını gerektirir. DNS yanlış yapılandırıldığında, yaygın belirtiler arasında yavaş sayfa yüklemeleri, tutarsız bağlantı veya aktif bir tünel olmasına rağmen trafiğin VPN dışına yönlendirilmesi yer alır.

Tünel üzerinden erişilebilen ve hızlı yanıt veren çözümleyicileri seçmek hem güvenilirliği hem de kullanıcı deneyimini artırır.

IPv4 ve IPv6 Performans Farkları

Çift yığınlı ortamlarda, IPv4 ve IPv6 farklı davranabilir. IPv6 yollarının farklı MTU kısıtlamaları, yönlendirme politikaları veya güvenlik duvarı davranışları olabilir.

Her iki protokolü bağımsız olarak test etmek, protokole özgü sorunları belirlemeye yardımcı olur. ping, tracepath ve ip route get gibi araçlar, her adres ailesi için yönlendirme ve MTU davranışını doğrulamak açısından faydalıdır.

IPv6 performansı tutarsız görünüyorsa, ICMPv6 trafiğinin izin verildiğini doğrulayın. Path MTU Keşfi için ICMPv6 gereklidir ve bu trafiğin engellenmesi, daha büyük paketlerde bağlantıların durmasına neden olabilir.

CPU ve Şifreleme Yükü

WireGuard, çoğu sistemde verimli olan modern kriptografi kullanır. Ancak, şifreleme yine de CPU kaynaklarını tüketir.

Küçük sanal makinelerde, gömülü yönlendiricilerde veya donanım hızlandırması olmayan sistemlerde, tam tünel yapılandırmaları sürekli yük altında CPU'yu doyurabilir.

Yüksek trafik sırasında CPU kullanımını izlemek, performans sorunlarının ağ yapılandırmasından ziyade şifreleme ek yükünden kaynaklanıp kaynaklanmadığını belirlemeye yardımcı olur. Bu tür durumlarda, tünellenmiş trafiği azaltmak veya sunucu örneğini yükseltmek gerekebilir.

Performans Değişikliklerini Doğrulama

Performans ayarlamaları kademeli olarak yapılmalıdır. Her değişiklikten sonra, ek ayarlamalar uygulanmadan önce bağlantı ve kararlılık doğrulanmalıdır.

Yararlı doğrulama adımları, wg ile el sıkışma kararlılığını kontrol etmeyi, değişikliklerden önce ve sonra gecikme ve veri akışını ölçmeyi ve yönlendirme davranışını ip route ve ip -6 route ile doğrulamayı içerir. Bu yaklaşım riski en aza indirir ve sorun gidermeyi basitleştirir.

SSS

1. WireGuard nedir ve Ubuntu'da nasıl çalışır?

WireGuard, OpenVPN veya IPsec gibi eski seçeneklerden çok daha hızlı ve kurulumu kolay olacak şekilde tasarlanmış modern bir VPN teknolojisidir. Bunu, cihazlarınızı doğrudan bağlayan güvenli bir tünel olarak düşünebilirsiniz. Ağır ve karmaşık olan eski VPNlerin aksine, WireGuard son derece hafiftir. Ubuntu üzerinde, Linux çekirdeğinin içinde, yani işletim sisteminin çekirdek “motoru” olarak çalışır. Sistem üzerinde ayrı bir uygulama olarak değil de derinlemesine çalıştığı için, çok az pil tüketir ve veriyi inanılmaz derecede hızlı işler.

Bir bağlantı kurmak için WireGuard, SSH'ye çok benzer bir yöntem kullanır. Her cihaz için bir çift “anahtar” oluşturur: bir özel anahtar (cihazda gizli kalır) ve bir genel anahtar (bağlanmak istediğiniz diğer cihazlarla paylaşırsınız). Bağlantı yalnızca anahtarlar mükemmel şekilde eşleşirse gerçekleşir, bu da el sıkışmayı hızlı ve güvenli hale getirir.

2. WireGuard, OpenVPN'den daha mı güvenli?

Çoğu kullanıcı için, WireGuard sadeliği ve modern tasarımı sayesinde daha güvenli olarak kabul edilmektedir. Bunun temel nedeni kod boyutudur. WireGuard sadece yaklaşık 4.000 satır kod ile oluşturulmuşken, OpenVPN’in kodu 100.000 satırı geçmektedir. Bu büyük fark, güvenlik uzmanlarının WireGuard kodunu okuyup kötü niyetli kişiler bulmadan önce güvenlik açıklarını (hataları) bulmasını çok daha kolay hale getirir.

WireGuard ayrıca sizi bugünün mevcut en yeni ve en güçlü şifreleme standartlarını kullanmaya zorlar. Eski VPN'ler kripto esnekliği sunar, bu da eski cihazları desteklemek için daha zayıf şifreleme yöntemlerine düşürülebilecekleri anlamına gelir. WireGuard bu seçeneği ortadan kaldırır ve saldırganların VPN'inizi daha zayıf bir kilit kullanmaya kandırmasını engeller. Ek olarak, WireGuard varsayılan olarak gizlidir; yetkisiz bir cihaz sunucunuza bir paket gönderdiğinde, WireGuard buna yanıt vermez. Bu da sunucunuzu açık portları tarayan bilgisayar korsanlarına görünmez kılar.

3. WireGuard'ı Docker olmadan Ubuntu'da kurabilir miyim?

Evet, bunu Docker konteynerleri kullanmadan doğrudan sistem üzerinde kolayca kurabilirsiniz. Aslında, doğrudan çalıştırmak genellikle Ubuntu üzerinde tercih edilen yöntemdir çünkü yazılım standart Ubuntu yazılım depolarında bulunmaktadır. Genel olarak, gerekli yazılımı Ubuntu’nun resmi kaynağından doğrudan çekecek aşağıdaki standart kurulum komutlarını çalıştırmanız yeterlidir.

sudo apt update
sudo apt install wireguard

4. Birden fazla WireGuard istemcisi (eş) nasıl eklerim?

WireGuard, her bağlanan cihazın bir “eş” olarak kabul edildiği eşler arası bir kavram kullanır. Bir dizüstü bilgisayar, bir akıllı telefon ve bir tablet gibi birden fazla cihaz eklemek için, sunucunun yapılandırma dosyasını (genellikle /etc/wireguard/wg0.conf konumunda bulunur) düzenlemeniz yeterlidir.

Her yeni cihaz için, [Peer] etiketiyle bir metin bloğu eklemelisiniz. Bu bloğun içine, o belirli cihazın Genel Anahtarını yapıştırmalı ve ona benzersiz bir dahili IP adresi atamalısınız (örneğin, ilk cihaz için 10.0.0.2, ikinci cihaz için 10.0.0.3 gibi). Bu dahili IP adreslerinin çakışmaması çok önemlidir.

İşte basit bir örnek yapılandırma bloğu:

[Interface]
# Server settings...
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <Server_Private_Key>

[Peer]
# Client 1 (Laptop)
PublicKey = <Laptop_Public_Key>
AllowedIPs = 10.0.0.2/32

[Peer]
# Client 2 (Phone)
PublicKey = <Phone_Public_Key>
AllowedIPs = 10.0.0.3/32

5. WireGuard hangi portları kullanır?

WireGuard varsayılan olarak UDP portu 51820 kullanır. Veri tünelleme için TCP'ye göre daha hızlı olduğu için tamamen UDP protokolüne dayanır. TCP, gönderilen her veri paketi için bir onay gerektirir, bu da VPN bağlantısını önemli ölçüde yavaşlatabilir. UDP, veriyi makbuz beklemeden sadece gönderir, bu da WireGuard'ın yüksek hızlı yapısı için mükemmeldir. Ubuntu güvenlik duvarınızı (UFW) kurarken, bu UDP portundaki trafiğe özellikle izin vermeniz gerekir, aksi takdirde bağlantı talepleri VPN yazılımına ulaşmadan engellenecektir.

6. WireGuard bağlantı sorunlarını nasıl giderebilirim?

WireGuard sorun giderme genellikle basittir çünkü daha az hareketli parça vardır. Bağlanamıyorsanız, bu özel kontrol sırasını izlemeniz gerekir:

İlk olarak, sunucunuzda sudo wg show komutunu çalıştırarak el sıkışma durumunu kontrol edin. Bağlantı sağlamsa, bir zaman ifadesiyle (ör. “1 dakika önce”) takip edilen latest handshake satırını göreceksiniz. Bu satır eksikse, cihazlar birbirleriyle hiç iletişim kurmuyor demektir. Bu durum neredeyse her zaman bir güvenlik duvarının UDP portunu engellemesinden veya Genel/Özel anahtar uyumsuzluğundan kaynaklanır.

İkincisi, eğer bağlantı çalışıyor ama internete erişemiyorsanız, sorun muhtemelen IP yönlendirmesindedir. Ubuntu sunucunuzun VPN’den internete trafik yönlendirmesine izin verildiğinden emin olmanız gerekir. Bunu /etc/sysctl.conf dosyasına bakarak ve net.ipv4.ip_forward=1 satırının aktif (yorum satırı haline getirilmemiş) olduğundan emin olarak kontrol edebilirsiniz.

7. WireGuard, Ubuntu'da IPv6 desteği sağlıyor mu?

Evet, WireGuard IPv6 için mükemmel desteğe sahiptir. Çok esnektir ve farklı türdeki trafiği kapsülleyebilir (sarmalayabilir). Örneğin, yalnızca IPv4 olan bir web sitesine IPv6 bağlantısı üzerinden erişebilir veya tam tersini yapabilirsiniz. Bunu etkinleştirmek için, yapılandırma dosyanıza standart IPv4 adreslerinizin yanına virgülle ayrılmış IPv6 adreslerini eklemeniz yeterlidir. Bunları hem Address alanına (sunucunun kendi IP’si için) hem de AllowedIPs alanına (istemci IP’leri için) eklemeniz gerekir.

8. WireGuard'ın bilgisayar açıldığında başlamasını nasıl etkinleştiririm?

Ubuntu sunucunuzu her yeniden başlattığınızda VPN'inizin otomatik olarak açılmasını sağlamak için, Linux için sistem yöneticisi olan systemd'yi kullanmanız gerekir. Sistemden, belirli yapılandırma dosyanızı (ör. wg0) aramasını ve başlangıç sırasında yüklemesini istemek için enable komutunu kullanırsınız. Bu, sunucunuz bir güncelleme nedeniyle yeniden başlasa bile VPN bağlantınızın manuel olarak başlatmanıza gerek kalmadan geri çevrimiçi olmasını sağlar.

sudo systemctl enable wg-quick@wg0

Sonuç

Bu öğreticide, bir Ubuntu sunucuda WireGuard VPN kurdunuz ve bir eşle IPv4 ve IPv6 kullanarak bağlantı sağladınız. Bu süreçte anahtarları yapılandırdınız, tünel adreslerini atadınız ve sunucunun trafiği güvenli bir şekilde yönlendirmesini etkinleştirdiniz; böylece hem anlaması hem de kullanması kolay çalışan bir VPN elde ettiniz.

Kılavuz ayrıca, VPN düzenli olarak kullanıldığında önemli olan bazı pratik detayları da ele aldı; bunlar arasında zamanla anahtar yönetimi, IPv6 ve çift yığın ağlarını ele alma, MTU ayarlamaları, keepalive ve DNS ayarları ile güvenilirlik ve performansı artırma yer alıyor. Bu unsurlar yerine getirildiğinde, WireGuard’ı gerçek dünya ortamlarında çalıştırmak veya ihtiyaçlarınıza göre uyarlamak için iyi bir şekilde hazırlanmış olursunuz.

WireGuard hakkında daha fazla bilgi edinmek, daha gelişmiş tünelleri nasıl yapılandıracağınızı öğrenmek veya WireGuard'ı konteynerlerle kullanmak isterseniz, resmi WireGuard belgelerini ziyaret edin. Ubuntu sistemlerinizi güvence altına almakla ilgili daha fazla eğitim için aşağıdaki makalelere göz atın:

  • Ubuntu'da UFW ile Bir Güvenlik Duvarı Nasıl Kurulur
  • UFW Temelleri: Linux Güvenliği için Yaygın Güvenlik Duvarı Kuralları ve Komutlar
  • VPC ve VPN: Güvenli Ağ İhtiyaçlarınıza Hangisi Uygun?
  • Ubuntu üzerinde OpenVPN Sunucusu nasıl kurulur ve yapılandırılır

Linux-Console.net Topluluğu ile öğrenme sürecine katıldığınız için teşekkürler.