Jak przekierować tylko określoną podsieć (źródłowy adres IP) do określonego interfejsu?

31

Jak przekierować tylko określoną podsieć (źródłowy adres IP) do określonego interfejsu?
System operacyjny: Linux

Wiem, że mogę to łatwo zrobić przez docelowy adres IP, używając czegoś takiego

route add 1.2.3.4/24 dev eth4

ale nie widzę, jak można trasować w oparciu o źródłowy adres IP.

Alex
źródło

Odpowiedzi:

30

Musisz użyć routingu opartego na zasadach. Coś w rodzaju

ip rule add from <source>/<mask> table <name>
ip route add 1.2.3.4/24 via <router> dev eth4 table <name>

<name>jest nazwą tabeli podaną w /etc/iproute2/rt_tableslub można użyć identyfikatora numerycznego ...

To prawie mówi, że cały ruch z 1.2.3.4/24będzie kierowany przy użyciu tablicy routingu <name>. IIRC nie używa domyślnej tabeli po przejściu przez to, więc jeśli potrzebujesz innych tras (np. Domyślnej bramy), musisz również dodać je do tabeli.

Lis
źródło
1
jedna poprawka (ale nie jestem pewien, czy Twoja też będzie działać. dla drugiego polecenia: ip route add default dev eth4 table <name>( tablemyślę, że dyrektywa powinna iść na końcu, tak jak w pierwszym poleceniu ... również defaultmoże zostać zastąpiona podsiecią, tak jak w twoim przykładzie )
Alex