Шлюз подсети должен быть «настоящим» компьютером?

13

Является ли шлюз всегда реальным компьютером или просто «логическим» объектом, который может находиться по любому адресу, кроме широковещательного IP-адреса?

Симо
источник
9
Современный и, возможно, более правильный термин для шлюза - это маршрутизатор . Маршрутизаторы могут существовать исключительно в программном обеспечении, обычные компьютеры, такие как ПК, ноутбуки и серверные системы, могут использоваться в качестве маршрутизаторов, но обычно используются специализированные аппаратные устройства
HBruijn
2
Что вы подразумеваете под "логической сущностью"?
Бармар
2
@HBruijn, в большинстве случаев шлюз является маршрутизатором. Общий термин - это то, что шлюз - это хост в сети, на который другие хосты отправляют трафик, предназначенный для другой сети. Это не значит, что это должен быть маршрутизатор. Это может быть прокси, ALG и т. Д. Кроме того, может быть угловой случай, когда любой трафик, предназначенный для другой сети, должен быть перехвачен и не переадресован шлюзом, и в этом случае это не маршрутизатор, поскольку он не маршрутизирует пакеты между сетями.
Рон
Держу пари, что система, которая способна принимать решения о пересылке на основе IP-адресов назначения, не обязательно должна быть завершена по Тьюрингу ... поэтому нет, маршрутизатор не обязательно должен быть компьютером (то же самое относится к одному уровню ниже для мостов и одному высокий уровень для шлюзов, хотя возможен в разной степени. Тем не менее, каждая такая система обычно представляет собой устройство (или набор устройств), которое может быть настроено административно или с помощью дополнительных приложений (таких как протоколы маршрутизации) - и даже может обрабатывать конфигурации, эти вещи, как правило, (специализированные) компьютеры.
Хаген фон
@ Barmar Я имею в виду, должен ли шлюз быть специализированным аппаратным устройством, таким как мост или маршрутизатор, или это может быть просто часть информации, такая как настройка на сервере, которая является изменчивой, если вы думаете с точки зрения языков программирования ,
Semo

Ответы:

29

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

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

Безумный Шляпник
источник
6
... Или хотя бы притворяться.
Шадур
2
@Shadur Меня интересует, как может работать маршрутизация, если маршрут по умолчанию только претендует на фактический, знаете, маршрутный трафик.
MadHatter
1
Сама маршрутизация не будет работать, но если все, что вы хотите разрешить, это просмотр, вы можете перехватить «шлюз» и запустить прозрачный прокси на портах 53, 80 и 443 и сохранить саму систему как можно более изолированной.
Шадур
7
OK. Я не согласен, но это не маршрут. Я придерживаюсь своего утверждения, что для того, чтобы маршрутизация работала, маршрутизатор должен фактически маршрутизировать, и, похоже, вы не согласитесь с этим.
MadHatter
1
Справедливо, но «шлюз», поскольку он используется в этом вопросе, является маршрутом по умолчанию, то есть следующим переходом последней инстанции. Это должно быть в состоянии получить вам не только какие - либо внутренние подсети , которые не имеют конкретные маршрутов, но и все остальное , а .
MadHatter
15

IP-адресом шлюза может быть любой действительный IP-адрес хоста в подсети, т.е. не сам сетевой адрес или широковещательный адрес. Этот IP-адрес не обязательно должен принадлежать одному компьютеру или маршрутизатору, это может быть «плавающий» IP-адрес, используемый несколькими шлюзами. Проверьте статьи Википедии о HSRP , VRRP , GLBP или CARP .

Например, когда подсеть 172.16.23.0/25, тогда:

  • сетевой адрес 172.16.23.0,
  • широковещательный адрес 172.16.23.127, и
  • диапазон допустимых адресов хоста от 172.16.23.1 до 172.16.23.126 включительно.

Шлюз должен быть любым из этих действительных адресов хоста, например, 172.16.23.65. Настройки вашего компьютера будут, например:

  • IP-адрес: 172.16.23.5
  • Маска подсети: 255.255.255.128
  • Шлюз по умолчанию: 172.16.23.65

Теперь, добавив один из протоколов избыточности первого перехода, фактические шлюзы (маршрутизаторы) могут иметь IP-адреса 172.16.23.1 и 172.16.23.2, но использовать виртуальный IP-адрес 172.16.23.65, чтобы представить себя в качестве шлюза по умолчанию для подсети. ,

Tommiie
источник
9

«Логическая сущность» в вашем использовании немного сбивает с толку. Но я постараюсь ответить на него как можно лучше.

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

Как вы, возможно, знаете, цель, которую выполняет шлюз по умолчанию, состоит в том, чтобы выступать в качестве объекта переадресации для всех запросов, которые а.) Компьютер еще не имеет в своей таблице маршрутизации или имеет запись, инструктирующую систему перенаправить запрос в IP-адрес, который является шлюзом и / или b.) И находится за пределами широковещательного домена Шлюз по умолчанию никогда не используется в ситуациях, когда два хоста находятся в одном широковещательном домене (т. Е. Топология сети, созданная коммутатором), поскольку система может использовать широковещательный адрес подсети, чтобы найти MAC-адрес системы, владеющей конкретным IP-адресом.

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

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

TL; DR - физическое устройство, скорее всего.

kelvintechie
источник
Вы можете иметь несколько разных IP-подсетей в одном широковещательном домене. В таких случаях трафик между этими хостами будет проходить через их шлюзы по умолчанию, если в таблицы маршрутизации хостов не добавлены дополнительные записи или не используются перенаправления ICMP.
Питер Грин
@PeterGreen Да, есть много странных случаев. Например, скажем, 192.168.0.0/24 и 10.0.0.0/24 находятся в одной физической локальной сети Ethernet, причем оба шлюза являются одинаковыми физическими маршрутизаторами в 192.168.0.1 и 10.0.0.1 соответственно. Если 192.168.0.100 пингует 10.0.0.100, первый шлюз будет ретранслироваться через шлюз. Шлюз также может отправлять перенаправления ICMP каждому хосту, сообщая им, что они находятся в той же локальной сети. Если это так, то каждый узел затем отправит запросы ARP, чтобы получить MAC-адреса своих одноранговых узлов, и вся дальнейшая связь будет происходить непосредственно между узлами (не через шлюз).
Алекс
Обратите внимание, что в вышеприведенном примере необходимо подтолкнуть узлы (через перенаправление ICMP) для широковещательной передачи запроса ARP для MAC-адреса узла в чужой сети. При отсутствии перенаправления хосты не будут отправлять ARP-запросы во внешней сети.
Алекс
5

Записи таблицы маршрутизации разрешают подсеть либо на шлюз, либо на сетевой адаптер.

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

0.0.0.0/0 via 192.168.0.1
192.168.0.0/24 dev eth0

Наиболее конкретный маршрут выигрывает для каждого пункта назначения, поэтому маршрут подсети имеет приоритет над маршрутом по умолчанию для адресов в подсети.

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

Таким образом, для пакета 1.1.1.1в пункт назначения ищется в таблице маршрутизации, возвращая маршрут по умолчанию, который имеет шлюз. Шлюз снова ищется, возвращая интерфейс Ethernet.

В Ethernet есть MAC-адреса, поэтому для адреса шлюза выполняется поиск ARP, а MAC-адрес шлюза используется для исходящего пакета (который все еще использует правильный адрес назначения в своем IP-заголовке).

Другие низкоуровневые транспорты работают по-другому, например, каналы PPP имеют «адрес одноранговой сети», поэтому маршрут их устройства использует сетевую маску / 32, и они пропускают разрешение ARP и просто отправляют пакеты как «широковещательные» по каналу PPP.

Некоторые стеки IP требуют ручного создания маршрута устройства, что делает это немного более очевидным:

ifconfig eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255 up
route add -net 192.168.0.0 netmask 255.255.255.0 dev eth0
route add default via 192.168.0.1
Саймон Рихтер
источник