Yerel olarak iptables kullanarak giden trafiği 80 numaralı bağlantı noktasına nasıl yönlendirebilirim?


19

Yerel olarak kullanarak Ubuntu makinemdeki bağlantı noktalarını yönlendirmeye çalışıyorum iptables. Saydam proxy'ye benzer. Sistemimi 80 numaralı bağlantı noktasında bırakıp uzak bir ana bilgisayara ve bağlantı noktasına yönlendirmeye çalışan herhangi bir şeyi yakalamak istiyorum.

Bunu NAT ve ön yönlendirme işlevlerini kullanarak başarabilir miyim iptables?

Yanıtlar:


30

Bu iptableskuralı deneyin :

$ sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination IP:80

Yukarıda belirtilenler:

  • NAT tablosuna ( -t nat) aşağıdaki kuralı ekleyin .
  • Bu kural -Agiden trafiğe ( OUTPUT) eklenecektir .
  • Yalnızca TCP trafiğiyle ( -p tcp) ilgileniyoruz .
  • Yalnızca hedef limanın 80 ( --dport 80) olduğu trafikle ilgileniyoruz .
  • Bir karşılaşmamız olduğunda DNAT ( -j DNAT) ' a atlayın .
  • Bu trafiği başka bir sunucunun IP @ bağlantı noktası 80 ( --to-destination IP:80) 'ne yönlendirin.

DNAT nedir?

DNAT
    This target is only valid in the nat table, in the PREROUTING and OUTPUT 
    chains, and user-defined chains which are only called from those chains.
    It specifies that the destination address of the packet should be modified 
    (and all future packets in  this  connection will also be mangled), and
     rules should cease being examined.

Referanslar


bunun için teşekkürler ama işe yaramıyor gibi görünüyor. Ancak o zamandan beri işe yarayan bunu buldum.
pjf

sudo iptables -t nat -A ÇIKIŞ -p tcp --dport 80 -j DNAT - hedefe xx.xx.xx.xx: 3128
pjf

Bunun nedeni bir ağ geçidi üzerinden değil yerel olarak mı? SNAT'ınız bir ağ geçidi üzerinden çalışır mı?
pjf

@pjf - Buna inanıyorum. Cevabımı güncelledim.
slm

@pjf - Her iki kuralı da buldum ve her ikisiyle de cevabımı güncelleme sürecindeydim. Hangi durumda olduğunuzu bilmiyordum.
slm

6

Bu, yalnızca belirli bir hedef ana bilgisayara giden trafikte çalışmak için daha spesifik hale getirilebilir. Örneğin, postfix hata yaptığında ve kuyruktaki postalar eski bir IP adresine gönderilmek istediğinde.

iptables -t nat -A OUTPUT -p tcp -d {ONLY_TO_THIS_DESTINATION} --dport 25 -j DNAT --to-destination {NEW_IP}:25

4

Bu, bağlantı noktalarını tüm IP adreslerine çevirmenize izin verebilir. Buradaki ana fark, --to-destinationsahada bir IP adresinin olmamasıdır .

iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination :80

Çok yararlı ipucu; tam ihtiyacım olan şey. Bağlantı noktası numarasını artırmanın bir yolu var mı? Diyelim ki 100 limana sahibim ve hepsini belirli bir miktar yükseltmek istiyorum
Zdenek

Ne demek istediğinden emin değilim. Bash'de bir for-loop yazabilir misiniz?
Felipe Alvarez

100 iptables kuralı ekleyen bir döngü işe yarayacaktır, ancak yavaşlatacaktır. Tek bir kurala art arda gelen birçok bağlantı noktasını artırmasını söylemeyi tercih ederim.
Zdenek

@Zdenek Bu iptables ile mümkün olup olmadığını bilmiyorum. Baktın mı firewalld?
Felipe Alvarez
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.