He estado trabajando con tablas de rutas personalizadas en Linux, y estoy un poco confundido por parte de la documentación y el comportamiento del comando "ip route". Parece que los únicos valores válidos deberían ser 0-255 más los nombres definidos en / etc / iproute2 / rt_tables:
255 local
254 main
253 default
0 unspec
Esto dejaría 1-252 para tablas personalizadas. Intentar usar un nombre de tabla indefinido da un error:
$ ip route show table kermit
Error: argument "kermit" is wrong: table id value is invalid
Sin embargo, parece que puedo usar números muy superiores a 255 sin error:
$ 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
En algún momento, las cosas se ponen aún más extrañas. Justo en maxint (2 ^ 31), se "desborda" en la tabla local (255):
$ ip route show table 2147483647
[no output]
$ ip route show table 2147483648
[exact output of table 255 (local)]
¿Alguien puede explicar lo que está pasando? ¿Existen realmente tablas de enrutamiento personalizadas de maxint que se puedan usar?
$ 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
(sin salida). El comportamiento anterior podría haber sido mostrar la tabla "no especificada" 0 (no 255), pero 0 incluirá 255 (y cualquier otra mesa).