LVS
lvs-users
Google
 
Web LinuxVirtualServer.org

RE: Problem with IP-takeover

To: "LinuxVirtualServer.org users mailing list." <lvs-users@xxxxxxxxxxxxxxxxxxxxxx>
Subject: RE: Problem with IP-takeover
From: "Ordway, Ryan" <Ryan.Ordway@xxxxxxxxxxxxxxx>
Date: Tue, 30 Jan 2007 15:07:11 -0800
Is anyone using LVS + hearbeat + ldirectord + iptables with SNAT/DNAT?
I'm trying to allow "direct" access to the real servers via one public
IP separate from the virtual IP that would "bypass" LVS, and then the
load balanced virtual IP for LVS to load balance between the real
servers.

For example:

192.168.1.1   - LVS director #1
192.168.1.2   - LVS director #2
192.168.1.3   - "direct" IP for web1
192.168.1.4   - "direct" IP for web2
192.168.1.100 - load balanced IP for web1/web2

10.0.0.1      - LVS director #1 (internal)
10.0.0.2      - LVS director #2 (internal)
10.0.0.3      - internal IP for web1
10.0.0.4      - internal IP for web2
10.0.0.254    - load balanced default gateway IP for director1/director2


The direct system access works great, but I need an iptables rule to
handle the SNAT/DNAT exception of the load balanced IP.

I have rules like:

iptables -A nat PREROUTING -d 192.168.1.3 -I eth1 -j DNAT
--to-destination 10.0.0.3

and

iptables -A nat POSTROUTING -s 10.0.0.3 ! -d 10.0.0/24 -j SNAT
--to-source 192.168.1.3

But then, of course when I get a connection on 192.168.1.100, the
director sends the packets to the real server, the real server shoots
back its response, but the POSTROUTING rule rewrites the source to the
"direct" IP, 192.168.1.3 instead of the load balanced IP. I just haven't
figured out a simple way to change the SNAT address depending on the
source of the initial communication, the virtual IP.

It's probably just a simple iptables rule, but it's evading me....

TIA,

Ryan

--
Ryan Ordway               Unix Systems Administrator
OSU Libraries             E-mail: ryan.ordway@xxxxxxxxxxxxxxx

<Prev in Thread] Current Thread [Next in Thread>