Почему один ресурс VPN работает, а другой уходит в тайм-аут
Работающий приватный сервис — это контроль, а не обещание. Сравните адреса, порты, этапы ответа и идентичности, чтобы найти, чего не хватает тому, что не работает.
Один приватный сервис загружается через туннель, а следующий уходит в тайм-аут, и возникает соблазн пересобрать весь профиль клиента. Работающий сервис полезнее как контроль, чем как повод начать заново. Он доказывает, что один пункт назначения, один порт и один путь авторизации были соблюдены, и ничего сверх этого.
К двум сервисам на одном шлюзе можно попасть через разные семейства адресов, разные подсети и разные политики.
Отделите работающий поток от неработающего
Относитесь к каждому сервису как к собственному потоку, а не как к симптому VPN. Показательный клиент может открыть portal.corp.example на 172.20.4.15:443 и всё равно не добраться до базы данных на 172.20.9.40:5432, потому что это два пункта назначения с двумя наборами правил. Запишите обе строки, прежде чем что-либо менять, включая порт и протокол, ведь правило, разрешающее TCP 443 на одном хосте, ничего не говорит о TCP 5432 на том же хосте.
Исследовать нужно неработающую строку. Работающая строка лишь показывает, где находится базовая линия, и она станет точкой сравнения после каждого изменения.
Сравните адреса, прежде чем сравнивать имена
Разрешите каждое полное имя через ту политику, которую приложение действительно использует, а затем запишите выбранное семейство адресов. Одно имя может вернуть адрес IPv6, а другое — IPv4, и старый кешированный ответ может отправить запрос на публичный адрес, не имеющий никакого отношения к приватному сервису.
ip route get 172.20.4.15
ip route get 172.20.9.40
ip -6 route get 2001:db8:60::20
Поиск отвечает на узкий вопрос: какой маршрут этот хост выберет для этого пункта назначения при текущих таблицах и правилах политики. Маршрут до 172.20.4.0/24 не покрывает 172.20.9.0/24, и второй менеджер сети или локальный маршрут с лучшей специфичностью может тихо перекрыть туннель. Повторите поиск внутри пространства имён или с меткой, которую использует приложение, когда они отличаются от вашей оболочки. Запишите и интерфейс, через который уходит пакет, потому что таблица маршрутов может называть один интерфейс, тогда как маршрутизация по политике выпускает поток через другой.
Совпадающий маршрут — это необходимое условие, а не разрешение. Он говорит, что пакету есть куда идти, и ничего о том, примет ли его межсетевой экран, служба авторизации или сам хост.
Протокол и этап ответа показывают, где всё останавливается
Ответ на ping не доказывает, что порт базы данных открыт, а успешная страница HTTPS не авторизует общий доступ к файлам на той же машине. Записывайте, что реально вернулось, вместо того чтобы сглаживать каждую неудачу в одну категорию. Тайм-аут, сброс, ошибка идентичности TLS и отказ на уровне приложения — каждый из них указывает на свой слой.
Различие важно, потому что исправления расходятся. Тишина обычно означает проблему с маршрутом, межсетевым экраном или трансляцией на пути. Мгновенный сброс говорит о том, что что-то дошло до хоста и отказало в порте. Ошибка сертификата означает, что соединение дошло, а имя не совпало, и это проблема конфигурации, а не доступности. Отказ приложения означает, что сеть выполнила свою работу, а идентичность была отклонена после.
Когда ресурс публикуется через шлюз, сравните адрес источника, который видит пункт назначения, с источником, который, как считает ваш клиент, он использует. Запрос, порождённый самим шлюзом, может успешно пройти, тогда как тот же запрос от клиента терпит неудачу, потому что оба приходят с разных адресов и встречают разные правила.
Измените одну переменную и повторите оба запроса
Идентичность — последнее место, куда люди смотрят, и первое, где появляется правильный отказ. Вход в VPN, группа каталога и учётная запись приложения — три отдельные идентичности, которые могут расходиться. Доступ к порталу никогда не означает доступа к базе данных за ним, и имя в одном каталоге не создаёт строку в другом. Если сервис находится вне предполагаемого охвата пользователя, отказ — это работающая система.
Попросите владельца ресурса подтвердить предполагаемое право вместо того, чтобы добавлять широкий маршрут или открывать группу для проверки. Расширение сети, чтобы доказать тезис, — это путь, которым временная диагностика превращается в постоянную уязвимость, и оно разрушает контроль, с которого вы начали. Одного доказанного несоответствия за итерацию достаточно: отсутствующий маршрут, неверное семейство адресов, заблокированный порт или отсутствующее членство в группе.
После каждого изменения повторяйте оба запроса и держите выводы рядом. Расследование заканчивается, когда неработающий сервис работает в рамках собственной политики, а работающий сервис и отказы, которые вы всё ещё ожидаете, ведут себя точно как прежде.