IPTABLES'daki DNAT ve REDIRECT arasındaki fark


14

Tamam, çünkü yoğun olduğum veya belki doğru kaynağı bulamadığım için olabilir, ancak bu IPTABLES kurulumlarından birinin neden diğerinden daha iyi olacağını anlayamıyorum.

İşte benim kurulum:

Saydam bir proxy ve bir yönlendirici veya tür olarak hizmet veren bir kutu var. Üzerinde iki arayüz vardır, ETH0 ve ETH1 ve aşağıdaki adres şeması:

ETH0 = DHCP ETH1 = 192.168.5.1/24, LAN'daki arkasındaki istemcilere 192.168.5.0/24 ağı için DHCP hizmetinde

8080 numaralı bağlantı noktasını saydam bir proxy olarak dinledim ve dinledim. Ne bu kurulum ile başarım asgari yapılandırma ve proxy istemcilere bağlı istemciler ile mevcut bir ağa bu kutuyu bırakabilmektir.

İşte benim orijinal IPTABLES dosyam

*nat
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-port 8080
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
*filter
COMMIT

Bu yapılandırma iyi çalışıyor ve trafik sorunsuz bir şekilde ileri geri akıyor. Kök istemcilerin IP adresini privoxy günlük dosyalarında alıyorum ve yaşam iyi.

Diğer insanların yapılandırmalarına bakmaya başladığımda ve REDIRECT yerine DNAT kullandıklarını gördüğümde karışıklığım ortaya çıkıyor ve birinin diğerine karşı gerçek faydasını anlamaya çalışıyorum. İşte örnek bir yapılandırma:

*nat
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to 192.168.5.1:8080
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
*filter
COMMIT

Yine, bu yapılandırma da işe yarıyor ve bana tüm günlüğü bakış açısından veriyor ...

Hangisi doğrudur, yoksa belki diğerinden daha doğrudur?

Şimdiye kadar okumak için zaman ayırdığınız için teşekkürler ...

Yanıtlar:


14

REDIRECTmakinenin kendisine gönderilecek hedef IP adresini değiştirir. Başka bir deyişle, yerel olarak oluşturulan paketler 127.0.0.1 adresine eşlenir. Yerel paketleri yeniden yönlendirmek içindir. Yalnızca yerel makinedeki hizmetler arasındaki trafiği yeniden yönlendirmek istiyorsanız, iyi bir seçim olacaktır.

DNATgerçek Ağ Adresi Çevirisidir . Yerel sistemin dışına yönlendirilen paketlerin hedefin değiştirilmesini istiyorsanız, REDIRECTçalışmayacak şekilde ikisinin daha iyi bir seçimidir .


tamam, yani proxy'nin arkasında oturan bir istemcim varsa, 192.168.5.234'te diyelim ve 192.168.5.1'deki HTTP isteklerini proxy üzerinden "işlemek" istiyorsanız, giden bağlantı noktası 80 trafiğini 192.168'e göndermemizi öneriyorsunuz .5.1: 8080 vekil sunucuda. Bunu satın alabilirim, ama NEDEN ???? Proxy'nin ETH0'ını Internet'e varsayılan ağ geçidinden çıkarken trafiğin nasıl ele alındığıyla ilgili bir şey mi var? Bunu
atmam

2
DNAT, paket güvenlik duvarından geçerken adresi değiştirilen ana bilgisayara ulaşacak şekilde değiştirir ve bunun tersi de güvenlik duvarından gelmiş gibi görünür. DNAT neredeyse hiçbir zaman MASQUERADE kuralı tarafından yönetilen giden trafik için geçerli değildir. Privproxy başka bir ana bilgisayardaydı, o zaman DNAT uygun olurdu, o ana bilgisayar için uygun bir istisna dışında.
BillThor

Bill, teşekkür ederim. Sürüngen beynimin gittiği yer burası, ancak onaylama yapmak her zaman güzel. Bu yüzden 192.168.5.234'ten google.com için hedeflenen bir paket gönderirsem ve varsayılan gw'sini 192.168.5.1 (proxy'de eth1) olarak ayarlıyorsam, bu paketi proxy'de 8080 bağlantı noktasına yeniden yönlendirmeli ve privoxy'nin yapmasına izin vermeliyim geri kalan. Bunun nedeni, privoxy'nin başka bir ev sahibinde değil 192.168.5.1'de yaşamasıdır. Yapmamam gereken bir şey mi içiyorum?
QWade

9

REDIRECTWarner @ tarafından yanıtlandığı gibi makinenin kendisine gönderilecek hedef IP adresini değiştirir. Ama cevabın tamamen doğru olmadığını ya da biraz yanıltıcı olduğunu söyleyebilirim.

REDIRECTyalnızca yerel paketleri yeniden yönlendirmek için değildir. DNATKullanılacak hedef IP adresinin örtülü olduğu gerçekte , yerel bir paket ise 127.0.0.1 veya makine arayüzünün IP adresi aksi halde, OP durumunda 192.168.5.1.

Bu soruda, son hedef ne olursa olsun, paketler önce proxy'ye ulaşmalıdır, bu yüzden REDIRECTmükemmel uygundur.

İle beri REDIRECTIP adresini belirlemek gerekmez, sadece bazı avantajları üzerinde vardır, doğru bir alacak DNAT:

  • Makinenin IP adresi herhangi bir nedenle değişirse, kurallarınızı değiştirmeniz gerekmez ve özellikle DNATDHCP kontrollü arabirimler için çalışmaz.

  • Belirli IP adresleri nedeniyle farklı hafif sürümleri tutmadan birkaç sistem için aynı kuralları (örneğin birkaç proxy örneği) yazabilir ve koruyabilirsiniz.


bir şekilde snat / maskeli balo gibi.
Jichao

@Hod, REDIRECT'in DNAT'ın özel bir durumu olduğunu duyuyorum, ancak REDIRECT kullanıyorum ve TOR bir paketin gerçek hedefini biliyor, bu nedenle iddd ve tcphdr yapılarının sağlam olduğunu ve paketin REDIRECT hedefine döndüğünü sonuçlandırıyorum. çekirdek. DNAT aslında yapıları değiştirecektir. Yanlış mıyım?
fitil
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.