Чому робочий VPN усе одно отримує тайм-аут на відповіді
Те, що запит доходить до приватного сервера, — лише половина обміну. Його відповідь має знайти клієнта тунелю через потрібний шлюз, маршрут або трансляцію.
Запит надходить, сервер його реєструє, а клієнт усе одно повідомляє про тайм-аут. Таке поєднання означає, що відповідь не знайшла зворотного шляху, і це одна з небагатьох несправностей, яку можна підтвердити з обох боків одночасно. Виконуйте перевірки по черзі й зупиняйтеся, коли якась із них не проходить.
Почніть із того, куди надійшов запит
Перш ніж перевіряти будь-що інше, переконайтеся, що пакет дійшов до сервісу. Запис у журналі на боці сервера, лічильник з'єднань або дозволене перехоплення на далекому кінці відповідають на те саме питання, а їхня відсутність повертає вас до тунелю, а не вперед до відповіді. Це та перевірка, яка відокремлює проблему пересилання від проблеми зворотного шляху.
Якщо запит так і не надійшов, зупиніться тут. Тунель, маршрутизація до приватного префікса або правило доступу — це тема, а зворотний шлях поки не важливий. Запишіть також адресу джерела, яку побачив сервер. Це або адреса з пулу, яку отримав клієнт, або трансльована адреса, і ця різниця визначає, яка з подальших перевірок застосовна.
Відповіді потрібен маршрут до пулу
Клієнт віддаленого доступу зазвичай отримує адресу з пулу, а приватній мережі потрібен маршрут назад до цього пулу. Сервер, чий маршрут за замовчуванням вказує на його власний шлюз, передає пакет цьому шлюзу, який гадки не має, де розташований пул, тож відповідь гине там. Клієнт бачить тайм-аут, бо нічого не повернулося, і це неможливо відрізнити від запиту, який так і не вийшов.
Перевірте маршрут, який сервер обирає для адреси клієнта, а не той, який він використовує для власної підмережі. Ці два пошуки можуть дати різні відповіді, і тут важливий другий. Трансляція — це альтернативний варіант, і вона змінює те, що бачить сервер. Вона може спростити зворотний шлях, а також прибирає початкову адресу клієнта з журналів сервера, що впливає на будь-яке правило чи звіт, побудований на цьому полі.
Порівняйте перехоплення на сервері з перехопленням на шлюзі
Порівняйте те, що залишає сервер, із тим, що надходить на шлюз. Перехоплення на вихідному інтерфейсі сервера й перехоплення на шлюзі тунелю відповідають на різні половини питання, а розрив між ними вказує місце втрати.
ip route get 10.90.0.14
tcpdump -ni any host 10.90.0.14 and port 443
ip route show table all | grep 10.90.0.0| Where the reply stops | What it proves |
|---|---|
| Request in the server log, nothing on its outbound capture | The server picked a gateway that cannot reach the pool |
| Reply leaves the server but never shows up at the gateway | Loss on the LAN path, not on the tunnel |
| Reply reaches the gateway but not the client | Return translation or tunnel policy, not the server route |
Запит, згенерований самим шлюзом, — погана заміна перевірці з клієнта, бо він походить з іншої адреси й натрапляє на інші правила. Тому успішний ping зі шлюзу й невдалий запит з клієнта можуть бути правдивими одночасно.
Коли на шляху кілька маршрутизаторів, перевірте кожен, якому потрібен маршрут до пулу. Схема «майданчик — майданчик» часто вимагає, щоб віддалений префікс був відомий більш ніж на одному пристрої, а сам шлюз має пересилати між тунелем і локальною мережею; нотатки strongSwan про пересилання охоплюють бік sysctl і міжмережевого екрана.
Запишіть пул, префікс і відповідального
До нотатки входять чотири факти: пул, який отримав клієнт, приватний префікс, який йому був потрібен, маршрутизатор, відповідальний за відповідь, і правило трансляції, якщо воно є. З ними подальша зміна шлюзу — це порівняння, а не розслідування.
Потім повторіть перевірку зі звичайним клієнтом і реальним обліковим записом застосунку. Розширення прав застосунку не може виправити зворотний шлях пакета, а зміна облікового запису під час цієї діагностики заплутає наступне порівняння. Якщо схема спирається на трансляцію, задокументуйте її там, де читають журнали сервера. Той, хто бачить незнайому адресу джерела в журналі аудиту, не повинен з'ясовувати відповідність заново з тікета.