Gelen https'leri yerel IP'ye iptables ile yönlendir


3

1 ağ arayüzüne (eth0, public ip) sahip bir yönlendiricim ve eth0: 0, local ip 192.168.1.1 için bir takma ad var.

Gelen tüm https (443) trafiğini başka bir sunucuya yönlendirmek istiyorum. Denedim

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -m conntrack --ctstate NEW -j DNAT --to-destination 192.168.1.2:443ve çalışıyor. IP adresimin ssl portuna gelen tüm trafik 192.168.1.2'ye yönlendirilir.

Ancak asıl sorun şudur; şimdi yerel lanetten internete tüm https trafiği de bu yerel ipe yönlendiriliyor, örneğin. https://facebook.com ve 192.168.1.2 cevapları. Çalışmasını sağlamak için yapılandırmamı nasıl düzeltmeliyim?

Yanıtlar:


1

Sadece hedef adrese göre filtreleyin:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -d $PUBLIC_IP -m conntrack --ctstate NEW -j DNAT --to-destination 192.168.1.2:443

Genel IP dinamik ise, IP adresiniz değiştiğinde bu kuralı güncellemek için DHCP istemcisi komut dosyasına kanca eklemeniz gerekir. Kurallarını değiştirmeden kontrol etmek üzere IP adresini değiştirmek için IP setlerini de kullanabilirsiniz.

Başka bir daha az mükemmel çözüm, addrtypemodülü kullanmaktır . Bu modüller, adresin ne tür bir yönlendirme girişi olduğunu belirlemek için yönlendirme tablosunu kontrol eder. LOCAL tipi, bu IP'nin ana bilgisayarın olup olmadığını kontrol etmek için kullanılabilir.

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -m addrtype --dst-type LOCAL  -m conntrack --ctstate NEW -j DNAT --to-destination 192.168.1.2:443

Bu çözümün , ana makinenizin sahip olduğu herhangi bir IP adresine 192.168.1.1ve 127.0.0.1veya IP adresine de yönlendirdiğini unutmayın . ! -d 192.168.1.1Kural ile basit bir eşleşme ekleyerek hedef adresleri hariç tutabilirsiniz .


Hızlı cevabınız için teşekkürler. -O PREROUTING ile nasıl kullanabilirim? En azından iptables 1.4.12 kabul etmiyor mu? Ama şimdi her şey şimdi --dst-LOCAL ile çalışır :)
AnttiQ

@AnttiQ: Üzgünüm demek -distemiyorum -o. Sabit.
BatchyX

addrtypeModül kullanmak neden daha az mükemmel? Bu seçenek benim için daha güvenilir geliyor, çünkü $PUBLIC_IPyanlış olabilecek ayrı bir tanımlaması gerekmez (özellikle IP adresini almak için DHCP kullanırken).
Craig McQueen
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.