Що відбувається при з'єднаннях всередині та поза VPN-тунелем

З листів до служби техпідтримки Tucha народжуються справжні статті. Так, нещодавно до нас звернувся клієнт із запитом роз'яснити, що відбувається при з'єднаннях усередині VPN-тунелю між офісом користувача та середовищем у хмарі, а також при з'єднаннях поза VPN-тунелем. Тому весь текст, наведений нижче, – це реальний лист, який ми надіслали одному з клієнтів у відповідь на його запитання. Звичайно, змінили IP-адреси, щоб не деанонімізувати клієнта. Але, так, служба технічної підтримки Tucha справді славиться своїми розгорнутими відповідями та змістовними листами. 🙂

Звичайно, ми розуміємо, що для багатьох ця стаття не стане відкриттям. Але, оскільки на Habr час від часу з'являються статті для адміністраторів-початківців, а також через те, що ця стаття з'явилася з реального листа реальному клієнту, ми все ж таки поділимося цією інформацією і тут. Є велика ймовірність, що комусь вона буде корисною.
Тому докладно пояснюємо, що відбувається між сервером у хмарі та офісом, якщо вони об'єднані мережею. Відзначимо, що при цьому частина сервісів доступна тільки з офісу, а частина звідки завгодно з мережі Інтернет.

Відразу пояснимо, що наш клієнт побажав, щоб на сервер 192.168.A.1 можна було звідки завгодно приходити по RDP, підключаючись до AAA2:13389, а до інших служб - тільки з офісу (192.168.B.0/24), підключеного через VPN. Також у клієнта спочатку було налаштовано, що до машини 192.168.B.2 в офісі теж можна було ходити по RDP звідки завгодно, підключаючись до BBB1:11111. Ми допомогли організувати IPSec-з'єднання між хмарою та офісом, і ІТ-фахівець замовника почав ставити питання про те, що буде в тому чи іншому випадку. Щоб відповісти на ці запитання, ми, власне, і написали йому все те, що ви можете прочитати нижче.

Що відбувається при з'єднаннях всередині та поза VPN-тунелем

А тепер розглянемо ці процеси докладніше.

Позиція перша

Коли щось вирушає з 192.168.Б.0/24 в 192.168.A.0/24 або з 192.168.A.0/24 в 192.168.Б.0/24, воно потрапляє до VPN. Тобто цей пакет додатково зашифровується та передається між BBB1 и AAA1, але 192.168.A.1 бачить пакет саме від 192.168.B.1. Вони можуть спілкуватися між собою за будь-якими протоколами. Зворотні відповіді так само передаються через VPN, значить, пакет з 192.168.A.1 для 192.168.B.1 буде відправлено як ESP-датаграма з AAA1 на BBB1, яку на тому боці маршрутизатор розгорне, дістане з неї пакет і віддасть на неї 192.168.B.1 як пакет від 192.168.A.1.

Конкретний приклад:

1) 192.168.B.1 звертається до 192.168.A.1, хоче встановити TCP-з'єднання з 192.168.A.1:3389;

2) 192.168.B.1 надсилає запит на встановлення з'єднання від 192.168.B.1:55555 (Номер порту для зворотного зв'язку вибирає він сам, тут і далі використовуватимемо номер 55555 як приклад такого номера порту, який система вибирає при формуванні TCP-з'єднання) на 192.168.A.1:3389;

3) операційна система, що працює на комп'ютері з адресою 192.168.B.1, вирішує передати цей пакет на шлюзову адресу маршрутизатора (192.168.B.254 у нашому випадку), тому що інші, більш специфічні маршрути для 192.168.A.1, у неї немає, отже, вона передає пакет за маршрутом за промовчанням (0.0.0.0/0);

4) для цього вона намагається знайти MAC-адресу для IP-адреси 192.168.B.254 у кеш-таблиці протоколу ARP. Якщо його не виявлено, відправляє з адреси 192.168.B.1 широкомовний who-has запит до мережі 192.168.Б.0/24. Коли 192.168.B.254 у відповідь надсилає їй свою MAC-адресу, система передає Ethernet-пакет для неї і заносить цю інформацію до своєї кеш-таблиці;

5) маршрутизатор приймає цей пакет і вирішує, куди його передати: у нього прописана політика, згідно з якою він повинен усі пакети між 192.168.Б.0/24 и 192.168.A.0/24 передавати по VPN-з'єднанню між BBB1 и AAA1;

6) маршрутизатор формує ESP-датаграму від BBB1 на AAA1;

7) маршрутизатор вирішує, кому передати цей пакет, він відправляє його на, скажімо, BBB254 (шлюз інтернет-провайдера), тому що більш специфічних маршрутів до AAA1, Чим 0.0.0.0/0, у нього немає;

8) точно так само, як уже було сказано, він знаходить MAC-адресу для BBB254 та передає пакет на шлюз інтернет-провайдера;

9) інтернет-провайдери передають по своїх мережах ESP-датаграму від BBB1 на AAA1;

10) віртуальний маршрутизатор на AAA1 приймає цю датаграму, розшифровує її та отримує пакет від 192.168.B.1:55555 для 192.168.A.1:3389;

11) віртуальний маршрутизатор перевіряє, кому його передати, знаходить у таблиці маршрутизації мережу 192.168.A.0/24 і відправляє його безпосередньо до 192.168.A.1, оскільки має інтерфейс 192.168.A.254/24;

12) для цього віртуальний маршрутизатор знаходить MAC-адресу для 192.168.A.1 і передає йому цей пакет через віртуальну мережу Ethernet;

13) 192.168.A.1 отримує цей пакет на порт 3389, погоджується встановити з'єднання і формує пакет у відповідь 192.168.A.1:3389 на 192.168.B.1:55555;

14) його система передає цей пакет на шлюзову адресу віртуального маршрутизатора (192.168.A.254 у нашому випадку), тому що інші, більш специфічні маршрути для 192.168.B.1, у неї немає, отже вона повинна передати пакет за маршрутом за умовчанням (0.0.0.0/0);

15) так само, як і в попередніх випадках, система, яка працює на сервері з адресою 192.168.A.1, знаходить MAC-адресу 192.168.A.254оскільки він знаходиться в одній мережі з її інтерфейсом 192.168.A.1/24;

16) віртуальний маршрутизатор приймає цей пакет і вирішує, куди його передати: у нього прописана політика, згідно з якою він повинен усі пакети між 192.168.A.0/24 и 192.168.Б.0/24 передавати по VPN-з'єднанню між AAA1 и BBB1;

17) віртуальний маршрутизатор формує ESP-датаграму від AAA1 для BBB1;

18) віртуальний маршрутизатор вирішує, кому передати цей пакет, відправляє його на AAA254 (шлюз інтернет-провайдера, в цьому випадку, це теж ми), тому що більш специфічних маршрутів до BBB1, Чим 0.0.0.0/0, у нього немає;

19) інтернет-провайдери передають по своїх мережах ESP-датаграму з AAA1 на BBB1;

20) маршрутизатор на BBB1 приймає цю датаграму, розшифровує її та отримує пакет від 192.168.A.1:3389 для 192.168.B.1:55555;

21) він розуміє, що його слід передати саме на 192.168.B.1, оскільки той знаходиться з ним в одній мережі, отже, у того є в таблиці маршрутизації відповідний запис, який змушує його відправляти пакети для всієї 192.168.Б.0/24 безпосередньо;

22) маршрутизатор знаходить MAC-адресу для 192.168.B.1 та передає йому цей пакет;

23) операційна система на комп'ютері з адресою 192.168.B.1 приймає пакет від 192.168.A.1:3389 для 192.168.B.1:55555 та ініціює наступні кроки для встановлення TCP-з'єднання.

У цьому прикладі досить стисло і спрощено (а тут можна згадати ще купу деталей) описано, що відбувається на рівнях 2-4. Рівні 1, 5-7 не розглянуті.

позиція друга

Якщо з 192.168.Б.0/24 щось вирушає саме на AAA2, Воно йде не в VPN, а безпосередньо. Тобто, якщо користувач з адреси 192.168.B.1 звертається до AAA2:13389, цей пакет натисне з адреси BBB1, проходить на AAA2, а там маршрутизатор його приймає та передає на 192.168.A.1. 192.168.A.1 не знає нічого про 192.168.B.1, він бачить пакет від BBB1оскільки той його понатив. Тому відповідь на цей запит йде за загальним маршрутом, він так само натисається з адреси AAA2 і йде на BBB1, А той маршрутизатор цю відповідь віддає на 192.168.B.1, той бачить відповідь AAA2, До якого він і звертався.

Конкретний приклад:

1) 192.168.B.1 звертається до AAA2, хоче встановити TCP-з'єднання з AAA2:13389;

2) 192.168.B.1 надсилає запит на встановлення з'єднання від 192.168.B.1:55555 (цей номер, як і в попередньому прикладі, може бути іншим) на AAA2:13389;

3) операційна система, що працює на комп'ютері з адресою 192.168.B.1, вирішує передати цей пакет на шлюзову адресу маршрутизатора (192.168.B.254 у нашому випадку), тому що інші, більш специфічні маршрути для AAA2, у неї немає, а значить, вона передає пакет за маршрутом за промовчанням (0.0.0.0/0);

4) для цього вона, як ми і згадували в попередньому прикладі, намагається знайти MAC-адресу для IP-адреси 192.168.B.254 у кеш-таблиці протоколу ARP. Якщо його не виявлено, відправляє з адреси 192.168.B.1 широкомовний who-has запит до мережі 192.168.Б.0/24. Коли 192.168.B.254 у відповідь надсилає їй свою MAC-адресу, система передає Ethernet-пакет для неї і заносить цю інформацію до своєї кеш-таблиці;

5) маршрутизатор приймає цей пакет і вирішує, куди його передати: у нього прописана політика, згідно з якою він повинен натиснути (підміняючи зворотну адресу) всі пакети від 192.168.Б.0/24 до інших вузлів мережі Інтернет;

6) оскільки ця політика має на увазі, що зворотна адреса при цьому повинна збігатися з молодшою ​​адресою на інтерфейсі, через який буде передано цей пакет, маршрутизатор спочатку вирішує, кому саме передати цей пакет, а він, як і в попередньому прикладі, повинен відправити його на BBB254 (шлюз інтернет-провайдера), тому що більш специфічних маршрутів до AAA2, Чим 0.0.0.0/0, у нього немає;

7) отже, маршрутизатор підміняє зворотну адресу пакета, відтепер пакет від BBB1:44444 (Номер порту, звичайно, може бути іншим) на AAA2:13389;

8) маршрутизатор запам'ятовує, що він зробив, отже, коли від AAA2:13389 к BBB1:44444 надійде відповідь, він знатиме, що йому слід змінити адресу та порт одержувача на 192.168.B.1:55555.

9) тепер маршрутизатор повинен передати його до мережі інтернет-провайдера через BBB254Отже, так само, як ми вже згадували, він знаходить MAC-адресу для BBB254 та передає пакет на шлюз інтернет-провайдера;

10) інтернет-провайдери передають по своїх мережах пакет від BBB1 на AAA2;

11) віртуальний маршрутизатор на AAA2 приймає цей пакет порт 13389;

12) на віртуальному маршрутизаторі є правило, яке передбачає, що пакети, що надійшли від будь-якого відправника на цей порт, слід передавати на 192.168.A.1:3389;

13) віртуальний маршрутизатор знаходить у таблиці маршрутизації мережу 192.168.A.0/24 та відправляє його безпосередньо 192.168.А.1, оскільки має інтерфейс 192.168.A.254/24;

14) для цього віртуальний маршрутизатор знаходить MAC-адресу для 192.168.A.1 і передає йому цей пакет через віртуальну мережу Ethernet;

15) 192.168.A.1 отримує цей пакет на порт 3389, погоджується встановити з'єднання і формує пакет у відповідь 192.168.A.1:3389 на BBB1:44444;

16) його система передає цей пакет на шлюзову адресу віртуального маршрутизатора (192.168.A.254 у нашому випадку), тому що інші, більш специфічні маршрути для BBB1, у неї немає, отже вона повинна передати пакет за маршрутом за умовчанням (0.0.0.0/0);

17) так само, як і в попередніх випадках, система, яка працює на сервері з адресою 192.168.A.1, знаходить MAC-адресу 192.168.A.254оскільки він знаходиться в одній мережі з її інтерфейсом 192.168.A.1/24;

18) віртуальний маршрутизатор приймає цей пакет. Слід зазначити, що він пам'ятає, що отримував на AAA2:13389 пакет від BBB1:44444 і змінював йому адресу та порт отримувача на 192.168.A.1:3389, отже, пакету від 192.168.A.1:3389 для BBB1:44444 він змінює адресу відправника на AAA2:13389;

19) віртуальний маршрутизатор вирішує, кому передати цей пакет, він відправляє його на AAA254 (шлюз інтернет-провайдера, в цьому випадку, це теж ми), тому що більш специфічних маршрутів до BBB1, Чим 0.0.0.0/0, у нього немає;

20) інтернет-провайдери передають по своїх мережах пакет з AAA2 на BBB1;

21) маршрутизатор на BBB1 приймає цей пакет і згадує, що, коли він передавав пакет від 192.168.B.1:55555 для AAA2:13389, він змінював його адресу та порт відправника на BBB1:44444, Отже, це відповідь, яку потрібно передати на 192.168.B.1:55555 (насправді там існують ще кілька перевірок, але ми в це не заглиблюємося);

22) він розуміє, що його слід передати безпосередньо на 192.168.B.1, оскільки той знаходиться з ним в одній мережі, отже, у того є в таблиці маршрутизації відповідний запис, який змушує відправляти пакети для всієї 192.168.Б.0/24 безпосередньо;

23) маршрутизатор знаходить MAC-адресу для 192.168.B.1 та передає йому цей пакет;

24) операційна система на комп'ютері з адресою 192.168.B.1 приймає пакет від AAA2:13389 для 192.168.B.1:55555 та ініціює наступні кроки для встановлення TCP-з'єднання.

Слід зазначити, що в цьому випадку комп'ютер з адресою 192.168.B.1 нічого не знає про сервер з адресою 192.168.A.1, він спілкується тільки з AAA2. Так само і сервер з адресою 192.168.A.1 нічого не знає про комп'ютер з адресою 192.168.B.1. Він вважає, що до нього підключилися з адреси BBB1а більше він нічого, так би мовити, не знає.

Ще слід зазначити, що у випадку, якщо цей комп'ютер звертається до AAA2:1540, з'єднання не буде встановлено, тому що прокидання з'єднань на порт 1540 не налаштовано на віртуальному маршрутизаторі, навіть якщо на будь-яких серверах у віртуальній мережі 192.168.A.0/24 (наприклад, на сервері з адресою 192.168.A.1) і є якісь сервіси, які чекають на з'єднання на цьому порту. Якщо користувачеві комп'ютера з адресою 192.168.B.1 конче необхідно встановити з'єднання з цією службою, він повинен використовувати VPN, тобто. звертатися безпосередньо на 192.168.A.1:1540.

Слід наголосити, що будь-які спроби встановити з'єднання з AAA1 (крім IPSec-з'єднання з боку BBB1 не будуть вдалими. Будь-які спроби встановити з'єднання з AAA2Крім з'єднань з портом 13389, теж не будуть вдалими.
Також зазначимо, що у разі, якщо до AAA2 звернеться хтось ще (наприклад, CCCC), все, що зазначено в пунктах 10-20, стосуватиметься і його теж. Що відбувається до цього і після цього залежить від того, що саме знаходиться за цим CCCC.

Позиція третя

І, навпаки, якщо з 192.168.A.1 що-небудь відправляється на якийсь порт, який налаштований для прокидання всередину на BBB1 (наприклад, 11111), воно також не потрапляє у VPN, а просто натисається від AAA1 і потрапляє в BBB1, а той уже передає його кудись у, скажімо, 192.168.B.2:3389. Той бачить цей пакет не від 192.168.A.1, а від AAA1. І коли 192.168.B.2 відповідає, пакет йде від BBB1 на AAA1, а пізніше потрапляє до ініціатора з'єднання 192.168.A.1.

Конкретний приклад:

1) 192.168.A.1 звертається до BBB1, хоче встановити TCP-з'єднання з BBB1:11111;

2) 192.168.A.1 надсилає запит на встановлення з'єднання від 192.168.A.1:55555 (цей номер, як і в попередньому прикладі, може бути іншим) на BBB1:11111;

3) операційна система, що працює на сервері з адресою 192.168.A.1, вирішує передати цей пакет на шлюзову адресу маршрутизатора (192.168.A.254 у нашому випадку), тому що інші, більш специфічні маршрути для BBB1, у неї немає, отже, вона передає пакет за маршрутом за промовчанням (0.0.0.0/0);

4) для цього вона, як ми і згадували в попередніх прикладах, намагається знайти MAC-адресу для IP-адреси 192.168.A.254 у кеш-таблиці протоколу ARP. Якщо його не виявлено, відправляє з адреси 192.168.A.1 широкомовний who-has запит до мережі 192.168.A.0/24. Коли 192.168.A.254 у відповідь надсилає їй свою MAC-адресу, система передає Ethernet-пакет для неї і заносить цю інформацію в свою кеш-таблицю;

5) віртуальний маршрутизатор приймає цей пакет і вирішує, куди його передати: у нього прописана політика, згідно з якою він повинен натиснути (підмінюючи зворотну адресу) всі пакети від 192.168.A.0/24 до інших вузлів мережі Інтернет;

6) оскільки ця політика передбачає, що зворотна адреса при цьому повинна збігатися з молодшою ​​адресою на інтерфейсі, через який буде передано цей пакет, віртуальний маршрутизатор спочатку вирішує, кому саме передати цей пакет, а він, як і в попередньому прикладі, повинен відправити його на AAA254 (шлюз інтернет-провайдера, в цьому випадку, це теж ми), тому що більш специфічних маршрутів до BBB1, Чим 0.0.0.0/0, у нього немає;

7) значить, віртуальний маршрутизатор підміняє зворотну адресу пакета, відтепер це пакет від AAA1:44444 (Номер порту, звичайно, може бути іншим) на BBB1:11111;

8) віртуальний маршрутизатор запам'ятовує, що він зробив, отже, коли від BBB1:11111 для AAA1:44444 надійде відповідь, він знатиме, що йому слід змінити адресу та порт одержувача на 192.168.A.1:55555.

9) тепер віртуальний маршрутизатор повинен передати його до мережі інтернет-провайдера через AAA254, значить, так само, як ми вже згадували, він знаходить MAC-адресу для AAA254 та передає пакет на шлюз інтернет-провайдера;

10) інтернет-провайдери передають по своїх мережах пакет від AAA1 на BBB1;

11) маршрутизатор на BBB1 приймає цей пакет порт 11111;

12) на віртуальному маршрутизаторі існує правило, яке передбачає, що пакети, що надійшли від будь-якого відправника на цей порт, слід передавати на 192.168.B.2:3389;

13) маршрутизатор знаходить у таблиці маршрутизації мережу 192.168.Б.0/24 і відправляє його безпосередньо до 192.168.B.2, оскільки має інтерфейс 192.168.Б.254/24;

14) для цього віртуальний маршрутизатор знаходить MAC-адресу для 192.168.B.2 і передає йому цей пакет через віртуальну мережу Ethernet;

15) 192.168.B.2 отримує цей пакет на порт 3389, погоджується встановити з'єднання і формує пакет у відповідь 192.168.B.2:3389 на AAA1:44444;

16) його система передає цей пакет на шлюзову адресу маршрутизатора (192.168.B.254 у нашому випадку), тому що інші, більш специфічні маршрути для AAA1, у неї немає, отже вона повинна передати пакет за маршрутом за умовчанням (0.0.0.0/0);

17) так само, як і в попередніх випадках, система, яка працює на комп'ютері з адресою 192.168.B.2, знаходить MAC-адресу 192.168.B.254оскільки він знаходиться в одній мережі з її інтерфейсом 192.168.Б.2/24;

18) маршрутизатор приймає цей пакет. Слід зазначити, що він пам'ятає, що отримував на BBB1:11111 пакет від AAA1 і змінював йому адресу та порт отримувача на 192.168.B.2:3389, отже, пакету від 192.168.B.2:3389 для AAA1:44444 він змінює адресу відправника на BBB1:11111;

19) маршрутизатор вирішує, кому передати цей пакет. Він відправляє його на, скажімо, BBB254 (шлюз інтернет-провайдера, точну адресу якого ми не знаємо), тому що більш специфічних маршрутів до AAA1, Чим 0.0.0.0/0, у нього немає;

20) інтернет-провайдери передають по своїх мережах пакет з BBB1 на AAA1;

21) віртуальний маршрутизатор на AAA1 приймає цей пакет і згадує, що, коли він передавав пакет від 192.168.A.1:55555 для BBB1:11111, він змінював його адресу та порт відправника на AAA1:44444. Значить, це відповідь, яку необхідно передати на 192.168.A.1:55555 (насправді, як ми згадували в попередньому прикладі, там теж є ще кілька перевірок, але й цього разу ми в них не заглиблюємося);

22) він розуміє, що його слід передати безпосередньо на 192.168.A.1оскільки той знаходиться з ним в одній мережі, значить, у того є в таблиці маршрутизації відповідний запис, який змушує його відправляти пакети для всієї 192.168.A.0/24 безпосередньо;

23) маршрутизатор знаходить MAC-адресу для 192.168.A.1 та передає йому цей пакет;

24) операційна система на сервері з адресою 192.168.A.1 приймає пакет від BBB1:11111 для 192.168.A.1:55555 та ініціює наступні кроки для встановлення TCP-з'єднання.

Так само, як і в попередньому випадку, в цьому випадку сервер з адресою 192.168.A.1 нічого не знає про комп'ютер з адресою 192.168.B.1, він спілкується тільки з BBB1. Комп'ютер з адресою 192.168.B.1 теж нічого не знає про сервер з адресою 192.168.A.1. Він вважає, що до нього підключилися з адреси AAA1, а решту від нього сховано.

Висновок

Ось так все відбувається при з'єднаннях усередині VPN-тунелю між офісом клієнта та середовищем у хмарі, а також при з'єднаннях поза VPN-тунелем. А якщо у вас залишилися питання чи потрібна наша допомога у вирішенні хмарних завдань, звертайтесь 24х7.

Джерело: habr.com

Додати коментар або відгук