w jakiej kolejności analizowana jest tabela tras?

19

Na komputerze muszę wykonać następującą tabelę routingu:

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wlan0

Nie rozumiem, jak to jest analizowane, mam na myśli odgórne czy oddolne?

Jeśli jest analizowany z góry na dół, wszystko będzie zawsze wysyłane do routera w moim domu, nawet jeśli adres IP to 192.168.1.15; ale wiedziałem (niesłusznie?), że jeśli komputer znajduje się w tej samej sieci lokalnej, to po odzyskaniu miejsca docelowego MAC za pośrednictwem wiadomości rozgłoszeniowej mój komputer może wysłać wiadomość bezpośrednio do miejsca docelowego.

zer0uno
źródło

Odpowiedzi:

19

Tabela routingu jest używana w kolejności od najbardziej do najmniej określonej.

Jednak na Linuksie jest to trochę bardziej skomplikowane, niż można się spodziewać. Po pierwsze istnieje więcej niż jedna tabela routingu, a to, która tabela routingu jest używana, zależy od wielu reguł.

Aby uzyskać pełny obraz:

$ ip rule show
0:  from all lookup local 
32766:  from all lookup main 
32767:  from all lookup default

$ ip route show table local
broadcast 127.0.0.0 dev lo  proto kernel  scope link  src 127.0.0.1 
local 127.0.0.0/8 dev lo  proto kernel  scope host  src 127.0.0.1 
local 127.0.0.1 dev lo  proto kernel  scope host  src 127.0.0.1 
broadcast 127.255.255.255 dev lo  proto kernel  scope link  src 127.0.0.1 
broadcast 192.168.0.0 dev eth0  proto kernel  scope link  src 192.168.1.27 
local 192.168.1.27 dev eth0  proto kernel  scope host  src 192.168.1.27 
broadcast 192.168.1.255 dev eth0  proto kernel  scope link  src 192.168.1.27 

$ ip route show table main
default via 192.168.1.254 dev eth0 
192.168.0.0/23 dev eth0  proto kernel  scope link  src 192.168.1.27 

$ ip route show table default

$

localStół jest specjalna tabela routingu zawierające wysokie priorytetowych tras kontrolnych dla adresów lokalnych i sieciowych.

mainStół jest normalna tabela routingu zawierającą wszystkie trasy bez polityki. To także tabela, którą zobaczysz, jeśli po prostu wykonasz ip route show(lub ip row skrócie). Odradzam używanie starej routekomendy, ponieważ pokazuje ona tylko maintabelę, a jej format wyjściowy jest nieco archaiczny.

Tabela defaultjest pusta i zarezerwowana do przetwarzania końcowego, jeśli poprzednie domyślne reguły nie wybrały pakietu.

Możesz dodać własne tabele i reguły, aby używać ich w określonych przypadkach. Jednym z przykładów jest, jeśli masz dwa połączenia internetowe, ale jeden host lub podsieć musi zawsze być kierowany przez jedno konkretne połączenie internetowe.

Książka Policy Routing with Linux objaśnia to wszystko wyjątkowo szczegółowo.

wurtel
źródło
czy istnieje sposób na zmianę tego priorytetu?
Mheni
4

Tabela routingu jest zwykle stosowana w kolejności od „najbardziej konkretnej” do „najmniej konkretnej”. Miejsce docelowe 0.0.0.0z maską sieci 0.0.0.0, tj. Twoją domyślną trasą , jest najmniej konkretne z możliwych i dlatego zawsze będzie stosowane jako ostatnie.

Jeśli masz adres MAC innego komputera w sieci lokalnej, ale znajduje się on w innej podsieci, możesz dodać określoną trasę hosta dla tego komputera i prawdopodobnie uzyskasz komunikację.

roaima
źródło
s / zwykle / zawsze /. Jest to dość podstawowe w sposobie działania tabel routingu.
Celada,
1
@Celada Pominąłem wzmiankę o metrykach dla „tych samych konkretnych” tras. A potem jest routing zasad. Przynajmniej przez chwilę zwykle stoję .
roaima,