Я работал с пользовательскими таблицами маршрутов в Linux, и меня немного смущает некоторая документация и поведение команды «ip route». Кажется, что единственными допустимыми значениями должны быть 0-255 плюс имена, определенные в / etc / iproute2 / rt_tables:
255 local
254 main
253 default
0 unspec
Это оставило бы 1-252 для пользовательских таблиц. Попытка использовать неопределенное имя таблицы приводит к ошибке:
$ ip route show table kermit
Error: argument "kermit" is wrong: table id value is invalid
Тем не менее, похоже, что я могу использовать числа намного выше, чем 255 без ошибок:
$ 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
В какой-то момент все становится еще более странным. Прямо в maxint (2 ^ 31) он «переполняется» в локальной таблице (255):
$ ip route show table 2147483647
[no output]
$ ip route show table 2147483648
[exact output of table 255 (local)]
Кто-нибудь может объяснить, что происходит? Есть ли на самом деле maxint настраиваемые таблицы маршрутизации, которые можно использовать?
$ 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
(без вывода). Предыдущее поведение могло показывать таблицу «unspec» 0 (не 255), но 0 будет включать 255 (и любые другой столик)