Предположим, два шлюза существуют в одной сети. Если я правильно понимаю, таблица IP-маршрутизации на компьютере отправителя решает, какие пакеты маршрутизируются через какой шлюз.
Таблицы IP-маршрутизации содержат IP-адрес шлюза.
Как этот IP-адрес шлюза используется при отправке IP-пакетов?
iptables
ip-routing
Саймон Фаршид
источник
источник
Ответы:
TL; DR: адрес шлюза сохраняется только в кадре Ethernet, который содержит этот пакет TCP / IP
Трафик сервера-> коммутатора-> маршрутизатора, а также трафик сервера-> коммутатора-> сервера, где IP-адресация фактически не играет никакой значимой роли. Это мир базового протокола, скорее всего, Ethernet. Так что это мир, который работает на MAC-адресации.
Таким образом, вам нужно только устранить путаницу, что шлюз по умолчанию - это IP-адрес. Это вроде ... при запуске ... но этот IP-параметр шлюза необходим только для выполнения одной задачи, а именно: у кого здесь 192.168.1.1? Ответ приходит, что шлюз MAC 88: 99: aa: bb: cc: dd: ee: ff. (Это запрос / ответ ARP, переводчик между двумя мирами.) Пакет направляется к этому MAC на уровне Ethernet, несмотря на то, что он может содержать другое назначение на уровне IP.
Таким образом, пакет помечается для отправки на выбранный шлюз путем кодирования его в поле «MAC-адрес назначения» кадра Ethernet. Поле определяет, какой шлюз в этой сети получит его, если имеется несколько шлюзов. («Кадр» - это базовая капсула, которая содержит пакет или часть пакета.)
источник
Заголовок дейтаграммы IP содержит только адресную информацию источника и получателя. Исходя из пункта назначения, маршрутизатор должен знать, куда направить пакет дальше, и эта информация хранится в таблице маршрутизации.
Может быть статическая информация о маршруте для адреса или его подсети, а для остальных используется шлюз по умолчанию . Это обычно имеет место в локальной сети: может быть статическая маршрутизация в другие локальные сети и шлюз по умолчанию для остальных, т.е. Интернета. В случае нескольких шлюзов по умолчанию, т. Е. Маршрутов к
0.0.0.0
или::
, активный выбирается по значению предпочтения или метрики .Ситуация усложняется, когда между пунктами назначения есть несколько маршрутов, как между провайдерами на уровне Интернета. Существует несколько методов для обмена информацией между маршрутизаторами: протокол маршрутизации (RIP), открытый кратчайший путь (OSPF) и протокол пограничного шлюза (BGP). Независимо от того, как эта информация распределяется, таблица маршрутизации знает следующий переход, а IP-пакет знает только о своем конечном назначении.
источник
Одна возможность состоит в том, что сеть настроена с протоколом избыточности первого перехода (FRHP), таким как VRRP или HSRP. FHRP имеет адрес виртуального шлюза, который используют хосты, и трафик, отправленный на виртуальный адрес, принимается одним из физических маршрутизаторов, который затем пересылает трафик. Если первичный маршрутизатор дает сбой, вторичный маршрутизатор может определить это и принять пересылку пакетов.
В любом случае пакеты не определяют путь, по которому они идут. Каждый пакет пересылается индивидуально и независимо от любых других пакетов на основе информации в таблице маршрутизации маршрутизатора, и пакеты в один и тот же пункт назначения из одного и того же источника могут принимать разные пути в случае изменения таблицы маршрутизации.
Маршрутизаторы изучают маршруты тремя способами:
источник
Короткий и простой ответ: он не закодирован в пакете или является целевым адресом Ethernet в зависимости от того, как вы на него смотрите. Стек IP / Ethernet проверяет, какой шлюз обрабатывает IP-адрес назначения, отправляет запрос ARP на IP-адрес шлюза, чтобы получить его MAC-адрес, а затем отправляет пакет на MAC-адрес шлюза. Затем шлюз пересылает пакет и снова делает то же самое. Это предполагает сеть Ethernet.
Я думаю, что я ответил на то, что вы спрашиваете. Я однажды удивился тому же. Ваш вопрос также может быть истолкован как то, как хост, учитывая конкретную таблицу маршрутизации, решает, в какой шлюз отправлять исходящий пакет.
источник
Конечно, одна деталь, на которую нужно обратить внимание, - это соответствие маршрута. Если я отправляю на 192.0.2.55/24 и маршрут доступен для трафика на 10.55.0.0/16, то этот маршрут игнорируется, потому что он не применяется.
Следующий критерий, который обычно рассматривается, - это иметь более конкретные маршруты, имеющие приоритет над более общими маршрутами. Под «конкретным» маршрутом я подразумеваю меньшие подсети. Другими словами, большее число при использовании нотации / CIDR и большие маски подсети при использовании нотации «маска подсети». Другими словами, сети назначения с меньшим количеством возможных адресов.
Таким образом, «шлюз по умолчанию», также известный как «последний шлюз», обычно указывает место назначения для всего трафика в сеть 0.0.0.0/0. Любой маршрут для меньшей сети будет «более конкретным» и будет иметь приоритет. Итак, 192.0.2.0/24 будет иметь больший приоритет.
В-третьих, маршруты обычно имеют другое поле, называемое «метрикой», или иногда другое имя, например «приоритет». Если у вас несколько сетей одинакового размера, это может оказать влияние.
Эти «метрические» значения могут быть чем-то, что генерируется автоматически (например, таким образом, высокоскоростная сеть используется для большей части трафика), но может быть скорректировано вручную.
Пакеты IP не содержат никакой информации о маршрутизации, за исключением указания IP-адреса назначения. Детали маршрутизации определяются оборудованием, которое обрабатывает маршрутизацию на этом пути, и такие детали обычно не помещаются в IP-пакет. (Следовательно, оборудование не ищет такие детали, поскольку его там нет. Поскольку оборудование не ищет такую информацию, было бы бессмысленно пытаться включать такую информацию.)
На странице 11 RFC 791 показана таблица в стиле «ASCII ART» информации, которая находится в IP-пакете. После этой таблицы этот документ показывает подробности (например, раздел «Опции» описан на стр. 15).
источник