Linux ana bilgisayarındaki bir bağlantı noktası aralığını konuk bir VM'ye nasıl yönlendiririm?


1

Linux ana bilgisayarındaki belirli bir bağlantı noktası aralığını konuk VM'lerinden birine yönlendirmeye çalışıyorum. Bu yeniden yönlendirmenin localhost dahil tüm ana bilgisayar arabirimlerine uygulanmasını istiyorum. Yapmayı başardım:

iptables -I FORWARD -m state -d 192.168.122.0/24 --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -I PREROUTING -p tcp --dport 8000:8500 -j DNAT --to 192.168.122.158

8000: 8500, yönlendirme ile ilgilendiğim aralık ve 192.168.122.158, konuğun IP adresidir. Bu, VM sunucusuna değil, başka bir makineden bağlanmaya çalıştığım sürece çalışır. Ancak VM ana bilgisayarından gelen trafiği iletmeyi de istiyorum.

Umarım açıktır, terminolojiyi karıştırdıysam özür dilerim.

Yanıtlar:


1

Görünüşe göre geri döngü trafiği için DNAT yapmak mümkün değildir - örneğin, bkz. bu soru veya bu debian-kullanıcı tartışması . kullanma REDIRECT trafik geridöngü arabiriminde kaldığı için çalışır, ancak trafiği başka bir makineye iletmek çalışmaz.

TCP bağlantılarını iletmek için bir kullanıcı alanı programı kullanabilirsiniz - örneğin, aşağıdaki yapılandırma ile xinetd, 8000 numaralı bağlantı noktasını VM'nize iletir:

service forward_8000
{
        type                    = UNLISTED
        port                    = 8000
        socket_type             = stream
        wait                    = no
        user                    = root
        redirect                = 192.168.122.158 8000
}

Bununla birlikte, bir dizi portu bu şekilde yönlendirmek mümkün değildir - her port ayrı bir servis tanımına ihtiyaç duyar.


Teşekkür ederim. Bu bağlantı noktası miktarında xinetd'den kurulumu biraz daha kolay olan rinetd buldum. Size alabileceğim kadar güvenilir bir cevap verdiğinizden beri size ödül veriyorum. Kendine iyi bak.
samwise

0

Yerel paketler PREROUTING Zincir. Kullanmanız gerekeceğine inanıyorum OUTPUT NAT tablosundaki zincir bunu yapmak için:

iptables -t nat -I OUTPUT -p tcp --dport 8000:8500 -j DNAT --to 192.168.122.158

Muhtemelen, bu gidenlere ve ilgili paketlerine izin veren filtre zincirine bir kural eklemeniz gerekecektir:

iptables -I OUTPUT -m state -d 192.168.122.158 --state NEW,RELATED,ESTABLISHED -j ACCEPT

Bu işe görünmüyor. Aynı sonucu alıyorum, yani telnet localhost 8000 bağlanamıyor (8000 numaralı bağlantı noktasında VM'de çalışan bir şey var)

Paketleri çıkarmak için bir kural eklemeniz de gerekebilir. (FORWARD kuralınızın karşılığı.) Paketlerinizi tcpdump ile kontrol etmenizi, böylece gerçekte ne olduğunu görmenizi öneririm.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.