Mam sieć, która musi być skonfigurowana jako pętla. Składa się z 3 węzłów, z których każdy ma dwa interfejsy. Poniższy schemat to wyjaśnia.
+--->(eth0) Node 1 (eth1)--->(eth0) Node 2 (eth1)--->(eth0) Node 3 (eth1)--->+
| 10.0.3.1 10.0.1.1 10.0.1.2 10.0.2.2 10.0.2.3 10.0.3.3 |
+--<----------------------------<--------------------------------------------+
Chcę wykonać polecenie ping z węzła 1 do węzła 3, więc żądanie przechodzi przez węzeł 2, a odpowiedź trafia bezpośrednio do węzła 1 z węzła 3.
node1$ ping 10.0.2.3
Skonfigurowałem węzły jako:
node1# route add -net 10.0.2.0/24 gw 10.0.1.2
node2# route add -net 10.0.3.0/24 gw 10.0.2.3
node3# route add -net 10.0.1.0/24 gw 10.0.3.1
Podczas uruchamiania polecenia ping z Węzła 1 dociera do Węzła 3. Jednak Węzeł 3 nie odpowiada, nie generuje nawet odpowiedzi (przynajmniej, że mogę przechwycić za pomocą wireshark).
Czy mógłbyś mi dać jakąś wskazówkę?
TA
źródło
Węzły poprawnie się nie powtarzają, aby zapobiec niekontrolowanemu nadawaniu mostu. Polecam uruchomić protokół Spanning Tree Protocol. Umożliwi to wprowadzenie w pełni funkcjonujących tras między wszystkimi węzłami. Nie mogę wymyślić innego sposobu, aby to zrobić, chyba że chcesz ograniczyć łączność między niektórymi łączami w warstwie 2 lub 3.
źródło
(
/sbin/route
jest przestarzałe, użyjip route
zamiast niego).Jeśli chcesz, aby Twoje pakiety podróżowały tylko w jednym kierunku, oznacza to, że każdy węzeł musi używać następnego węzła jako bramy, niezależnie od miejsca docelowego.
Jednak w większości dystrybucji filtrowanie ścieżek zwrotnych jest często domyślnie włączone. Filtrowanie ścieżki zwrotnej jest filtrem dla przychodzącego pakietu, który próbuje sprawdzić, czy odpowiedź na ten pakiet trafiłaby do tego samego interfejsu, w którym pakiet został odebrany. Jest to dobra rzecz w zwykłej sieci, w której routing jest symetryczny, ale w twoim przypadku potrzebujesz routingu asymetrycznego, więc możesz po prostu wyłączyć filtrowanie ścieżek zwrotnych w interfejsie, w którym odbierasz pakiety, lub przynajmniej je zmniejszyć, aby po prostu sprawdził, czy źródłowy adres IP jest routowalny:
Dokumentacja na temat filtrowania ścieżek zwrotnych i innych pokręteł jest dostępna w dokumentacji jądra, pod adresem
Documentation/networking/ip-sysctl.txt
. Gdzie znaleźć to zależy od twojej dystrybucji (lub po prostu przeglądaj siećip-sysctl.txt
).Szczęśliwego zapętlania!
źródło
rp_filter
brakowało). Naprawiono to i zaktualizowano odpowiedź o wskaźniki dokumentacji.