Некоторые устройства получают для управления только IP-адрес, который не привязан к какому-либо конкретному интерфейсу. Другие работают так, как вы описали. Это зависит от устройства, модели и программного обеспечения / прошивки. Кроме того, вам может потребоваться назначить разные IP-адреса для интерфейса в зависимости от требований задачи.
Джесси П.
3
Краткий ответ - сделать маршрутизаторы возможными. Маршрутизатор - это просто компьютер (в настоящее время, наиболее вероятно, Linux), который должен подключаться к различным сетям, поэтому он должен иметь возможность иметь несколько IP-адресов. Множество IP-адресов на устройство появилось примерно в то же время, что и изобретение маршрутизатора.
Slebetman
Нет ответа с исторической информацией? Разочарован :-)
Даниэль В.
Этот вопрос не имеет смысла или не является конкретным или полным логическим утверждением. Это просто сочетание слов. IP-адрес - это целое число, используемое в интернет-протоколе, определенном в различных запросах комментариев. Я не верю, что понятие «устройство» или «интерфейс» когда-либо были определены.
Маршал
Например, два приложения Windows, работающие на одном физическом компьютере, могут использовать сеть, которая использует протокол ip для связи. Есть плюсы и минусы в этом. Тем не менее, опять же, протокол ip - это абстрактная логическая вещь, которая работает поверх базовых уровней, которые сами по себе могут быть абстрактными так же, как и IP.
маршал ремесло
Ответы:
25
Подключение интерфейса к сети делает его частью этой сети. Следовательно, IP-адрес является свойством соединения, а не хоста.
Аналогично, хост может иметь много сетевых подключений и, соответственно, IP-адресов. Разные интерфейсы часто имеют разные функции, поэтому важно различать их (например, внутренняя консоль, публичные сервисы, iSCSI).
Маршрутизаторы требуют нескольких IP-адресов для своих интерфейсов.
Тем не менее, давайте посмотрим на упрощенный пример:
У меня есть компьютер с тремя интерфейсами: eth0(проводной Ethernet), wlan0(wifi) и vboxnet0(virtualbox). Один из интерфейсов подключен к внутренней сети, один - к Интернету, а последний - к сети виртуальных компьютеров. Допустим, у меня есть только один адрес, 10.1.2.3, и я хочу отправить много пакетов на 192.168.1.2, доступных в одной из этих сетей - куда мне их отправлять? Нельзя просто отправить их куда угодно, такое поведение затопит все сети в короткие сроки.
Но если интерфейс eth0 имеет 192.168.1.3, wlan0 имеет 10.1.2.3, а vboxnet0 имеет 172.0.0.1, то в таблице маршрутизации по умолчанию, вероятно, будет указано «отправить его из eth0». (Очевидно, что это может быть намного сложнее с более сложными правилами маршрутизации).
И наоборот, я могу захотеть запустить службу только на интерфейсе, открытом для частной сети - поэтому, когда запрос поступает на другой интерфейс, он вообще не обрабатывается.
Почему вы не можете знать, что доступно на каждом интерфейсе без разных IP-адресов?
Paŭlo Ebermann
Вы могли бы (и это действительно возможно иметь такие правила маршрутизации), но затем вы переходите на более низкий уровень абстракции, вместо того, чтобы сказать «отправить что-либо не соответствующее 10.1.2.1» и покончить с этим (уровень OSI) 3), теперь вам нужно обработать «какой из интерфейсов мне нужен (уровень 2)». Это также возможно , но абстракция упрощает дела.
Писквор покинул здание
2
И еще одна вещь - IP-адреса назначаются для других, чтобы связаться с вами, а также. Скажем, вы подключены через Wi-Fi и через Ethernet; каждый из интерфейсов входит в отдельную сеть, но обе сети могут выходить в Интернет. Теперь вы отправляете пакет в 1.2.3.4 с вашего 10.1.2.3 - каков обратный маршрут? Wi-Fi или проводной? Вы можете догадаться, но если вы ошибаетесь, пакет возвращается через неправильный интерфейс и может быть отброшен. (Да, есть случаи, когда вам нужно несколько интерфейсов с одним и тем же IP-адресом, или iface с большим количеством IP-адресов, или iface без вообще никакого addr - необычно)
Писквор покинул здание
5
Случай 1: Маршрутизаторы
Теоретически это было бы возможно.
Однако обычно IP-пакет отправляется «напрямую» в пункт назначения, когда IP-адрес «соответствует» определенной сетевой маске (например, 10.0.0.0/28); в противном случае пакет отправляется через маршрутизатор.
Это означает:
Маршрутизатор соединяет две сети; каждая из двух сетей имеет сетевую маску
Пакеты, отправляемые с одного компьютера на другой в одной из двух сетей, не проходят через маршрутизатор.
Это означает, что IP-адреса каждого компьютера соответствуют сетевой маске сети, к которой они подключены.
Пакеты, отправляемые на маршрутизатор (включая пакеты, маршрутизируемые маршрутизатором!), Не отправляются с компьютера на маршрутизатор через второй маршрутизатор.
Это означает, что IP-адрес маршрутизатора должен соответствовать сетевым маскам обеих сетей.
Однако IP-пакеты, отправляемые с одного компьютера в одной сети на компьютер в другой сети, отправляются через маршрутизатор.
Это означает, что IP-адреса компьютеров в одной сети не должны совпадать с маской сети другой сети.
Почти невозможно выбрать IP-адрес и две сетевые маски таким образом, чтобы один IP-адрес соответствовал обеим сетевым маскам, но многие IP-адреса соответствуют только одной сетевой маске.
Случай 2: разные частные сети
У нас может быть случай, что компьютер подключен к двум частным сетям, которые не могут обмениваться данными друг с другом.
В этом случае компьютер может иметь одинаковый IP-адрес в обеих сетях.
В случае IPv4 большинство ОС не будут поддерживать это, потому что ОС используют сетевые маски двух сетей, чтобы различать их. Сети должны иметь разные сетевые маски ...
В случае IPv6 (с использованием «локальных ссылок») компьютер может иметь одинаковый (локальный) IP-адрес в двух разных сетях - и, следовательно, две сетевые карты могут иметь один и тот же IP-адрес!
В одном конкретном случае спецификации TSN для Ethernet позволяют использовать несколько интерфейсов с одним и тем же IP-адресом, маской и MAC-адресом для поддержки бесшовных избыточных путей для детерминированной сети Ethernet (802.1cb). Избыточность обрабатывается на уровне MAC (обнаружение упакованных дубликатов и игнорирование избыточной информации), поэтому с точки зрения хостов это один интерфейс.
Чтобы маршрутизатор мог передавать пакеты между двумя сетями, он должен существовать в обеих сетях.
Маршрутизатор будет иметь «руку» внутри каждой сети - или, как мы ее называем, интерфейс . А интерфейс существует в сети, назначая ему IP-адрес в сети.
Следовательно, при настройке маршрутизатора, каждый интерфейс получает IP - адрес для идентификации сети , которым принадлежит , что маршрутизатор внутри .
Отказ от ответственности: ссылка выше на мой блог. Мой блог не монетизирован. Я не получаю выгоды от того, что вы читаете это. Я предоставляю ссылку просто для вашей (и любой другой читатель) пользы.
Хороший и краткий ответ, очень четкий способ объяснить почему .
Стилз
3
Мне было интересно, почему мы должны давать IP-адреса для каждого интерфейса? Разве недостаточно для каждого устройства?
Позвольте мне начать с оспаривания вашего предположения. Почему вы говорите, что это не так, как ведут себя машины? Скажем, я назначил 192.168.1.1/24 для eth1 и 192.168.2.1/24 для eth2. Помимо установки маршрута для 192.168.1.0/24 out eth1 и 192.168.2.0/24 out eth2 и определения предпочтительного исходного IP-адреса для пакетов, отправляемых по этому маршруту, насколько действительно имеет значение, какому интерфейсу я назначаю IP-адрес? Что действительно меняется? В каком смысле машина не ведет себя так, как будто все IP-адреса, назначенные интерфейсам на машине, принадлежат машине?
Оба подхода используются. Наиболее распространенный подход на самом деле является гибридом этих двух подходов.
В экстремальном случае «дать устройству IP-адрес» можно представить устройство, которое ведет себя так, как будто все его интерфейсы подключены к фильтрующему мосту с одним IP-адресом, назначенным мосту.
В экстремальной ситуации «дать каждому интерфейсу IP-адрес» вы можете представить устройство, которое ведет себя так, как если бы каждый интерфейс был похож на отдельную машину. (Посмотрите здесь, если вы думаете, что именно так устройства работают в настоящее время, или подумайте о ком-то, кто подключается к IP-адресу, назначенному одному интерфейсу, но пакеты приходят и отправляются другим.)
На практике большинство машин работают где-то посередине. Они действуют так, как если бы все IP-адреса принадлежали машине. Назначение IP-адреса определенному устройству на самом деле не делает ничего особенного, кроме указания ОС установить маршрут по умолчанию из этого интерфейса и установить исходный IP-адрес по умолчанию для пакетов, отправляемых этим интерфейсом, где IP-адрес источника отсутствует. т вынужден.
В противном случае они ведут себя так, как будто все IP-адреса принадлежат машине. Способ обработки пакета мало зависит от того, на каком интерфейсе он получен - пакеты с исходным IP-адресом, назначенным одному интерфейсу, полученному на другом, являются обычными. Какому интерфейсу назначен адрес, напрямую не влияет на какой интерфейс отправляется пакет, таблица маршрутизации определяет это.
В общем случае вам нужен один IP-адрес для каждой локальной сети, к которой вы подключаетесь, и именно так был определен TCP / IP: каждый хост в данной локальной сети имеет IP-адрес, который позволяет:
направлять трафик в соответствующую локальную сеть на основе IP-адреса назначения
направлять трафик к соответствующему устройству в этой локальной сети (например, после поиска ARP в локальных сетях 802.x).
Пока у вас есть локальные сети с несколькими подключенными к нему устройствами (большинство локальных сетей 802.x, включая Ethernet, Wi-Fi), довольно сложно обойти это, если вы принципиально не измените работу TCP / IP.
Однако на самом деле этого можно избежать, хотя это довольно специфично.
Рассмотрим сеть, в которой есть только двухточечные соединения (двухточечная сеть Ethernet между двумя устройствами без коммутатора или концентратора, DSL-соединения, SONET / SDH-соединения, Frame Relay или VC ATM ...).
Обычное соглашение заключается в использовании / 30 для каждой ссылки, поэтому устройство на каждом конце имеет IP-адрес в этой ссылке.
Но вы можете использовать «IP-ненумерованный» и не связывать IP-адреса с этими ссылками. Теперь вы назначаете IP для интерфейса обратной связи устройства (на самом деле любой интерфейс, но loopback является самым простым для этой цели), и вы используете протокол динамической маршрутизации (IS-IS, OSPF, EIGRP ...). Этот протокол маршрутизации будет рекламировать, как маршрутизировать трафик на этот IP-адрес через различные ненумерованные ссылки.
IP-адреса включают информацию о маршрутизации. IP - адрес разделяется на две составляющие, на номер сети и номер хоста , на основании назначенной длину префикса (который первоначально был выражен в виде маски сети, и это до сих пор часто , как это внутренне реализовано в сетевых стеках).
Для правильной работы маршрутизации все устройства, подключенные к определенной сети, должны иметь адреса с одинаковым номером сети. Отправители определяют, находится ли получатель в той же или другой сети, сравнивая свой собственный номер сети с адресом получателя. Если они находятся в одной сети, они отправляют напрямую; в противном случае они отправляют маршрутизатору, задача которого - доставить сообщение ближе к месту назначения.
Поэтому, если устройство подключено к нескольким сетям, ему нужен адрес в каждой из этих сетей, чтобы к нему могли обращаться устройства в этой сети.
Тем не менее, на самом деле нет необходимости назначать адреса конкретно для определенных сетевых интерфейсов. Устройство может просто иметь список всех IP-адресов, которыми оно владеет, в одной таблице. Но интерфейсам по-прежнему нужна информация о том, к какой сети они подключены. Назначая IP-адрес и маску сети каждому интерфейсу, мы помещаем эту информацию в одном месте, упрощая проект. Нет необходимости в дополнительном коде для согласования списка IP-адресов со списком сетей, к которым подключены интерфейсы.
Может быть достаточно иметь один IP в стандартном случае, но, как подчеркивают другие ответы, во многих случаях это не так.
Другие ответы уже упоминали случай маршрутизатора. В одном из них упоминается virtualbox, который относится к виртуальным машинам: на одном физическом устройстве может быть несколько виртуальных машин. Другой случай - это виртуальные локальные сети, которые вы могли бы подключить к одной сетевой карте, нескольким разным виртуальным локальным сетям с разными IP-адресами. И даже по некоторым причинам у вас может быть интерфейс с несколькими IP-адресами, например, потому что вы хотите запустить несколько веб-серверов на TCP-порту 80. Такая конфигурация не является редкостью для серверов, у арендуемого оборудования может быть одна сетевая карта , но у вас будет настроено несколько IP-адресов.
Ответы:
Подключение интерфейса к сети делает его частью этой сети. Следовательно, IP-адрес является свойством соединения, а не хоста.
Аналогично, хост может иметь много сетевых подключений и, соответственно, IP-адресов. Разные интерфейсы часто имеют разные функции, поэтому важно различать их (например, внутренняя консоль, публичные сервисы, iSCSI).
Маршрутизаторы требуют нескольких IP-адресов для своих интерфейсов.
источник
Нет.
Тем не менее, давайте посмотрим на упрощенный пример:
У меня есть компьютер с тремя интерфейсами:
eth0
(проводной Ethernet),wlan0
(wifi) иvboxnet0
(virtualbox). Один из интерфейсов подключен к внутренней сети, один - к Интернету, а последний - к сети виртуальных компьютеров. Допустим, у меня есть только один адрес, 10.1.2.3, и я хочу отправить много пакетов на 192.168.1.2, доступных в одной из этих сетей - куда мне их отправлять? Нельзя просто отправить их куда угодно, такое поведение затопит все сети в короткие сроки.Но если интерфейс eth0 имеет 192.168.1.3, wlan0 имеет 10.1.2.3, а vboxnet0 имеет 172.0.0.1, то в таблице маршрутизации по умолчанию, вероятно, будет указано «отправить его из eth0». (Очевидно, что это может быть намного сложнее с более сложными правилами маршрутизации).
И наоборот, я могу захотеть запустить службу только на интерфейсе, открытом для частной сети - поэтому, когда запрос поступает на другой интерфейс, он вообще не обрабатывается.
источник
Случай 1: Маршрутизаторы
Теоретически это было бы возможно.
Однако обычно IP-пакет отправляется «напрямую» в пункт назначения, когда IP-адрес «соответствует» определенной сетевой маске (например, 10.0.0.0/28); в противном случае пакет отправляется через маршрутизатор.
Это означает:
Пакеты, отправляемые с одного компьютера на другой в одной из двух сетей, не проходят через маршрутизатор.
Это означает, что IP-адреса каждого компьютера соответствуют сетевой маске сети, к которой они подключены.
Пакеты, отправляемые на маршрутизатор (включая пакеты, маршрутизируемые маршрутизатором!), Не отправляются с компьютера на маршрутизатор через второй маршрутизатор.
Это означает, что IP-адрес маршрутизатора должен соответствовать сетевым маскам обеих сетей.
Однако IP-пакеты, отправляемые с одного компьютера в одной сети на компьютер в другой сети, отправляются через маршрутизатор.
Это означает, что IP-адреса компьютеров в одной сети не должны совпадать с маской сети другой сети.
Почти невозможно выбрать IP-адрес и две сетевые маски таким образом, чтобы один IP-адрес соответствовал обеим сетевым маскам, но многие IP-адреса соответствуют только одной сетевой маске.
Случай 2: разные частные сети
У нас может быть случай, что компьютер подключен к двум частным сетям, которые не могут обмениваться данными друг с другом.
В этом случае компьютер может иметь одинаковый IP-адрес в обеих сетях.
В случае IPv4 большинство ОС не будут поддерживать это, потому что ОС используют сетевые маски двух сетей, чтобы различать их. Сети должны иметь разные сетевые маски ...
В случае IPv6 (с использованием «локальных ссылок») компьютер может иметь одинаковый (локальный) IP-адрес в двух разных сетях - и, следовательно, две сетевые карты могут иметь один и тот же IP-адрес!
источник
Устройство с IP-адресом существует в сети.
Маршрутизатор - это устройство, основной целью которого является передача трафика между сетями .
Чтобы маршрутизатор мог передавать пакеты между двумя сетями, он должен существовать в обеих сетях.
Маршрутизатор будет иметь «руку» внутри каждой сети - или, как мы ее называем, интерфейс . А интерфейс существует в сети, назначая ему IP-адрес в сети.
Следовательно, при настройке маршрутизатора, каждый интерфейс получает IP - адрес для идентификации сети , которым принадлежит , что маршрутизатор внутри .
Отказ от ответственности: ссылка выше на мой блог. Мой блог не монетизирован. Я не получаю выгоды от того, что вы читаете это. Я предоставляю ссылку просто для вашей (и любой другой читатель) пользы.
источник
Позвольте мне начать с оспаривания вашего предположения. Почему вы говорите, что это не так, как ведут себя машины? Скажем, я назначил 192.168.1.1/24 для eth1 и 192.168.2.1/24 для eth2. Помимо установки маршрута для 192.168.1.0/24 out eth1 и 192.168.2.0/24 out eth2 и определения предпочтительного исходного IP-адреса для пакетов, отправляемых по этому маршруту, насколько действительно имеет значение, какому интерфейсу я назначаю IP-адрес? Что действительно меняется? В каком смысле машина не ведет себя так, как будто все IP-адреса, назначенные интерфейсам на машине, принадлежат машине?
Оба подхода используются. Наиболее распространенный подход на самом деле является гибридом этих двух подходов.
В экстремальном случае «дать устройству IP-адрес» можно представить устройство, которое ведет себя так, как будто все его интерфейсы подключены к фильтрующему мосту с одним IP-адресом, назначенным мосту.
В экстремальной ситуации «дать каждому интерфейсу IP-адрес» вы можете представить устройство, которое ведет себя так, как если бы каждый интерфейс был похож на отдельную машину. (Посмотрите здесь, если вы думаете, что именно так устройства работают в настоящее время, или подумайте о ком-то, кто подключается к IP-адресу, назначенному одному интерфейсу, но пакеты приходят и отправляются другим.)
На практике большинство машин работают где-то посередине. Они действуют так, как если бы все IP-адреса принадлежали машине. Назначение IP-адреса определенному устройству на самом деле не делает ничего особенного, кроме указания ОС установить маршрут по умолчанию из этого интерфейса и установить исходный IP-адрес по умолчанию для пакетов, отправляемых этим интерфейсом, где IP-адрес источника отсутствует. т вынужден.
В противном случае они ведут себя так, как будто все IP-адреса принадлежат машине. Способ обработки пакета мало зависит от того, на каком интерфейсе он получен - пакеты с исходным IP-адресом, назначенным одному интерфейсу, полученному на другом, являются обычными. Какому интерфейсу назначен адрес, напрямую не влияет на какой интерфейс отправляется пакет, таблица маршрутизации определяет это.
источник
В общем случае вам нужен один IP-адрес для каждой локальной сети, к которой вы подключаетесь, и именно так был определен TCP / IP: каждый хост в данной локальной сети имеет IP-адрес, который позволяет:
Пока у вас есть локальные сети с несколькими подключенными к нему устройствами (большинство локальных сетей 802.x, включая Ethernet, Wi-Fi), довольно сложно обойти это, если вы принципиально не измените работу TCP / IP.
Однако на самом деле этого можно избежать, хотя это довольно специфично.
Рассмотрим сеть, в которой есть только двухточечные соединения (двухточечная сеть Ethernet между двумя устройствами без коммутатора или концентратора, DSL-соединения, SONET / SDH-соединения, Frame Relay или VC ATM ...).
Обычное соглашение заключается в использовании / 30 для каждой ссылки, поэтому устройство на каждом конце имеет IP-адрес в этой ссылке.
Но вы можете использовать «IP-ненумерованный» и не связывать IP-адреса с этими ссылками. Теперь вы назначаете IP для интерфейса обратной связи устройства (на самом деле любой интерфейс, но loopback является самым простым для этой цели), и вы используете протокол динамической маршрутизации (IS-IS, OSPF, EIGRP ...). Этот протокол маршрутизации будет рекламировать, как маршрутизировать трафик на этот IP-адрес через различные ненумерованные ссылки.
источник
IP-адреса включают информацию о маршрутизации. IP - адрес разделяется на две составляющие, на номер сети и номер хоста , на основании назначенной длину префикса (который первоначально был выражен в виде маски сети, и это до сих пор часто , как это внутренне реализовано в сетевых стеках).
Для правильной работы маршрутизации все устройства, подключенные к определенной сети, должны иметь адреса с одинаковым номером сети. Отправители определяют, находится ли получатель в той же или другой сети, сравнивая свой собственный номер сети с адресом получателя. Если они находятся в одной сети, они отправляют напрямую; в противном случае они отправляют маршрутизатору, задача которого - доставить сообщение ближе к месту назначения.
Поэтому, если устройство подключено к нескольким сетям, ему нужен адрес в каждой из этих сетей, чтобы к нему могли обращаться устройства в этой сети.
Тем не менее, на самом деле нет необходимости назначать адреса конкретно для определенных сетевых интерфейсов. Устройство может просто иметь список всех IP-адресов, которыми оно владеет, в одной таблице. Но интерфейсам по-прежнему нужна информация о том, к какой сети они подключены. Назначая IP-адрес и маску сети каждому интерфейсу, мы помещаем эту информацию в одном месте, упрощая проект. Нет необходимости в дополнительном коде для согласования списка IP-адресов со списком сетей, к которым подключены интерфейсы.
источник
Может быть достаточно иметь один IP в стандартном случае, но, как подчеркивают другие ответы, во многих случаях это не так.
Другие ответы уже упоминали случай маршрутизатора. В одном из них упоминается virtualbox, который относится к виртуальным машинам: на одном физическом устройстве может быть несколько виртуальных машин. Другой случай - это виртуальные локальные сети, которые вы могли бы подключить к одной сетевой карте, нескольким разным виртуальным локальным сетям с разными IP-адресами. И даже по некоторым причинам у вас может быть интерфейс с несколькими IP-адресами, например, потому что вы хотите запустить несколько веб-серверов на TCP-порту 80. Такая конфигурация не является редкостью для серверов, у арендуемого оборудования может быть одна сетевая карта , но у вас будет настроено несколько IP-адресов.
источник