Yusuf Yaman'ın bloğu

FreeBSD Wireguard VPN kurulumu

Merhaba, bugün sizlere FreeBSD'de nasıl kendi VPN sunucunuzu oluşturabileceğinizi anlatacağım.

Kurulum

Öncelikle wireguard'ı kuralım.

# pkg install wireguard-tools

Yapılandırma

Sunucu ve sunucuya bağlanacak client için birer adet public ve private anahtar oluşturmamız gerekiyor. Öncelikle sunucu için oluşturalım.

# wg genkey | tee /usr/local/etc/wireguard/private.key | wg pubkey | tee /usr/local/etc/wireguard/public.key

Şimdi de VPN'e bağlanacak client'ta bu anahtarları oluşturalım.

# wg genkey | tee /usr/local/etc/wireguard/private.key | wg pubkey | tee /usr/local/etc/wireguard/public.key

Şimdi sıra geldi wireguard konfigürasyon dosyasını oluşturmaya. Öncelikle sunucu için oluşturuyoruz. Sunucu ve Client'lar için oluşturacağımız dosyada küçük farklılıklar olacaktır.

# cat wg0.conf
[Interface]
Address = 10.0.0.1/32
ListenPort = 51820
PrivateKey = [sunucunun private anahtarı]

[Peer]
PublicKey = [clientın public anahtarı]
AllowedIPs = 10.0.0.2/32

Şimdi client için oluşturuyoruz.

# cat wg0.conf
[Interface]
Address = 10.0.0.2/32
ListenPort = 56774
PrivateKey = [clientın private anahtarı]
DNS = 1.1.1.1, 1.0.0.1

[Peer]
PublicKey = [sunucunun public anahtarı]
AllowedIPs = 0.0.0.0/0
Endpoint = [sunucu ip adresi veya alan adı]:51820
PersistentKeepalive = 30    

Şimdi sunucuda wireguard servisini aktif edelim ve başlatalım.

# sysrc wireguard_interfaces="wg0" && service wireguard enable && service wireguard start

Şimdi client'ta VPN'e bağlanmayı deneyelim.

# wg-quick up wg0
# wg
interface: wg0
    public key: [clientın public anahtarı]
    private key: (hidden)
    listening port: 56774
        
peer: [sunucunun private anahtarı]
    endpoint: [sunucunun ip adresi veya alan adı]:51820
    allowed ips: 0.0.0.0/0
    latest handshake: 1 second ago
    transfer: 124 B received, 180 B sent
    persistent keepalive: every 30 seconds

wg komutuyla bağlantınızı kontrol edebilirsiniz. Şimdi VPN'i test etmek amacıyla dnsleaktest.com adresine gidin ve lokasyonunuza bakın.

Lokasyon bilgisini gösteren ekran görüntüsü

Wireguard VPN'i kapatmak için aşağıdaki komutu kullanabilirsiniz.

# wg-quick down wg0
Eğer sunucuda PF gibi bir firewall kullanıyorsanız aşağıdaki kurallları koymanız gerekebilir.

PF Firewall yapılandırması

ext_if = "re0"
wg_if = "wg0"
wireguard_clients = "10.0.0.0/24"

nat on $ext_if from $wireguard_clients to any -> ($ext_if)

pass in on $ext_if proto udp from any to $ext_if port 51820 keep state

pass in on $wg_if from any to any
pass out on $wg_if from any to any

Ayrıca, Ana bilgisayarın genel ve NAT ağları arasında paketleri iletebilmesi için ağ geçidi işlevselliğini etkinleştirmemiz gerekiyor.

# sysrc gateway_enable="YES"

Bu noktada sunucuyu yeniden başlatabilir veya isterseniz pf'yi başlatıp sysctl'yi kullanarak manuel olarak yönlendirmeyi etkinleştirebilirsiniz.

# sysctl net.inet.ip.forwarding=1
# /etc/rc.d/pf reload