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.

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