Routing między wieloma podsieciami

10

Powiedzmy, że chcę utworzyć sieć wewnętrzną z 4 podsieciami. Nie ma centralnego routera ani przełącznika. Mam „podsieć zarządzania” dostępną do łączenia bram we wszystkich czterech podsieciach (192.168.0.0/24). Ogólny schemat wyglądałby tak:

10.0.1.0/24 <-> 10.0.2.0/24 <-> 10.0.3.0/24 <-> 10.0.4.0/24

Innymi słowy, konfiguruję pojedyncze pole linux w każdej podsieci z 2 interfejsami, 10.0.x.1 i 192.168.0.x. Działają one jako urządzenia bramy dla każdej podsieci. Będzie wiele hostów dla każdej podsieci 10.x / 24. Inne hosty będą miały tylko 1 interfejs dostępny jako 10.0.xx

Chcę, aby każdy host mógł pingować się na innym podsieci. Moje pytanie jest pierwsze: czy jest to możliwe. Po drugie, jeśli tak, potrzebuję pomocy w konfiguracji iptables i / lub tras. Eksperymentowałem z tym, ale mogę tylko znaleźć rozwiązanie, które pozwala na pingowanie w jednym kierunku (pakiety icmp są tylko przykładem, ostatecznie chciałbym mieć pełne możliwości sieciowe między hostami np. Ssh, telnet, ftp itp.) .

greyline
źródło

Odpowiedzi:

8

Ok, więc masz pięć sieci 10.0.1.0/24, 10.0.2.0/24, 10.0.3.0/24, 10.0.4.0/24i 192.168.0.0/24, a cztery skrzynie routingu między nimi. Powiedzmy pola routingu mają adresy 10.0.1.1/192.168.0.1, 10.0.2.1/192.168.0.2, 10.0.3.1/192.168.0.3, i 10.0.4.1/192.168.0.4.

Będziesz musiał dodać trasy statyczne do innych 10.0.x.0/24sieci na każdym polu routera, używając poleceń takich jak poniżej (EDYCJA!):

# on the 10.0.1.1 box
ip route add 10.0.2.0/24 via 192.168.0.2
ip route add 10.0.3.0/24 via 192.168.0.3
ip route add 10.0.4.0/24 via 192.168.0.4

i odpowiednie trasy na innych skrzynkach routera. W polach bez routingu z tylko jednym interfejsem ustaw domyślną trasę do wskazywania 10.0.x.1. Oczywiście będziesz musiał także dodać adresy statyczne i maski sieciowe do wszystkich interfejsów.

Zauważ też, że linux domyślnie nie działa jako router, musisz włączyć przekazywanie pakietów za pomocą:

echo 1 > /proc/sys/net/ipv4/ip_forward

Powyższe ippolecenia nie powodują, że ustawienia są trwałe, jak to zrobić, zależy od dystrybucji.

Jak powiedziałem, nie testowałem tego i mogłem o czymś zapomnieć.

Johan Myréen
źródło
Dzięki za pomoc tutaj. To, co poradziłeś, działa, gdy wysyłam ping do routera (od 10.0.1.1 do 10.0.2.1), ale nie kiedy pinguję na innym hoście. Na przykład pingowanie od 10.0.1.1 do 10.0.2.2 powoduje, że żaden ruch nie jest kierowany do hosta 10.0.2.2. Czy sugerowałbyś w jakiś sposób manipulację iptables? Eksperymentowałem z tym przez kilka dni, ale bezskutecznie.
greyline,
Standardowe techniki routingu powinny być wystarczające. Oto lista kontrolna: 1. wszystkie adresy powinny być ustawione na hostach (np. Ip addr add 10.0.2.2/24 dev eth0), 2. trasy powinny być ustawione na czterech routerach jak wyżej, 3. trasa domyślna na urządzeniach innych niż router powinien być skonfigurowany tak, aby wskazywał na urządzenie routingu w sieci (np. ip route dodaje domyślnie przez 10.0.1.1), 4. cat / proc / sys / net / ipv4 / ip_forward na czterech urządzeniach routera powinien wydrukuj „1”.
Johan Myréen,
Poprawiłem błąd w powyższych poleceniach trasy ip. Testowałem również tę konfigurację, chociaż tylko z czterema komputerami: dwiema skrzynkami routingowymi i dwoma hostami po stronie 10.0.x.0. To działa!
Johan Myréen,
Johan, dziękuję za twój dodatkowy wkład. Ta konfiguracja działa. Okazuje się, że obraz Linuksa, którego używałem, miał domyślne reguły iptables, które były problematyczne. Dziękuję za pomoc w nauce o tym.
greyline