El sıkışma tamamlanır, wg show son aktarımı bildirir ve sunucunun tünel adresi ping'e yanıt verir. Sunucunun LAN'ındaki bir ana bilgisayar vermez. Üç koşul aynı anda geçerli olmalıdır: istemci LAN önekini tünele yönlendirmeli, sunucu paketleri iletmeli ve yanıtın dönüş yoluna ihtiyacı vardır. Üçünden biri eksik olduğunda belirti aynıdır.

AllowedIPs hem erişim listesi hem de yönlendirme tablosudur

İstemcide liste AllowedIPs hem o eşe ne gönderilebileceğine hem de WireGuard'ın hangi yolları kuracağına karar verir. Yalnızca sunucunun tünel adresini listeleyen bir eş girdisi tek bir ana bilgisayar yolu kurar, bu yüzden LAN hedefleri tünele hiç girmez. LAN önekini eklemek ilk doğrulanacak şeydir ve kopyalanmış bir yapılandırmadan sonra en sık eksik kalan değişiklik de budur. Varsayılan yola genişletilmiş bir eş başka bir tasarımdır ve istemcinin internet trafiğini de taşır.

Ana bilgisayar yolunu ve LAN önekini ayrı girdiler olarak tutun. Ofiste iki alt ağ varsa ikisi de listeye aittir ve eksik ikinci önek, tam değil seçici görünen bir arıza üretir.

[Peer]
PublicKey = <server public key>
Endpoint = vpn.example.net:51820
AllowedIPs = 10.66.0.1/32, 192.168.50.0/24

İletme ve çeviri sunucuya aittir

Sunucunun IP iletmesi açık, tünelden gelen trafiği kabul eden bir iletme kuralı ve LAN arayüzüne doğru bir çeviri kuralı olmalıdır. Tasarımı ofis ağındaki her ana bilgisayara dokunmadan çalıştıran şey bu çeviridir. Yanıtlar sonra LAN'ın hiç duymadığı bir adrese değil, sunucuya döner. Bu olmadan her ana bilgisayarın tünel alt ağına bir yol ve buna izin veren bir güvenlik duvarı kuralına ihtiyacı olur; bu da başkasının yönettiği bir ağda nadiren kabul edilebilir.

sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -i wg0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Elle eklenen kurallar yeniden başlatmada kaybolur, bu yüzden bunları sunucu yapılandırmasındaki hook komutlarıyla arayüze bağlayın. Arayüzünden daha uzun yaşayan bir kural kümesi, bir makinenin artık var olmayan bir tünel için trafiği çevirmeye başlamasının yoludur.

LAN taşındığında ama kural taşınmadığında

Ofis alt ağını yeniden numaralandıran yönlendirici değişimi bu arızanın klasik sürümüdür. Tünel açık kalır, el sıkışma taze kalır ve sunucunun arkasında hiçbir şey yanıt vermez, çünkü çeviri kuralı hâlâ eski adresi adlandırır. Kurulum betikleri sunucunun LAN adresini sıklıkla bir POSTROUTING kuralına gömer ve yeniden numaralandırmadan sonra o adres hiçbir arayüzde bulunmaz. Paketler sonra yanıt veremeyen bir hedefe yeniden yazılır.

iptables -t nat -n -L POSTROUTING
ip -br addr show

İki çıktıyı karşılaştırın. Arayüz listesinde görünmeyen bir çeviri hedefi hatanın kendisidir ve onu düzeltmek, bir kez gördükten sonra tek satırlık bir değişikliktir. Kural WireGuard yapılandırmasında değil, oluşturulmuş bir unit içinde olabilir, bu yüzden düzenlemeden sonra o uniti yeniden yükleyin ve sonraki açılışın değişikliğinizi yeniden yazmadığını doğrulayın.

NAT arkasındaki iki saha buluşacak bir yere ihtiyaç duyar

İki taraftan hiçbiri gelen bağlantıları kabul etmediğinde pratik yanıt, genel adresli ve iki WireGuard arayüzlü küçük bir ana bilgisayardır. Her saha dışa bağlanır, orta ana bilgisayar her eşin LAN'ını kendi AllowedIPs, yani kendi listesinde, listeler ve iletme iki tünel arasında paket taşır. İki sahanın hiçbirinin güvenlik duvarında bir şeyin değişmesi gerekmez, bu yüzden bu tasarım kolayca yayılır.

Sahalar arası yönlendirme özgün kaynak adreslerini korur ve böylece ana bilgisayar başına günlüklemeyi anlamlı tutar. İki LAN çakıştığında orta ana bilgisayarda çeviri yapmak daha basittir, ancak günlüklerde kaynak kimliğini kaybetme pahasına. Seçmeden önce hangi özelliğin önemli olduğuna karar verin.

Katmanları dört kontrolle ayırın

Üç şeyi değiştirip ummak yerine her katman için bir kontrol yapın. İlki her eş için el sıkışmanın yaşını ve sayaçları gösterir. İkincisi istemcinin o hedefi gerçekten tünele yönlendirip yönlendirmediğini gösterir. Üçüncü ve dördüncü istek geldi mi ve geldikten sonra bir ilke onu düşürdü mü söyler.

wg show
ip route get 192.168.50.20
tcpdump -ni wg0 icmp
iptables -vnL FORWARD --line-numbers

Gelip de yanıt doğurmayan istek, yanıt yoluna ya da LAN ana bilgisayarına işaret eder. Hiç gelmeyen istek AllowedIPs ya da istemcinin yoluna işaret eder. Bu iki sonuç farklı düzeltmeler gerektirir ve onları ayıran şey yakalamadır.

İlgili makaleler