Re: Route packets from an interface to another

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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. . . .


[Index of Archives]     [Linux Netfilter Development]     [Linux Kernel Networking Development]     [Netem]     [Berkeley Packet Filter]     [Linux Kernel Development]     [Advanced Routing & Traffice Control]     [Bugtraq]

  Powered by Linux