Yük dengeleme: yanıt paketleri yönlendirilmemiş - iptables


2

Iptables ile ilgili bir sorunum var. 2 bağlantı arasında bir yük dengeleyici kurmaya çalışıyorum. Paketleri ve bağlantıları işaretleyebilirim, yönlendirme tablosunu seçmek için ip kuralını kullanabilirim (bu yüzden ağ geçidini değiştirmek). Ancak, paketleri yönlendirici varsayılan gw'den farklı bir gw üzerinden yönlendirmek için işareti ayarladığımda, yanıt paketi doğru şekilde yönlendirilmiyor.

8.8.8.8'e ping yaparken örnek:

17:41:48.061404 IP x.x.x.x > google-public-dns-a.google.com: ICMP echo request, id 2622, seq 1, length 64
17:41:48.079664 IP google-public-dns-a.google.com > x.x.x.x: ICMP echo reply, id 2622, seq 1, length 64

Bu yönlendirici tcpdump kullanarak aldım. İkinci paket yönlendiriciye gelir, ancak yönlendiricinin istediği yere doğru yönlendirici alamaz. Bu her pakette olur.

Yapılandırma:

  • ana tabloyu wan_one ve wan_two WITH g varsayılan olarak kopyaladı.
  • ana tablo GW üzerinden varsayılan bir gw yönlendiricisine sahip
  • wan_x tablolarına farklı def gws uygulandı (GW 1 ve GW 2).
  • # Match the packets
    ip rule add fwmark 1 lookup wan_one prio 1024
    ip rule add fwmark 2 lookup wan_two prio 1025
    
  • # Packets from router 1 or 2 gets routed through correct table
    ip rule add from [ROUTER IP FOR GW 1] table wan_one prio 1026
    ip rule add from [ROUTER IP FOR GW 2] table wan_two prio 1027
    
  • iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark
    iptables -t mangle -A PREROUTING --match mark --mark 1 -j ACCEPT
    iptables -t mangle -A PREROUTING --match mark --mark 2 -j ACCEPT
    iptables -t mangle -A PREROUTING -i eth0 -m state --state NEW -m mark --mark 0 -j MARK --set-mark 1
    iptables -t mangle -A PREROUTING -i eth1 -m state --state NEW -m mark --mark 0 -j MARK --set-mark 2
    iptables -t mangle -A PREROUTING -m state --state NEW -m mark --mark 0 -i eth2 -j MARK --set-mark 2
    iptables -t mangle -A PREROUTING -j CONNMARK --save-mark
    

Diyelim ki link 1 eth0 üzerinde, link 2 eth1 üzerinde ve LAN eth2 üzerinde.

Nasıl çalıştırabilirim?

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.