Географическое ограничение — это решение об IP-адресе, а VPN меняет, какой адрес видит сервис. Этого одного предложения достаточно, чтобы объяснить большинство запутанных обращений в поддержку: «сайт работает дома и не работает через туннель» и «сайт работает через туннель, но больше никто в офисе не может его загрузить» — один и тот же механизм с противоположными результатами. Это руководство ведёт диагностику в том порядке, который исключает причины, начиная с того, что периферия вам действительно сообщила. Один и тот же выходной адрес может пройти одну проверку и не пройти следующую, потому что каждая проверка оценивает своё свойство этого адреса.

Прочитайте 403, прежде чем что-либо менять

Геоблок и блок WAF приходят оба как 403, и исправляются они в разных местах. Сохраните заголовки ответа и первую строку тела, потому что CloudFront добавляет заголовок кэша и строку причины, которые говорят, какой уровень ответил:

curl -sS -o /tmp/body.txt -D /tmp/headers.txt https://d111111abcdef8.cloudfront.net/
grep -i "x-cache\|via" /tmp/headers.txt
head -c 300 /tmp/body.txt

Когда сама дистрибуция заблокировала запрос из-за географии, в теле есть сообщение с указанием странового ограничения. Когда его заблокировало правило WAF, тело обычно представляет собой общую страницу запрета, а идентификатор запроса дистрибуции в заголовках — то, что вы несёте в журналы WAF. Ошибка здесь отправляет вас к списку разрешённых стран из-за проблемы с правилом на основе частоты, а это день работы, который не может закончиться успехом.

Шаг 1: подтвердите, какой адрес видит дистрибуция

Спросите у сети, что видит внешний мир, с той же машины и по тому же маршруту, который использует сбойный браузер. curl -s https://checkip.amazonaws.com возвращает публичный адрес вызывающего, который для клиента VPN является выходом, а не домашним подключением абонента:

curl -s https://checkip.amazonaws.com
nslookup d111111abcdef8.cloudfront.net

Если этот адрес принадлежит выходу вашего провайдера в другой стране, географическое решение уже принято, и ничто на клиенте его не изменит. Запишите адрес в тикет, прежде чем трогать настройку, потому что это единственный факт в отчёте, с которым согласны и вы, и сервис.

Шаг 2: отделите страну от репутации

CloudFront определяет местоположение зрителя по базе GeoIP третьей стороны, привязанной к адресу источника запроса, и сопоставление приблизительное и региональное, а не точное определение. Когда местоположение определить нельзя, документированное поведение по умолчанию — всё равно отдать содержимое. Таким образом, есть три возможных состояния: выход сопоставляется с заблокированной страной, с разрешённой страной, или у базы нет мнения и запрос проходит.

Пользователь в заблокированной стране может выглядеть находящимся в разрешённой, если у провайдера там есть выход, а пользователь в разрешённой стране может быть заблокирован, потому что выход зарегистрирован в другом месте. Ни один результат не доказывает, что ограничение сломано. Оба — это ограничение, работающее с тем адресом, который ему дали, как описывает документация CloudFront по географическим ограничениям.

Репутация — вторая ось, и она переживает туннель. Управляемая группа правил AWS WAF для анонимных IP создана, чтобы блокировать запросы из VPN, прокси, узлов Tor и хостинг-провайдеров, поэтому запрос, прошедший проверку страны, всё ещё может быть отклонён из-за того, что это за адрес, а не где он находится. Если блокировка началась, когда вы перенесли туннель на облачный хост, вероятно, это тот самый уровень.

Шаг 3: проверьте поведение квоты

Общие выходы отказывают третьим способом. Ограничения частоты на IP и подсчёт сессий рассматривают один адрес как одного клиента, а потребительский выход несёт много абонентов сразу, поэтому шаблон запросов, незаметный с домашнего подключения, со стороны выхода выглядит как автоматизация. Симптом — троттлинг или временная блокировка, которая проходит сама, а не географическое сообщение об ошибке.

Дистрибуция может также намеренно считать сессии на адрес, например с помощью функции Lambda@Edge, пишущей в DynamoDB. Это не идентифицирует человека за выходом, но заставляет один адрес вести себя как один клиент, что часто и есть настоящая цель. Зафиксируйте различные адреса за жалобой, прежде чем настраивать любой порог, потому что корпоративный NAT перед двумястами столами снаружи выглядит точно как загруженный выход. Ожидайте ложных срабатываний от корпоративного NAT, университетской сети или большой семьи, которые все представляют один адрес.

Посмотрите выборочные запросы WAF и метрики правил на основе частоты, прежде чем винить географию. Правило, которое срабатывает на объём запросов выхода, оставляет чёткую подпись и подсказывает, является ли исправлением настройка лимита или другой выходной путь.

Что менять и в каком порядке

Сначала решите, для чего нужен элемент управления. Поддержание регионального каталога, ограничение злоупотреблений и исполнение контракта — три разные цели, и только первую решает список стран. Если цель — контроль злоупотреблений, выход — неверная единица идентичности, и никакое количество списков разрешений не сделает общий адрес надёжным.

Если для списка разрешений действительно нужен стабильный адрес, выделенный или статический выход помогает, потому что адрес можно зарегистрировать и он не меняется. Он не делает адрес жилым и не меняет страну, которую назначает ему база GeoIP. Перебор выходов, пока один не заработает, — это временное изменение репутации, а не исправление политики.

Затем запишите результат теми терминами, которые использовал заявитель: этот адрес заблокирован по стране, по репутации или по частоте, и вот элемент управления, который изменится. Всё более расплывчатое приглашает тот же тикет на следующей неделе с другим выходом.

Похожие статьи