Пытаюсь подключить 2 устройства в разные подсети.
Device 1:
IP address: 172.20.35.1
netmask: 255.255.0.0
gateway: 172.20.1.1
Device 2:
IP address: 172.20.100.100
netmask: 255.255.255.0
gateway: 172.20.100.1
Маршрутизатор имеет IP-адрес 172.20.1.1
.
Когда я отправляю дейтаграмму UDP с устройства 1 на устройство 2, устройство 2 получает ее, но не может ответить, поскольку IP-адрес шлюза (устройство 2) неверен.
Но не должен ли маршрутизатор соединять эти две сети вместе, как показано здесь. http://www.eventhelix.com/realtimemantra/networking/ip_routing.htm#.VMo5Sx3n5Qs? Нужно ли настраивать маршруты вручную?
Также: Что если я изменю конфигурацию сети device 2
как показано ниже?
Device 1:
IP address: 172.20.35.1
netmask: 255.255.0.0
gateway: 172.20.1.1
Device 2:
IP address: 192.168.170.100
netmask: 255.255.255.0
gateway: 192.168.170.1
С этой сетевой конфигурацией, device 2
никогда не получает дейтаграмму UDP. Это почему?
РЕДАКТИРОВАТЬ:
Просто для уточнения. Я вообще-то не новичок. Описанная проблема мне известна, поскольку многие из моих клиентов склонны настраивать свои устройства так, как я описал выше, а затем не могут связаться с ними по TELNET
. Мне удалось решить эту проблему, реализовав multicast tunnel
позволяя пользователю изменять конфигурацию сети на удаленном устройстве, используя multicast UDP protocol
, всякий раз, когда они портят конфигурацию, как показано выше. Во всяком случае, у меня было телефонное собеседование в компании, и менеджер сказал, что трафик между такими устройствами всегда будет возможен, потому что для этого нужны маршрутизаторы. Меня пригласили на личное собеседование, и я знаю, что этот вопрос возникнет снова. Поэтому я разместил этот вопрос здесь, чтобы помочь мне сформулировать лучший ответ.
Я думаю, что на самом деле есть несколько проблем. Первый из них:
без доступа к конфигурации роутера
Все действия, предложенные Майком, требуют изменения конфигурации маршрутизатора.
Вторая проблема заключается в следующем:
Маршрутизатор имеет IP-адрес 172.20.1.1 !!
Перенаправление трафика (то есть маршрутизация) между подсетями A и B возможна тогда и только тогда, когда маршрутизатор имеет IP-интерфейсы в обеих подсетях. IP-интерфейс маршрутизатора - это IP-адрес, поэтому, если у вашего маршрутизатора только один IP-адрес, маршрутизация невозможна.
Вы не разъясняете, что именно вы имеете в виду под словом «маршрутизатор», но, например, ваш средний маршрутизатор DSL работает именно так. Он имеет только один IP-адрес, который используется во внутренней сети, другой IP-адрес он получает через линию DSL от интернет-провайдера. Таким образом, у него будет два IP-адреса, и он сможет маршрутизировать трафик между этими двумя подсетями. Обычно у вас даже нет возможности создавать новые VLAN, чтобы иметь больше подсетей на стороне LAN.
Вот немного любопытства. Вы настроили для своего клиента 1 IP-адрес с подсетью / 16 (маска 255.255.0.0). Диапазон IP-адресов подсети 172.20.0.0/16: 172.20.0.1-172.20.255.255, последний из которых является широковещательным адресом. IP-адрес маршрутизатора обычно самый низкий или самый высокий в подсети, поэтому я ожидаю 172.20.0.1 или 172.20.255.254. Это не правило, это обычное дело.
Если на самом деле подсеть вашего маршрутизатора / 16, вы легко решите свою первую проблему: настройте свое второе устройство с маской подсети 255.255.0.0 и используйте 172.20.1.1 в качестве шлюза по умолчанию. Это поместит его в одну подсеть с устройством 1, и трафик будет течь. Это не маршрутизация, это коммутация L2.
Я отправляю дейтаграмму UDP с устройства 1 на устройство 2, устройство 2 получает ее, но не может ответить, поскольку IP-адрес шлюза (устройство 2) неверен.
Это не обязательно имеет какое-либо отношение к вашему адресу шлюза. UDP - это односторонний протокол. Сам протокол не содержит механизма для отправки ответов или подтверждений. Чтобы ваше устройство 2 отвечало на дейтаграмму UDP, вы должны запустить приложение, которое будет отвечать при получении пакета. Если вы тестируете подключение, используйте команду ping, разработанную для этой цели. ICMP - это протокол TCP, поэтому он двусторонний. Ваше устройство 1 отправит эхо-запрос ICMP (т. Е. Пакет ping) на устройство 2, которое ответит ICMP-ответом.
При такой конфигурации сети устройство 2 никогда не получает дейтаграмму UDP. Это почему?
Здесь мы вернемся к IP-интерфейсам. Как говорит Майк, вам нужен маршрут в эту сеть, поэтому ваш маршрутизатор должен иметь IP-адрес 192.168.170.1/24.
Возвращаясь к заголовку вашего вопроса. Если вы не можете настроить маршрутизатор, единственное, что вы можете сделать, - это настроить подсеть и шлюз устройства 2, как я описал выше, и это будет работать, только если подсеть маршрутизатора / 16. Все остальные представленные решения требуют доступа к конфигурации маршрутизатора.
Пытаюсь подключить 2 устройства в разные подсети.
Устройство 1: IP-адрес: 172.20.35.1 маска сети: 255.255.0.0 шлюз: 172.20.1.1
Устройство 2: IP-адрес: 172.20.100.100 сетевая маска: 255.255.255.0 шлюз: 172.20.100.1
Маршрутизатор имеет IP-адрес 172.20.1.1 !! Когда я отправляю дейтаграмму UDP с устройства 1 на устройство 2, устройство 2 получает ее, но не может ответить, поскольку IP-адрес шлюза (устройство 2) неверен.
Настоящая проблема заключается в перекрытии подсетей в сочетании с отсутствием прокси-сервера arp на интерфейсе маршрутизатора с 172.20.1.1.
Хост 172.20.35.1 считает, что 172.20.1.1 находится в той же подсети, поэтому 172.20.35.1 ARP напрямую для 172.20.1.100. Однако в подсети 172.20.0.0/16 нет ничего для ответа.
Есть несколько вариантов решения проблемы:
(Кратковременный взлом) Включите proxy-arp на 172.20.1.1. Пока 172.20.1.1 имеет маршрут к 172.20.35.0/24, 172.20.1.1 будет отвечать на ARP-запросы для 172.20.1.100 своим собственным MAC-адресом и, при отсутствии других проблем, вы получите двунаправленную связь между этими подсетями.
(Долгосрочный) Реорганизуйте свою сеть без перекрытия подсетей. Для этого требуется переадресация хостов; потенциально много хозяев.
Выполните NAT на 172.20.35.0/24, чтобы он не выглядел как та же подсеть, что и все остальное. Решения NAT может становиться все труднее поддерживать, но это позволяет избежать использования proxy arp.
Также: что, если я изменю сетевую конфигурацию
device 2
как показано ниже.С этой сетевой конфигурацией,
device 2
никогда не получает дейтаграмму UDP. Это почему?
Похоже, вам нужен маршрут к 192.168.170.0/24