Ich habe unter Linux mit benutzerdefinierten Routentabellen gearbeitet und bin ein wenig verwirrt über die Dokumentation und das Verhalten des Befehls "ip route". Es scheint, dass die einzigen gültigen Werte 0-255 plus die in / etc / iproute2 / rt_tables definierten Namen sein sollten:
255 local
254 main
253 default
0 unspec
Dies würde 1-252 für benutzerdefinierte Tabellen belassen. Der Versuch, einen undefinierten Tabellennamen zu verwenden, führt zu einem Fehler:
$ ip route show table kermit
Error: argument "kermit" is wrong: table id value is invalid
Es scheint jedoch, dass ich Zahlen weit über 255 ohne Fehler verwenden kann:
$ ip route show table 1000
[no output]
$ ip route add 10.10.10.0/24 dev eth0 table 1000
[no output]
$ ip route show table 1000
10.10.10.0/24 dev eth0 scope link
Irgendwann wird es noch seltsamer. Genau bei maxint (2 ^ 31) "überläuft" es in die lokale Tabelle (255):
$ ip route show table 2147483647
[no output]
$ ip route show table 2147483648
[exact output of table 255 (local)]
Kann mir jemand erklären, was passiert? Gibt es tatsächlich benutzerdefinierte maxint-Routingtabellen, die verwendet werden können?
$ ip -V
ip utility, iproute2-ss180813
$ ip route list table 4294967296
Error: argument "4294967296" is wrong: table id value is invalid
$ ip route list table 4294967295
(keine Ausgabe). Das vorherige Verhalten bestand möglicherweise darin, die "unspec" -Tabelle 0 (nicht 255) anzuzeigen, 0 enthält jedoch 255 (und eine beliebige) andere Tabelle)