host-only bağdaştırıcıları yerel bir sanal ağ oluşturur ve yönlendirilmiş TUN tünelleri IP paketlerini adresler arasında taşır. İkisi de diğerine köprü değildir, bu yüzden çalışan bir yapılandırma kimin ilettiğini ve dönüş rotasının kime ait olduğunu söylemelidir. Bu iki atamayı karıştırırsanız konuk, tünel istemcisinin hiç istemediği bir kaynakla tünele yanıt verir. Aşağıdaki tasarım iki öneki ayrı tutar ve dönüş yolunu açık hale getirir.

İki ağ, iki önek

Tünel havuzuna ve host-only ağına farklı önekler verin ve asla birini diğeri yerine kullanmayın. Bu örnekte VPN havuzu 10.44.0.0/24, host-only ağı 192.168.99.0/24'tür; ana bilgisayar 192.168.99.1'de, bir konuk ise 192.168.99.20'dedir. Aynı öneki hem TUN aygıtına hem de host-only bağdaştırıcısına atamak onları birleştirmez. Tek bir adres aralığı üzerinde iki talep yaratır ve yönlendirme tablosu daha sonra tesadüfen koruduğu talebe yanıt verir.

host-only bağdaştırıcısı ana bilgisayarda ve konuğun içinde bulunur ve kendi başına makineden dışarı çıkan bir yolu yoktur. Köprülemeli ve NAT bağlantılarının maruziyeti farklıdır ve köprü moduna geçmek tek bir konuk hizmetine ulaşmak için koşul değildir.

Ana bilgisayar yolu zaten tutuyor

Bir şey eklemeden önce ne olduğuna bakın. Ana bilgisayarın host-only ağında bir arayüzü ve bu önek için bir rotası vardır; ikisi de bağdaştırıcı kalkarken oluşturulmuştur.

ip -br addr show
ip route show 192.168.99.0/24
sysctl net.ipv4.ip_forward

Üçüncü satır, ana bilgisayarı bir sıçrama noktasına çeviren mekanizmadır. O olmadan tünelden gelen paket, ana bilgisayarın ulaşabildiği ama iletmeyeceği bir ağa adreslenir. İletme gereklidir ve yeterli değildir. Filtre politikası, tünel arayüzü ile host-only arayüzü arasındaki belirli bir akışın izinli olup olmadığına hâlâ karar verir ve bu karar kimsenin okumadığı bir varsayılan politikada değil, yazılı olmalıdır.

Rotayı itin, sonra ulaştığı yeri filtreleyin

Sunucu, itilen rotaları kabul eden istemcilere host-only önekini sağlayabilir; bu, tünelin arkasındaki diğer herhangi bir alt ağ için kullanılan aynı mekanizmadır.

push "route 192.168.99.0 255.255.255.0"
iptables -A FORWARD -i tun0 -o vboxnet0 -d 192.168.99.20 -p tcp --dport 5432 -j ACCEPT
iptables -A FORWARD -i vboxnet0 -o tun0 -s 192.168.99.20 -p tcp --sport 5432 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Bu iki kural tek yönde tek bir hizmete ve yanıtlarına izin verir. Tüm öneke ulaşan bir rota ile tek bir bağlantı noktasına izin veren bir filtre bilinçli bir bileşimdir; rota artı koşulsuz kabul, bir laboratuvar hizmetinin açık hizmete dönüşme yoludur. İtilen rota da bir yetkilendirme değildir. İstemci onu kabul eder, ana bilgisayar onu iletir ve konuğun güvenlik duvarı ile hizmetin kendisi hâlâ söz sahibidir.

Konuğun dönüş yoluna ihtiyacı var

10.44.0.x'ten ulaşılan bir konuk, yanıtlarını ana bilgisayarın host-only adresine göndermelidir, yoksa ana bilgisayar kaynağı çevirmelidir. VirtualBox DHCP'den adres almak iki düzenlemenin hiçbiri hakkında bir şey söylemez.

ip route add 10.44.0.0/24 via 192.168.99.1 dev enp0s8
ip route get 10.44.0.15

Bu rotayı konuğun içine eklemek özgün kaynağı korur; bu da istemci başına politikayı ve günlükleri anlamlı tutar. Ana bilgisayarda sınırlı kaynak çevirisi alternatiftir ve çalışır, ancak hangi istemcinin bağlandığını gizleme pahasına. Örtüşme diğer arıza kipidir. Ev LAN'ı zaten 192.168.99.0/24 kullanan uzak bir istemci, itilen rotayı kendi ağı olarak okur ve sunucu tarafındaki hiçbir değişiklik bu belirsizliği gidermez. Bir tarafı yeniden numaralandırın veya çakışma olasılığı düşük bir önek seçin.

TUN aygıtı IP paketleri taşır, bu yüzden bir konuğun içine varsayılan ağ geçidi eklemek tüneli host-only bağdaştırıcısıyla bir Ethernet segmentine dönüştürmez. TAP köprüsü, kendi istemci desteği ve adres sahipliği olan farklı bir tasarımdır ve iki tanımı karıştırmak asla yakınsamayan yapılandırmalara yol açar.

Doğrulayın, sonra yeniden başlatmaya dayanıklı hale getirin

Sıradan bir uzak istemciden zararsız bir hizmet test edin, konuğun dönüş rotasını kontrol edin ve izin vermediğiniz bir hizmetin yavaş değil reddedildiğini doğrulayın.

ss -lntp '( sport = :5432 )'
conntrack -L | grep 192.168.99.20

Ardından VPN hizmetini ve sanal makinenin ağını yeniden başlatın ve aynı üç kontrolü tekrarlayın. Elle eklenen bir rota bir sonraki yeniden başlatmaya kadar yaşar ve yalnızca sıcak oturumda çalışan bir yapılandırma tasarım değildir. İki öneki, iletme politikasını ve konuğun rotasını birlikte kaydedin. Bir sonraki sanal makineyi ekleyen kişi üçüne de ihtiyaç duyacak ve aksi halde onları her başarısız bağlantıda yeniden keşfedecektir.

İlgili makaleler