Я использовал компьютер с Windows 7 для подключения к компьютеру с Windows 10, который находится в той же физической сети, но в другой подсети. До того, как я добавил статический маршрут в Windows 7, весь трафик направлялся к основному маршрутизатору, а затем обратно в Windows 10. Это вызывало длительную задержку при инициировании RDP-соединения, поэтому я добавил статический маршрут в Windows 7, чтобы избежать использования верхнего маршрутизатора. , Я сделал ошибку, которая в итоге сработала, и я не уверен, почему.
Диаграмма сети
Статические маршруты для Windows 7
1. None
2. route add 10.1.1.0 mask 255.255.255.0 10.1.0.99
3. route add 10.1.1.0 mask 255.255.255.0 10.1.1.3
- С помощью
route 1
tracert
шоу10.1.0.98 -> 10.1.0.1 -> 10.1.0.99 -> 10.1.1.4
- С помощью
route 2
tracert
шоу10.1.0.98 -> 10.1.0.99 -> 10.1.1.4
- С помощью
route 3
tracert
шоу10.1.0.98 -> 10.1.0.99 -> 10.1.1.4
Я понимаю почему route 2
работает, но я не знаю почему route 3
тоже работает.
PS: Если кто-то может предложить более четкое название, пожалуйста, сделайте.
networking
routing
traceroute
static-routes
chew socks
источник
источник
tracert
разница в производительности Установление сеанса RDP происходит мгновенно по маршруту 1 или 2.route print
проверить всю таблицу маршрутизации? 3 не сработает. Единственный логичный ответ - вы оставили 2 активных.Ответы:
Маршрут 3 работает из-за того, как пакеты ARP обрабатываются компьютером Ubuntu. Запрос ARP для 10.1.1.3 отправляется 10.1.0.0/24 и принимается через интерфейс 10.1.0.99. Так как этот компьютер также владеет 10.1.1.3, он отвечает аппаратным адресом для своего 10.1.0.99. Когда компьютер с Windows 7 позднее пытается установить RDP-соединение с компьютером с Windows 10, он отправляет пакеты, предназначенные для шлюза 10.1.1.3, но с MAC-адресом компьютера в той же подсети, который коммутатор может пересылать напрямую.
Чтобы попытаться проверить это
В Windows 7
На Ubuntu
источник
Магия маршрута 3 работает отчасти благодаря протоколу разрешения адресов и частично из-за таблицы пересылки и частично из-за алгоритмы маршрутизации.
Википедия говорит :
Ubuntu при запуске объявила о своем присутствии и интерфейсах в обеих подсетях, к которым он подключен, то есть ко всей вашей сети. Любое подобное объявление сделано Windows 10 была только внутри своей подсети, поэтому никогда не доходила до Windows 7. Даже если такое объявление не было получено, Windows 7 будет, чтобы найти соответствие, отправьте широковещательный пакет в сеть, используя Протокол ARP, чтобы спросить "у кого есть 10.1.1.4".
Большой намек на то, что
tracert
команда не перечислила маршрутизатор среди хмеля. Запрос на10.1.1.4
пошел прямо к компьютеру Ubuntu хотя Windows 7 не знает о10.1.1.4
,То, что мы видим в действии, это Windows Таблица IP-маршрутизации: процесс определения маршрута :
Маршрутизация Windows 7 нашла общий префикс между
10.1.1.4
а также10.1.1.3
который был10.1.1
, Другими возможностями были маршрутизатор или Ubuntu на10.1.0.99
, но чей общий префикс был только10.1
поэтому они не были выбраны.Мы видим здесь в действии таблицу пересылки, которая построена сверху таблицы маршрутизации. В то время как таблица маршрутизации компилирует маршруты на основе IP-адресов, таблица пересылки содержит соответствующие MAC-адреса. Таким образом, таблица пересылки содержала запись: «Для
10.1.1.X
, переслать пакет на MAC-адрес компьютера Ubuntu ". Как только пакет прибыл на компьютер Ubuntu, он знал очень хорошо как переслать10.1.1.4
,Так вот как пакеты из Windows 7 в конечном итоге на Windows 10, и наоборот.
источник