So legen Sie die Standard-Quell-IP-Adresse (src) fest, wenn Sie mehrere IPs auf einer virtuellen Schnittstelle haben

6

Wie kann ich dem Netzwerk-Stack mitteilen, mit welcher IP-Adresse die Quelle (src) für die Kommunikation bei mehreren IP-Adressen auf einer virtuellen Schnittstelle sein soll?

auto eth0 
iface eth0 inet static
            address x.x.x.209
            netmask 255.255.255.0
            network x.x.x.0
            broadcast x.x.x.255
            gateway x.x.x.254

auto eth0:1
iface eth0:1 inet static
            address x.x.x.210
            netmask 255.255.255.0
            network x.x.x.0
            broadcast x.x.x.255
            gateway x.x.x.254

usw. usw.

Es scheint, als würde es das letzte in / etc / networking / interfaces auswählen

~# ip -s route get 173.194.67.113; 
173.194.67.113 via x.x.x.254 dev eth0  src x.x.x.210 
  cache  users 1 used 11 mtu 1500 advmss 1460 hoplimit 64

Aber dieses Verhalten ist unvorhersehbar. Ich habe ungefähr 30 IPs pro Schnittstelle zugewiesen, und manchmal ändert sich die (Scr-) Quell-IP.

Ich muss verstehen, wie es sich auswählt.

Ich habe versucht, die Metrik so einzustellen, dass sie den Quellcode standardisiert, aber anscheinend werden virtuelle Schnittstellen nicht unterstützt. NETLINK: Packet too small or truncated!

EDIT: Ubuntu 10.04 64bit

BEARBEITEN Wenn ich @ TheCleaners Link folge, ist meine / etc / network / interfaces jetzt viel sauberer. Es tut mir leid, dass Sie zuvor keine weiteren Informationen bereitgestellt haben. Es ist eine komplizierte Umgebung. Ich wollte nur wissen, wie der Kernel die Quelladresse bestimmt, wenn Sie beispielsweise ein apt-get-Update über die Befehlszeile ausführen. Das gesamte Load Banacing-Zeug, Failover usw. funktioniert großartig.

auto eth0
iface eth0 inet static
            address x.x.x.183
            netmask 255.255.255.0
            network x.x.x.0
            broadcast x.x.x.255
            gateway x.x.x.254
up ip addr add x.x.x.209 dev eth0 label eth0:1
up ip addr add x.x.x.210 dev eth0 label eth0:2
up ip addr add x.x.x.211 dev eth0 label eth0:3
up ip addr add x.x.x.212 dev eth0 label eth0:4
up ip addr add x.x.x.213 dev eth0 label eth0:5
up ip addr add x.x.x.214 dev eth0 label eth0:6
up ip addr add x.x.x.215 dev eth0 label eth0:7

IDK, wenn es behoben ist. aber soweit so gut. Ich renne nur, während ich schlafe 5; do ip -s route get 173.194.67.113; getan
für einige Zeit, um zu sehen, ob ich eine beständige IP habe, wenn ich ausgehend verbinde.

Das funktioniert super! Vielen Dank an alle, die mitgemacht haben. Ich bin immer noch neugierig, warum genau sich meine Quell-IP geändert hat, aber ich habe es nur damit zu tun, dass ich eine falsch geschriebene Interface-Datei habe und weitermache.

Foocorpluser
quelle
Auf welches Betriebssystem (und auf welche Distribution unter Linux) bezieht sich dies?
EightBitTony
Schauen Sie sich dies an: serverfault.com/questions/232844/… (sehen Sie sich Craigs Antwort an)
TheCleaner
Wenn sich die Quell-IP-Adresse ändert, ist dies alles für Verbindungen, die nach außen hergestellt werden. Ändern Sie jemals die zugewiesenen IPs oder sind sie immer die gleichen 30 Adressen?
becomingwisest
1
Die IPs sind statisch und werden auch mit einem anderen Computer geteilt (über keepalived und VRRP). Zusätzlich zu den geteilten IPs hat jeder Server eine eindeutige zugewiesene IP. Es ist die eindeutige IP, die ich für alle ausgehenden Verbindungen erzwingen möchte. (Damit ich auf beiden Rechnern eine ordnungsgemäße Vernetzung haben kann (Sicherheitsupdates und dergleichen). Der Server dient als Lastausgleich für Haproxy. Ich habe dem Server mehrere IPS-Adressen zugewiesen, da dies der einfachste Weg ist, den Datenverkehr in Haproxy zu leiten.
Ich
Und was ist dein eigentliches Ziel? BTW - haben Sie versucht, die Netzmaske der logischen IPs auf 255.255.255.255 zu setzen?
Nils

Antworten:

2

Schließen Sie das Gateway nicht in die Alias-Zeilengruppe ein. Sie brauchen auch überhaupt keine 'Netzwerk'-Leitung.

auto eth0 
iface eth0 inet static
            address x.x.x.209
            netmask 255.255.255.0
            broadcast x.x.x.255
            gateway x.x.x.254

auto eth0:1
iface eth0:1 inet static
            address x.x.x.210
            netmask 255.255.255.0
hayalci
quelle
diese Linie? -> gateway xxx254
foocorpluser
Ja, ich habe meine Antwort erweitert.
Hayalci
okay, ich nehme an, es wird die Broadcast- und Gateway-Einstellung von den Eltern erben, macht Sinn. Vielen Dank.
Foocorpluser
Hayalcis Antwort ist vage in der Datei /usr/share/doc/initscripts-*/sysconfig.txt dokumentiert. Dort heißt es: "Die Netzwerknummern können unterschiedlich sein, aber alles andere kann gleich sein."
Stefan Lasiewski
Nur ein Follow-up-Bcast wurde nicht vom übergeordneten Gateway geerbt.
Foocorpluser