Pracowałem z niestandardowymi tabelami tras w systemie Linux i jestem nieco zdezorientowany niektórymi dokumentacjami i zachowaniem polecenia „ip route”. Wydaje się, że jedynymi prawidłowymi wartościami powinny być 0-255 plus nazwy zdefiniowane w / etc / iproute2 / rt_tables:
255 local
254 main
253 default
0 unspec
Pozostawiłoby to 1-252 dla tabel niestandardowych. Próba użycia niezdefiniowanej nazwy tabeli powoduje błąd:
$ ip route show table kermit
Error: argument "kermit" is wrong: table id value is invalid
Wydaje się jednak, że mogę bez błędów używać liczb znacznie wyższych niż 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
W pewnym momencie robi się jeszcze dziwniej. Bezpośrednio na maxint (2 ^ 31) „przepełnia się” do lokalnej tabeli (255):
$ ip route show table 2147483647
[no output]
$ ip route show table 2147483648
[exact output of table 255 (local)]
Czy ktoś może wyjaśnić, co się dzieje? Czy faktycznie istnieją maksymalne niestandardowe tabele routingu, których można użyć?
$ 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
(brak danych wyjściowych). Poprzednie zachowanie mogło polegać na pokazywaniu tabeli „nieokreślonej” 0 (nie 255), ale 0 będzie zawierać 255 (i dowolne inny stół)