Wireguard

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!