Назад | Перейти на главную страницу

Установка исключений для маршрута подсети

У меня в Linux есть довольно простая стандартная таблица маршрутизации:

default via 192.168.1.1 dev eth0  proto static
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.162  metric 1

Теперь мне нужно направить определенную подсеть на другой шлюз. Пока нет проблем, просто добавьте

10.0.0.0/8 via 192.168.1.2 dev eth0

Однако есть подмножество того, что НЕ ДОЛЖНО туда идти. Это работает:

10.0.2.0/24 via 192.168.1.1 dev eth0

Но я бы предпочел не повторять там шлюз по умолчанию; Я хотел бы иметь возможность просто сказать: «для 10.0.2.0/24 делайте то, что вы сделали бы, если бы не был определен маршрут 10.0.0.0/8»

Как это сделать? (Помимо замены 10.0.0.0/8 кучей более конкретных маршрутов, чтобы тщательно избегать 10.0.2 / 24)

Маршрутизация подбирается по мере выигрыша.

Это:

10.0.2.0/24 via 192.168.1.1 dev eth0

Более конкретно, чем это:

10.0.0.0/8 via 192.168.1.2 dev eth0

/24 против /8

Так что просто добавьте оба маршрута, трафик для 10.0.2.0/24 будет соответствовать этому маршруту, все остальное будет соответствовать менее конкретному маршруту / 8.

Помните, что ваш маршрут по умолчанию - 0.0.0.0/0, который является наименее специфичным CIDR из существующих, поэтому все остальные маршруты совпадают до вашего маршрута по умолчанию. (192.168.1.0/24 это часть 0.0.0.0/0 Помните)

Почему бы не добавить маршрут к 10.0.0.0/8 на 192.168.1.1? Таким образом, новым хостам в вашей сети не нужно знать об этом статическом маршруте, и вы можете оставить 192.168.1.1 в качестве маршрута по умолчанию и поручить ему поиск одноразовых сетей, таких как 10.0.2.0/24 и в более общем плане 10.0.0.0. / 8.