[SAGE-MUC] wie Linux/NFSv3 client source address fuer mount requests setzen?

Andreas Jellinghaus aj at dungeon.inka.de
Sa Jul 10 07:30:15 CEST 2010


Am Samstag 10 Juli 2010, um 02:12:33 schrieb Armin Kunaschik:
> Was heisst den eigentlich "multi-homed"? Sind da mehrere Adressen aus dem
> selben Subnetz konfiguriert? Warum eigentlich? Wenn ja, sollte eigentlich
> immer die "Haupt"-Adresse als Quell-Adresse verwendet werden. Ich meine
> damit die Adresse, die auf ethX und nicht die auf ethX:0... definiert ist.
> Und im Allgemeinen ist das auch das sinnvollste weil uebersichtlich und
> schnell nachvollziehbar.

Das ist eine Illusion. "ethX" und "ethX:*" ist eine künstliche trennung, die
es eigentlich gar nicht gibt. Eher ein überbleibsel das erfunden wurde für
kaputte programme, denen man sowas vorspielen muss.

normal konfiguriert man die netzwerk-interfaces mit dem "ip" tool, und da
kann man beliebig viele ip addressen auf ein interface setzen - die alle
gleichberechtigt sind. die ":0" emulation für aliase braucht man nicht,
und richtig gut funktioniert die auch nicht, wenn man haarige setups debugged.

genau genommen, wenn man den netzwerk-experten auf linux kernel zuhört,
gibt es nicht mal interface-gebundene ip addressen. eine ip gehört dem
host als ganzes, und wenn eine arp anfrage auf einem netzwerk interface
reinkommt, darf er diese beantworten, wenn er diese ip addresse hat.
auf welchem interface die frage reinkommt und auf welchem interface die
ip addresse konfiguriert ist, das spielt dabei eigentlich keine rolle -
die arp antwort muss nur auf dem gleichen interface wieder heraus.

da es somit mindestens drei verschiedene vorstellungen davon gibt, wie
ein linux system mit mehreren ip addressen arbeitet (alias interfaces/
interfaces mit vielen ip addressen / host-zuordnung der ip addresse),
wundert es dann auch nicht, das im detail immer wieder viele programme
nicht so funktionieren, wie man das erwartet.

> Ich koennte mir aber vorstellen, dass mit Host-Routen hier was zu machen
> ist. Siehe "man ip", dort "src ADDRESS", evtl. auch mit iptables und einer
> Art outgoing-NAT. Sowas macht das Ganze dann aber noch unuebersichtlicher
> und fehleranfaelliger. Mein einfacher, pragmatischer (sorry) Vorschlag
> ist: Keep it simple! Interfaces mit nur einer Adresse je Subnetz
> konfigurieren oder beide Rechner in unterschiedliche Sub-Netze stellen.

wenn man mehrere ip addressen auf einem interface hat, dann seh ich das 
problem unabhängig davon, ob die im gleichen subnetz oder in verschiedenen
subnetzen sind. warum soll das wichtig sein?

aber ich stimme voll zu: der nfs server hat eine ip addresse, in der
routing tabelle wird die nachgeschlagen vom kernel, und da steht ein
"src <lokale-ip>" drinn, und diese lokale-ip solle jegliche software
verwenden, wenn es mit dem nfs server spricht.

einen unterschied gibt es nur, wenn die nfs-client software selbst
meint es müste erstmal festlegen, welche lokale ip es nutzt, bevor es
mit dem server spricht. solches verhalten ist aber aus expertensicht
eh nicht gut, denn das kollidiert mit dynamischen ip addressen (man
danke an failover systeme, bei denen dynamisch eine ip von einem rechner
auf einen anderen übertragen wird - da ist es besser, wenn man die software
nicht (neu-)starten muss, sondern diese bereits auf dem passenden port
lauscht, und ihr eine ip addresse mehr oder weniger auf dem system egal
ist).

So, viel erfolg im netzwerk/nfs jungel!

Gruß, Andreas