Her zaman gizlilik mi arıyorsunuz? O halde bir WireGuard VPN barındırmayı düşünün. Bu kurulum kılavuzuna ek olarak, bazı derin paket inceleme sistemlerini (Türkiye'de DPI var) atlatmak için WireGuard trafiğinizi TLS WebSocket bağlantısı üzerinden nasıl tünelleyeceğinizi de göstereceğiz.
Örnek olarak sanal bir 172.16.0.0/24 ağı kullanacağız ancak herhangi bir özel IP aralığı yeterli olacaktır.
Kurulum
Sunucuda
Sunucuya WireGuard yönetim araçlarını yükleyin:
apt install wireguard
/etc/sysctl.d/99-sysctl.conf
dosyasının içinde aşağıdaki satırın başındaki # işaretini kaldırarak IPv4 yönlendirmeyi etkinleştirin:
net.ipv4.ip_forward=1
Değişikliği uygulamak için aşağıdaki komutu çalıştırın:
sysctl -w net.ipv4.ip_forward=1
İstemcide
WireGuard Yönetim Araçlarını yüklemek için paket yöneticinizi kullanın.
Arch ve Fedora tabanlı dağıtımlarda paket wireguard-tools
olarak adlandırılır. Debian tabanlılar için yukarıda belirtilmiştir.
Makineniz için genel ve özel anahtarları oluşturun:
sudo bash -c "umask 077 ; wg genkey > /etc/wireguard/client_priv.key"
sudo bash -c "wg pubkey < /etc/wireguard/client_priv.key > /etc/wireguard/client_pub.key"
Sunucuya Geri Dön
Sunucunuz için genel ve özel anahtarları oluşturun:
umask 077 ; wg genkey > /etc/wireguard/server_priv.key
wg pubkey < /etc/wireguard/server_priv.key > /etc/wireguard/server_pub.key
/etc/wireguard/wg0.conf
adında bir WireGuard yapılandırma dosyası oluşturun, burada wg0
ağ arayüzünün adıdır:
[Interface]
Address = 172.16.0.1/24
ListenPort = 51820
PrivateKey = (sunucunun özel anahtarı buraya gelecek)
# Güvenlik duvarı kuralları
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
# İstemci #1 ayrıntıları
PublicKey = (istemcinin genel anahtarı buraya gelecek)
# Bu istemciye yönlendirilecek trafik
AllowedIPs = 172.16.0.2/32
Sunucunun özel anahtarını ve istemcinin genel anahtarını ilgili satırlara yapıştırın, her biri yaklaşık 45 karakter uzunluğunda ve sonunda eşittir işareti olacaktır.
Ek Eşler Hakkında Not
Örneğimizde, alt ağ 254 diğer eşi tanıyabilir. Yeni eşin bilgilerini ilk eşin altına ekleyin ve AllowedIPS
satırını bir sonraki sanal ip ile güncelleyin. 32
yi değiştirmeyin: bu, herkesin tünelinin izole olmasını sağlar.
Bunu isteğe bağlı olarak ek cihazlar veya arkadaşlar için kullanın.
WireGuard hizmetini etkinleştirin ve başlatın:
systemctl enable --now wg-quick@wg0.service
Yapılandırma dosyasını başka bir şey olarak adlandırdıysanız wg0
i yapılandırma dosyasının adıyla değiştirin.
İstemciye Geri Dön
/etc/wireguard/myvpn.conf
içinde başka bir WireGuard yapılandırma dosyası oluşturun:
[Interface]
Address = 172.16.0.2/24
PrivateKey = (istemcinin özel anahtarı buraya gelecek)
# İstediğiniz DNS sunucusunu ayarlayın
# DNS = 9.9.9.9
[Peer]
PublicKey = (sunucunun genel anahtarı buraya gelecek)
# Uç nokta (sunucu) bir alan adı veya IP adresi olabilir
Endpoint = (sunucunun IP adresi buraya gelecek):51820
# Sunucuya yönlendirilecek trafik
AllowedIPs = 0.0.0.0/0, ::/0
Gerekli bilgileri doldurun. Sunucunuzun genel IP adresini kullanmayı unutmayın, WireGuard olanı değil.
WireGuard'ı başlatın:
sudo wg-quick up myvpn
Eğer 172.16.0.1
adresine ping atamıyorsanız veya internete erişemiyorsanız ve bu kılavuzu dikkatlice takip ettiyseniz,
muhtemelen bir kurumsal güvenlik duvarının arkasındasınız. Okumaya devam edin.
WebSocket Tüneli
TLS Hakkında Not
Sunucunuz https ile bir web sitesi barındırıyorsa, WireGuard paketlerinizi TLS trafiği olarak gizlemek için 443 numaralı bağlantı noktasını kullanamazsınız. Başka bir zararsız bağlantı noktası kullanabilirsiniz, ancak seçici güvenlik duvarından geçeceğinizin garantisi yoktur.
Sunucuda
wstunnel'i indirin ve yükleyin:
wget https://github.com/erebe/wstunnel/releases/download/v4.0/wstunnel-x64-linux
mv wstunnel-x64-linux /usr/local/bin/wstunnel
chmod uo+x /usr/local/bin/wstunnel
setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/wstunnel
Yeni bir systemd hizmet yapılandırma dosyası oluşturun, /etc/systemd/system/wstunnel.service
:
[Unit]
Description=WireGuard UDP'yi websocket üzerinden tünelle
After=network.target
[Service]
Type=simple
User=nobody
ExecStart=/usr/local/bin/wstunnel -v --server wss://0.0.0.0:443 --restrictTo=127.0.0.1:51820
Restart=no
[Install]
WantedBy=multi-user.target
wstunnel'i etkinleştirin ve başlatın:
systemctl enable --now wstunnel
İstemcide
wstunnel'i ve bir yardımcı betiği indirin ve yükleyin:
wget https://github.com/erebe/wstunnel/releases/download/v4.0/wstunnel-x64-linux
sudo mv wstunnel-x64-linux /usr/local/bin/wstunnel
sudo chmod +x /usr/local/bin/wstunnel
wget https://karsi-atak.com.tr/wstunnel.sh
sudo mv wstunnel.sh /etc/wireguard/wstunnel.sh
sudo chmod +x /etc/wireguard/wstunnel.sh
wstunnel yapılandırma dosyasını oluşturun, /etc/wireguard/myvpn.wstunnel
:
REMOTE_HOST=(sunucunun IP adresi buraya gelecek)
REMOTE_PORT=51820
# VPN sunucunuza bir alan adı kullanarak bağlanıyorsanız aşağıdaki satırı kullanın.
# UPDATE_HOSTS='/etc/hosts'
/etc/wireguard/myvpn.conf
dosyasını düzenleyin. Endpoint
satırını 127.0.0.1:51820
olarak değiştirin ve bu dört satırı [Interface]
bölümüne ekleyin:
Table = off
PreUp = source /etc/wireguard/wstunnel.sh && pre_up %i
PostUp = source /etc/wireguard/wstunnel.sh && post_up %i
PostDown = source /etc/wireguard/wstunnel.sh && post_down %i
WireGuard'ı tekrar başlatın:
sudo wg-quick up myvpn
Bağlantıyı kesmek için up
yerine down
yazın. Ve işte bu kadar, şimdi bir WireGuard VPN sunucusu barındırıyorsunuz!