7

Что содержит таблица маршрутизации, только адрес LAN назначения со следующим прыжком? Но что означает этот следующий прыжок, потому что, глядя на этот пример

Я не вижу общего правила, как определяется следующий прыжок. (для сетевого назначения 10.0.0.0, 11.0.0.0, 13.0.0.0 я понимаю, но не другие)

Я также использую команду 'ip route add <> src <> via <>, что должно быть в <>? Я использую Linux Ubuntu как виртуальную машину в virtualbox

3 ответа3

5

Я предполагаю, что ошибка «rtnetlink reply: invalid аргумент» связана с тем, что IP-адрес, маска и шлюз не принадлежат к одному и тому же классу (класс A, B или C); или потому что "статический" адрес конфликтует с некоторым диапазоном адресов DHCP.

Таблица для R8 в вашей схеме не является таблицей маршрутизации, но описывает, что R8 будет делать с адресами. Там, где написано, например, 10.0.0.0, следует понимать сегмент сети 10.0.0.0/24, а не IP-адрес.

Для подсетей, не доступных напрямую из R8, таких как 16.0.0.0/24, таблица маршрутизации направит сообщение маршрутизатору, ближайшему к целевой сети, и этот маршрутизатор затем передаст сообщение в соответствии со своим собственным таблица маршрутизации. В этом случае сообщения адресованы 16.0.0.X передается на шлюз 10.0.0.2, который является адресом R7, который перенаправит их нужному получателю.

Команда маршрутизации, выполняемая в R8, должна выглядеть примерно так:

ip route add 16.0.0.0/24 via 10.0.0.2 src 10.0.0.1

Параметр src используется при добавлении маршрута к многосетевому хосту, чтобы контролировать IP-адрес источника, с которого отправляется ваш хост. Это может быть опущено в простых случаях. Это гарантирует, что возвращаемое сообщение будет возвращено через подсеть 10.0.0.0/24, но другие значения могут использоваться, если мы по какой-то причине предпочитаем R7 не возвращать сообщение через эту подсеть.

Обратите внимание, что src, который вы предоставляете, будет влиять только на трафик, исходящий с вашей стороны. Если сторонний пакет маршрутизируется, он, очевидно, уже будет иметь исходный IP-адрес, поэтому он обычно будет передаваться без изменений (если только не используется NAT, и это также можно переопределить).

Отмечу, что в общем случае не нужно указывать маршруты для каждого пункта назначения. Точно так же, как компьютер может указать шлюз по умолчанию в своей таблице маршрутизации, который является универсальным адресом, который получает все сообщения на неизвестные ему адреса, так же, как маршрутизатор имеет свою собственную таблицу маршрутизации, которая может содержать шлюз. Адрес шлюза маршрутизатора представлен маршрутом по умолчанию 0.0.0.0 .

Обратите внимание, что вполне возможно даже настроить схему шлюзов в сети, например:
R1 ➝ R4 ➝ R8 ➝ R7 ➝ R6 ➝ R2 ➝ R1.
Количество прыжков здесь не оптимизировано, но сообщения все равно будут поступать из каждой подсети в любую другую подсеть. Хороший дизайн сети обычно включает один или несколько централизованных маршрутизаторов, чтобы минимизировать количество переходов.

2

Другие находятся на расстоянии более одного прыжка (маршрутизатора). Что касается маршрутизатора R8, он хочет знать только используемый интерфейс и IP-адрес следующего маршрутизатора в линии, чтобы достичь сети назначения, затем он переходит к следующему маршрутизатору, и этот маршрутизатор использует свою собственную таблицу маршрутизации для определения следующего хмель. Таким образом, чтобы добраться до сети 15.0.0.0, таблица маршрутизации определяет интерфейс 3, который является 13.0.0.4, и переход является следующим маршрутизатором, к которому он идет, который является 13.0.0.2. Как только трафик будет получен R2, R2 будет использовать свою собственную таблицу маршрутизации для определения наилучшего маршрута к сети 15.0.0.0, которая будет выходить за пределы интерфейса 15.0.0.1.

1

Я не уверен, откуда ваш дизайн и таблица маршрутизации. В любом случае, в такой среде, как ваша, маршруты к удаленным сетям обычно определяются через протоколы маршрутизации (т. Е. Динамическая маршрутизация); использование статических маршрутов (определяемых пользователем / администратором) со всеми имеющимися у вас избыточными путями в конечном итоге вызовет петли маршрутизации или черные дыры.

Другими словами, каждая подсеть вашей диаграммы может быть достигнута через каждый интерфейс R8, в зависимости от конфигурации других маршрутизаторов.

Например: если вы определите интерфейс 1 R8 как следующий переход для 14.0.0.0 (имеется в виду, что пакеты предназначены для любого IP-адреса 14.0.0.0/? в подсеть будет отправлен интерфейс 1), и если R4 (фактический следующий переход из интерфейса 1 R8) имеет другую статическую связь с 14.0.0.0 через R1, ваш пакет пересечет R8-> R4-> R1-> Destination , С другой стороны, если в этом примере вы все еще отправляете свой пакет для 14.0.0.0 на R4, но R4 настроен с другим статическим для 14.0.0.0, который указывает на R8, у вас будет цикл маршрутизации, и ваш пакет будет отказов между R8 и R4, пока не истечет его TTL.

Та же теория применима к любой другой удаленной сети, такой как 12.0.0.0, где менее очевидно, должен ли R8 пересылать свой пакет в R2 или R4.

Главное, что нужно помнить, это то, что IP-пакеты не имеют памяти, они просто пересылаются путем оценки их назначения (т. Е. Маршрутизаторы не заботятся об интерфейсе, откуда был получен пакет - если вы не используете такие вещи, как source- роутинг но тут дело не в этом).

Таблица, которую вы опубликовали, не показывает, используется ли статическая или динамическая маршрутизация (она также пропускает подсеть этих сетей), но если это не конкретное теоретическое упражнение, вам нужна динамическая маршрутизация.

Динамическая маршрутизация может определять наилучший путь от маршрутизатора до сети назначения, используя различные параметры, такие как количество переходов, пропускная способность, задержка и т.д. (В зависимости от конкретного протокола динамической маршрутизации). Кроме того, они могут правильно управлять сбоями избыточных каналов.

В качестве другого примера, если вы решите поместить статическое значение для 12.0.0.0, указывающее на сбои маршрутизатора R3 и R3, вы продолжите пересылать пакеты, предназначенные для 12.0.0.5 (например), в черную дыру. Если вы решите сбалансировать нагрузку до 12.0.0.0 с 2 маршрутами (с одинаковой метрикой) через R3 и R4, если R4 выйдет из строя (или один из его интерфейсов не работает), R8 продолжит пересылку пакета 1 в R3, пакет С 2 по R4, пакет с 3 по R3 и так далее. Это вызовет, по-видимому, случайные вещи, потому что, если пакеты используют TCP, пропущенные будут повторно переданы, что сделает менее очевидным, что половина вашего трафика будет перегружена (например, прерывистая потеря линии некоторых служб, медлительность и т.д.).

Если вы используете Linux, Quagga может быть программным обеспечением для динамической маршрутизации, но предполагается, что другие маршрутизаторы используют протокол динамической маршрутизации.

Однако, если ваша цель - установить статический маршрут, эти команды должны работать (я предполагаю, что /24, но если это классно, то это может быть /8):

ip route add 14.0.0.0/24 dev eth3

то же самое из:

ip route add 14.0.0.0/24 via 13.0.0.2

В любом случае, второй предпочтительнее в сети с множественным доступом (не требуется многоадресный / широковещательный трафик, тонны ARP-запросов и т.д.).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .