WireGuard VPN Kurulumu ve Site-to-Site Yapılandırması: Modern Tünelleme Stratejileri

 · 

WireGuard VPN Kurulumu ve Site-to-Site Yapılandırması: Modern Tünelleme Stratejileri

WireGuard VPN Kurulumu ve Site-to-Site Yapılandırması: Modern Tünelleme Stratejileri

Geleneksel VPN çözümlerinin getirdiği karmaşıklık ve performans darboğazları, özellikle bulut ve hibrit altyapıların yükselişiyle birlikte daha belirgin hale gelmiştir. WireGuard, bu zorluklara minimalist, yüksek performanslı ve modern kriptografi standartlarına dayalı bir yanıt sunar. Bu rehberde, WireGuard'ın temel kurulumundan başlayarak, gerçek dünya senaryolarında sıklıkla karşılaşılan site-to-site VPN yapılandırmalarına, özellikle bir AWS VPC ile şirket içi (on-premise) ağ arasında güvenli tünelleme senaryosuna odaklanacağız.

WireGuard Temelleri ve Anahtar Çifti Yönetimi

WireGuard, UDP üzerinde çalışan, IP katmanı (Layer 3) tünelleme protokolüdür. Basit ancak güçlü bir yapıya sahiptir ve asimetrik şifreleme anahtar çiftleri (public/private key) kullanarak kimlik doğrulama ve şifreleme sağlar. Her WireGuard arayüzü, benzersiz bir özel anahtara ve bu anahtardan türetilmiş bir genel anahtara sahiptir.

İlk adım, her bir VPN düğümü için bir anahtar çifti oluşturmaktır. Bu işlem, genellikle aşağıdaki komutlarla gerçekleştirilir:

# Özel anahtar üretimi
wg genkey | tee privatekey

# Genel anahtar üretimi (privatekey dosyasından okunarak)
wg pubkey < privatekey > publickey

# Alternatif olarak tek seferde
wg genkey | tee privatekey | wg pubkey > publickey

Bu komutlar, özel ve genel anahtarlarınızı `privatekey` ve `publickey` dosyalarına kaydeder. Özel anahtarınız kesinlikle gizli tutulmalı, genel anahtar ise diğer uç noktalara dağıtılabilir.

Noktadan-Noktaya (Peer-to-Peer) WireGuard Bağlantı Kurulumu

WireGuard, sunucu-istemci modelinden ziyade eşler arası (peer-to-peer) bir mimariye sahiptir. Her iki taraf da birbiri için bir eş olarak yapılandırılır.

Sunucu (Endpoint) Yapılandırması

Bir WireGuard düğümünü “sunucu” olarak düşündüğümüzde, bu genellikle internete açık bir IP adresine sahip ve gelen bağlantıları dinleyen uç noktadır. Aşağıdaki örnek, bir Linux sunucusu üzerinde `wg0.conf` dosyasının içeriğini göstermektedir:

# /etc/wireguard/wg0.conf (Sunucu)
[Interface]
PrivateKey = <sunucu_ozel_anahtarı>
# WireGuard tünel arayüzünün IP adresi. /24, bir alt ağ tanımlamasıdır.
Address = 10.0.0.1/24
# Gelen WireGuard bağlantılarını dinleyeceği UDP portu.
ListenPort = 51820

# NAT ve paket yönlendirme kuralları. Bu kısım, sunucunun diğer ağlara erişimini sağlar.
# eth0, sunucunun genel internet arayüzü varsayılmıştır.
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
# İstemcinin genel anahtarı. Bu, o istemcinin kimliğini doğrular.
PublicKey = <istemci_genel_anahtarı>
# İstemcinin WireGuard tünel IP adresi. Sadece bu IP'den gelen trafiğe izin verir.
AllowedIPs = 10.0.0.2/32
# PersistentKeepalive = 25 (NAT arkasındaki istemciler için bağlantıyı canlı tutar, isteğe bağlı)

`PostUp` ve `PostDown` komutları, tünel arayüzü ayağa kalktığında veya kapandığında çalıştırılacak iptables kurallarını tanımlar. Burada, `wg0` arayüzü üzerinden gelen/giden trafiğe izin verilir ve tünelden çıkan paketler için NAT (Network Address Translation) yapılır, böylece istemciler sunucunun internet erişimini kullanabilir.

İstemci (Peer) Yapılandırması

İstemci tarafındaki yapılandırma da benzerdir, ancak `Endpoint` parametresi sunucuya bağlanmak için kullanılır:

# /etc/wireguard/wg0.conf (İstemci)
[Interface]
PrivateKey = <istemci_ozel_anahtarı>
Address = 10.0.0.2/24

[Peer]
# Sunucunun genel anahtarı.
PublicKey = <sunucu_genel_anahtarı>
# Sunucunun internete açık IP adresi ve WireGuard dinleme portu.
Endpoint = <sunucu_public_ip_adresi>:51820
# İstemcinin tünel üzerinden erişebileceği IP adresleri. 0.0.0.0/0 tüm trafiği tünelden geçirir (full tunnel).
# Eğer sadece sunucu ağına erişim isteniyorsa, 10.0.0.1/32 veya sunucunun erişebildiği diğer alt ağlar belirtilebilir.
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

`AllowedIPs` parametresi kritik öneme sahiptir. İstemci, bu listedeki IP adreslerine yönelik trafiği WireGuard tüneli üzerinden yönlendirecektir. `0.0.0.0/0` kullanıldığında, tüm trafik tünel üzerinden geçer ve sunucunun internet çıkışını kullanır. `PersistentKeepalive` ise, istemci NAT arkasındayken bağlantının aktif kalmasını sağlar.

Site-to-Site VPN Yapılandırması: AWS VPC ile On-Premise Bağlantı Senaryosu

Gerçek dünya üretim ortamlarında, genellikle bir bulut ortamı (örneğin AWS VPC) ile şirket içi bir veri merkezi ağı arasında güvenli ve yüksek performanslı bağlantılar kurmak gerekir. WireGuard, bu tür site-to-site VPN ihtiyaçları için mükemmel bir çözümdür.

On-Premise WireGuard Ağ Geçidi Yapılandırması

Şirket içi ağınızda, AWS VPC ile tünel kuracak bir Linux sunucusunu WireGuard ağ geçidi olarak yapılandırın. Bu sunucu, hem şirket içi ağınıza hem de internete erişime sahip olmalıdır.

# /etc/wireguard/wg0.conf (On-Premise Gateway)
[Interface]
PrivateKey = <on_premise_ozel_anahtar>
Address = 10.0.0.1/24
ListenPort = 51820

# Şirket içi ağdaki sunucuların internete çıkışı için NAT.
# eth0, on-premise gateway'in internete bakan arayüzü, eth1 ise şirket içi ağa bakan arayüzü olabilir.
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# AWS VPC tarafındaki WireGuard eşinin yapılandırması
[Peer]
PublicKey = <aws_wg_genel_anahtar>
# AWS VPC'deki WireGuard sunucusunun Elastic IP adresi.
Endpoint = <aws_ec2_public_ip>:51820
# On-premise gateway'in tünel üzerinden erişebileceği AWS VPC alt ağları.
AllowedIPs = 172.31.0.0/16, 10.0.1.0/24 # Örneğin, VPC CIDR ve belirli bir alt ağ

Burada `AllowedIPs` içine AWS VPC'nin CIDR bloğu ve erişilmek istenen alt ağlar eklenir. `PostUp`/`PostDown` kuralları, şirket içi ağdaki makinelerin tünel üzerinden AWS'ye erişebilmesi için gerekli IP yönlendirme ve NAT işlemlerini içerir.

AWS VPC İçindeki EC2 WireGuard Sunucusu Yapılandırması

AWS tarafında, VPC'nizin içinde bir EC2 instance'ı üzerinde WireGuard sunucusu kurun. Bu EC2 instance'ının bir Elastic IP'ye sahip olması ve doğru Security Group kurallarıyla 51820/UDP portuna izin verilmesi gereklidir.

# /etc/wireguard/wg0.conf (AWS EC2 Gateway)
[Interface]
PrivateKey = <aws_wg_ozel_anahtar>
Address = 10.0.0.2/24
ListenPort = 51820

# AWS içindeki alt ağların on-premise ağa erişimi için NAT ve yönlendirme.
# eth0, EC2 instance'ının birincil ağ arayüzü varsayılmıştır.
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# On-premise WireGuard eşinin yapılandırması
[Peer]
PublicKey = <on_premise_genel_anahtar>
# On-premise gateway'in public IP adresi.
Endpoint = <on_premise_public_ip>:51820
# AWS EC2 gateway'in tünel üzerinden erişebileceği on-premise ağ alt ağları.
AllowedIPs = 192.168.1.0/24, 192.168.2.0/24 # Örneğin, şirket içi ağınızın CIDR blokları

AWS tarafında dikkat edilmesi gerekenler:

  • **Security Group:** WireGuard dinleme portu (örn. UDP/51820) için gelen trafiğe izin verin.
  • **Source/Destination Check:** EC2 instance'ının ağ arayüzünde
← Blog Listesine Dön