我一直在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自定义路由表吗?