Betrachten Sie das folgende Setup:
X@Y:~$ sudo ip link add link eth0 name eth0.3 type vlan id 3
X@Y:~$ sudo ip link add link eth0 name eth0.2 type vlan id 2
X@Y:~$ sudo ifconfig eth0.2 192.168.2.1/30
X@Y:~$ sudo ifconfig eth0.3 192.168.2.2/29
X@Y:~$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
...
192.168.2.0 0.0.0.0 255.255.255.252 U 0 0 0 eth0.2
192.168.2.0 0.0.0.0 255.255.255.248 U 0 0 0 eth0.3
Wie Sie sehen, haben beide Routen zwar überlappende Subnetze eth0.2
und eth0.3
installiert werden Wenn ich es jedoch versuche:
X@Y:~$ sudo ifconfig eth0.3 192.168.2.3/29
X@Y:~$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
...
192.168.2.0 0.0.0.0 255.255.255.252 U 0 0 0 eth0.2
Sie können sehen, dass die Route für eth0.3
ist nicht da. Was ist der Hauptunterschied? Die konfiguriert eth0.3
ip ist die Broadcast-Adresse des konfigurierten Subnetzes eth0.2
. Okay, das ist zwar durcheinander, aber die Benutzeroberfläche ist online, das einzige, was nicht passiert, ist das Hinzufügen der Route zur Routentabelle. Und eigentlich kümmert sich die Routentabelle nicht einmal um diese Broadcast-Adresse:
X@Y:~$ sudo route add -net 192.168.2.0/29 dev eth0.3
X@Y:~$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
...
192.168.2.0 0.0.0.0 255.255.255.252 U 0 0 0 eth0.2
192.168.2.0 0.0.0.0 255.255.255.248 U 0 0 0 eth0.3
X@Y:~$ sudo ip link del eth0.3
X@Y:~$ sudo ip link del eth0.2
Gibt es eine Möglichkeit, dies zu umgehen? Bevor Sie erklären, dass ich es selbst herausgefunden habe, indem Sie die Route nachträglich hinzufügen: In meinem Setup geschieht das eigentliche ifconfig über ein Dhclient-Skript, das ich nicht bearbeiten kann. Wenn Sie also Route hinzufügen, müssen Sie den Dhclient einhaken, die IP von irgendwo zurücklesen und ausführen die Route fügen hinzu, was ziemlich langweilig ist. Ich hatte gehofft, ich könnte dieses Verhalten mit einigen Flags auf der Benutzeroberfläche ändern.
P.S. Dies ist natürlich kein echtes Netzwerkdesign, aber für ein Test-Setup erforderlich.