Як IP-адреса шлюзу в статичному маршруті впливає на маршрутизацію


2

Я використовую комп'ютер 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: Якщо хтось може запропонувати чіткішу назву, будь ласка, зробіть це.


Маршрут 3 не працює. Тому відповідь на це полягає в тому, що таблиця маршрутизації була не такою, як ви думали, або інформація про ваші маршрутизації не точна. Можуть бути або обидва, або і те й інше. Traceroute не завжди показує всіх хмелів. Чи була ваша адреса шлюзу на машині Win 7 ще 10.1.0.1?
Appleoddity

@Appleoddity Так, шлюз все ще був 10.1.0.1. 2 і 3 - команди, введені в команду. Я вважаю tracert, що різниця в продуктивності. Встановлення сеансу RDP миттєво з маршрутом 1 або 2.
носки жуйте

Ви зробили, route printщоб перевірити всю таблицю маршрутизації? 3 не вийде. Єдина логічна відповідь - ви залишили 2 активних.
Appleoddity

@Appleoddity я там перевірив. Я насправді робив 3 до 2; Я помилився, а потім здивувався, що це спрацювало. Я думаю, що я це зрозумів. Подивіться, чи правильно відповідає моя відповідь нижче.
жувати шкарпетки

@chewsocks: Чи можете ви також шукати конкретні маршрути для хоста, за яким ви пінгінгуєте / відстежуєте? (Тобто, з мережевою маскою 255.255.255.255?) Коментар harrymc змушує мене підозрювати переадресації ICMP, надіслані вашим головним маршрутизатором.
grawity

Відповіді:


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

.\Arping.exe -i 10.1.0.98 -T 10.1.1.3

На Ubuntu

22:19:51.275116 (Windows 7 MAC) > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: Request who-has 10.1.1.3 tell 10.1.0.98, length 46

Це логічне пояснення, але все-таки принципово хибно. Якщо припустити, що всі маски підмережі (це все 255.255.255.0 правильно?) Є / 24, то комп'ютери на 10.1.0.x / 24 не надсилатимуть "запит ARP за 10.1.1.3", оскільки він не знаходиться в одній підмережі. Комп'ютер це знає, і через це знає, що він повинен відправити пакет до шлюзу за замовчуванням або іншого доступного маршруту. Тому він створює запит ARP для шлюзу IP 10.1.0.1 і відправляє пакет цьому маршрутизатору для переадресації. Він ніколи не перегляне свою локальну мережу для 10.1.1.x.
Appleoddity

Мені було б цікаво побачити, чи можете ви довести цю теорію, як це має сенс, але це технічно не повинно відбуватися. Для цього виконайте tcpdump та опублікуйте результати ARP-запитів та відповідей, які ви теоретизуєте. Якщо це, як ви кажете, передумова будується на кількох речах, які не функціонують так, як належить.
Appleoddity

@Appleoddity Я опублікував редагування, де зробив дамп із tcp.
жувати шкарпетки

Гаразд. Я бачу tcpdump, але ви генеруєте ARP, "примушуючи" його до копіювання. Нам потрібно побачити фактичний запит / відповідь arp в мережі під час пінг-перегляду або простеження 10.1.1.4. Він відображатиметься у сліді tcpdump або wireshark у мережі 10.1.0.0. Я вважаю, що Arpping завжди надсилатиме запит, про який ви йому повідомляєте.
Appleoddity

@Appleoddity Я припускав, що він не надсилатиме ARP-запити, як тільки дізнається відповідь, але це насправді так. Я вловлював ті самі запити, навіть коли я не займався арпуванням
шкарпетки

1

Магія маршруту 3 працює частково через протокол вирішення адреси та частково через таблицю пересилання та частково через алгоритми маршрутизації.

У Вікіпедії сказано :

Протокол роздільної здатності адреси (ARP) - це протокол зв'язку, який використовується для виявлення адреси рівня шару зв'язку, наприклад, MAC-адреси, асоційованої з заданою адресою Інтернет-рівня (зазвичай це адреса IPv4).

Під час запуску багато операційних систем виконують безоплатно ARP . Це допомагає вирішити проблеми, які могли б виникнути в іншому випадку, якщо, наприклад, нещодавно була змінена мережева карта (зміна відображення IP-адреси на MAC-адресу), а інші хости все ще мають старе відображення у своїх кешах ARP.

Таким чином, Ubuntu при запуску оголосив про свою присутність та інтерфейси в обох підмережах, до яких він підключений, так і до всієї вашої мережі. Будь-яке подібне оголошення, зроблене Windows 10, було лише в його підмережі, тому ніколи не дійшло до Windows 7. Навіть якщо такого повідомлення ніколи не надходило, Windows 7, щоб знайти відповідність, надішле пакет трансляції в мережу, використовуючи протокол ARP, щоб запитати "у кого 10.1.1.4".

Великий натяк тут - це те, що tracertкоманда не перелічила маршрутизатор серед хмелів. Запит 10.1.1.4перейшов прямо на комп'ютер Ubuntu, хоча Windows 7 про це не знає 10.1.1.4.

У роботі ми бачимо таблицю маршрутизації IP-адреси Windows : Процес визначення маршруту :

  • Для кожного запису в таблиці маршрутизації виконайте трохи розумну логічну І між IP-адресою призначення та мережевою маскою. Порівняйте результат із ідентифікатором мережі запису на відповідність.

  • Список відповідних маршрутів складається. Вибирається маршрут, який має найдовший збіг (маршрут, який збігав найбільшу кількість бітів з IP-адресою призначення). Найдовший маршрут узгодження - це найбільш конкретний маршрут до 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, і навпаки.


Безкоштовний ARP не генерує записи таблиці маршрутизації в жодній ОС, яку я бачив. Ви могли б гарно здогадатися, якби ви говорили про пакети перенаправлення ICMP, що надходять від маршрутизатора Mikrotik, які генерують запис маршруту хоста.
grawity

@grawity: я забув недобросовісний ARP, який я додав. Звичайно, ARP є невід'ємною частиною таблиці маршрутизації, і в декількох операційних системах ці два списки відображаються окремо лише для читання. Див., Наприклад, розділ 3.2 проекту rfc1433, спрямованого ARP .
harrymc

Це було б справедливо для Directed ARP, за винятком того, що ні протокол Windows, ні Linux не використовують цей протокол. Він був опублікований як "експериментальний" RFC, але ніколи не набув широкого поширення на практиці. Я щойно перевірив реалізацію Linux IPv4 FIB і вона повністю відокремлена від кешу ARP / сусіда. Google каже, що на microsoft.com також не згадується про "помічника ARP".
grawity

@grawity: Ви серйозно не припускаєте, що ОС не використовує ARP для вирішення IP-адрес та пошуку MAC-адрес, що відповідають? Біля ARP + таблиці маршрутизації + таблиці переадресації я не бачу інших механізмів, але я слухаю.
harrymc

Ні. Я припускаю, що ці шари діють абсолютно незалежно один від одного. У таблиці маршрутів максимум вказується вихідний інтерфейс, але не адреса L2 призначення.
grawity
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.