[18] in linux-net channel archive

home help back first fref pref prev next nref lref last post

NFS mounting from multihomed hosts (Oh no, not again...)

daemon@ATHENA.MIT.EDU (Swen Thuemmler)
Wed Jan 11 12:13:23 1995

Date: Wed, 11 Jan 1995 16:56:05 +0100 (MET)
From: Swen Thuemmler <swen@uni-paderborn.de>
To: Linux Activists <linux-activists@niksula.hut.fi>,
        Linux Net <linux-net@vger.rutgers.edu>
Cc: Linus Torvalds <Linus.Torvalds@cs.helsinki.fi>,
        Rick Sladkey <jrs@world.std.com>
In-Reply-To: <Pine.SOL.3.91.950110142738.11480A-100000@gingganz>

X-Mn-Key: NET

On Tue, 10 Jan 1995, I wrote:

> Well, here are some new patches, which should partially solve this 
> problem. The client inspects the source address of the first NFS packet 
> from server and then connect()s to this address. From then on, it should 
> only receive packets from this address. 

[...]

> I think, this behaviour should be secure enough, given all the other 
> security problems with NFS.
> 
> Comments?

Yes. I have to make a comment myself. I applied the more secure patches 
and now have bean bitten by them :(. Scenario is as follows:

I have an nfs-server with 3 (three) interfaces named
mallorca	for the subnet
mallorca-bb	for the ethernet backbone
mallorca-fb	for the fddi backbone

The server got mounted by amd when a user with his homedir on it logged 
in. Unfortunately at this time due to a reboot of a gateway, the route 
over the fddi backbone did not work. But the ethernet backbone still 
worked, so the client code connected to mallorca-fb. After a while, the 
gateway was up again, routes changed, and all nfs replies now came from 
mallorca-fb, which the client did not accept, since it was connected to 
mallorca-bb. I did use tcpdump to verify this:

This is a client request: 

linux.5a7dc844 > mallorca-bb.nfs: 116 lookup fh 7,2/2 "freak" (ttl 64, id
40667)

This is the answer (which is discarded)

mallorca-fb.nfs > linux.5a7dc844: reply ok 128 (ttl 254, id 10031)

This is an NFS ping from amd:

linux.f2530000 > mallorca.nfs: 40 null (ttl 64, id 40671)
mallorca-fb.nfs > linux.f2530000: reply ok 24 (ttl 254, id 10196)

Amd gets the answer (since it does use user level code) and thinks, 
mallorca is still alive, so it cannot keep other programs accessing 
mallorca from hanging. 

Since our Suns do not show these problems, I think this indicates that at 
least in SunOS 4.1.3 and SunOS 5.3 NFS packets are accepted from any 
address. They have no easy way to get the addresses of all interfaces 
(they are not in the nameserver). 

I will now revert to the older patch without the connect(), and I hope to
have provided at least some justification to make this standard. 

Comments?

Greetings, Swen



home help back first fref pref prev next nref lref last post