Hi all
I have implemented a virtual server program with direct routing
in app-level by raw sockets.
When I test the virtual services (like http), the program will receive
the request
or data packets sending from client and translate the dst mac address to
some
real servers'. Then, send it out by raw socket too.
But the problem is even I turn off the httpd on the load balancer
itself, the load
balancer still send the packet with 'RST' flag in tcp header to tell the
client that
she has no such '80 service'.
So the client will receive 2 respond packets, one is the RST packet from
load
balancer, and the other is the normal respond packet from real server.
Therefore, the client will be confused and cause connection failed.
I think a solution by setting ipchains rule like this :
ipchains -A output -p tcp -s 0/0 80 -d <real server ip> -j DENY
It do stop the RST packet from load balancer to real server and make
http services
running normally !
How do I control and stop RST response packet sending from the load
balancer
in app-level program ?
May someone has a good suggestion to me? Thank you very much!
|