On 09/10/07 07:18, vinod K D wrote:
My gateway has two network interfaces: eth0 & eth1.
eth0 (192.168.1.1) is connected to public network and eth1 (10.0.1.1)
is connected to LAN.
MyServer, which is in the LAN, has ip 10.0.1.2.
Ok, reasonable enough.
I created a virtual interface eth0:0 (192.168.1.2) in the gateway.
Using ipvsadm, I can route the packets, destined for this IP address
and a port, to myServer.
And in myServer, I enabled ip_forwarding and assigned 192.168.1.2 for
the loopback interface. So my server application receives and serves
the packets properly.
I'm surprised that having the 192.168.1.2 address on the loopback
interface is working as expected at all as the kernel will usually
protect the loopback interface from any thing not local to the system.
The problem is in the return path. (Remember the packets have source
addres 192.168.1.2). While they reach the gateway, the packets are
being dropped.
*nod* You will indeed have some reverse path issues to work out.
(I think, the reason is nothing but the address 192.168.1.2 is
assigned to the gateway. Hence router assumes the packets are
traversing though a loop.)
*nod*
I can't use masquerading, because I need to get the source &
destination IPs of the packets.
Ok...
I have to ask, why does your server have a private class C address on
its external interface? Either you are doing something weird and your
external is not external to the internet or you are already in a
situation where the packets have been modified as you are trying to
avoid. I'm just saying / opening the door for an answer.
Can anyone suggest a way to redirect packets from an interface to
another (ie, eth1 to eth0) without making any change in the packet
header.
Why redirect the packets at all. Why not let the packets come in
directly to the router?
I'd suggest that you turn your router in to a bridging router. I.e.
bridge traffic to / from 192.168.1.2 through eth0 and eth1 while routing
192.168.1.1 traffic for your LAN? This way your server would have
192.168.1.2 bound to its NIC and be able to reply directly to the world
with out any problem at all. If you are worried about not having a
firewall, you can easily do either EBTables (layer 2) or IPTables (layer
3) on the bridged (layer 2) traffic so your system will still be protected.
Do some light reading of section 7 of the following page:
http://ebtables.sourceforge.net/br_fw_ia/br_fw_ia.html#section7 I think
this will help depict what I'm talking about.
PS: The latest versions of netfilter doen't have inbuilt ipt_ROUTE
module. Else my life would be cool.
Grant. . . .