Определяем IP за Cloudflare

Немного о CloudFlare

Cloudflre за последнее время стал очень популярен. Основное внимание людей сервис привлекает бесплатными SSL сертификатами, удобной панелью для редактирования DNS записей и хорошей системой кеширования ресурсов.

Что делать, когда нужен IP-адрес ресурса, а трафик идет через Cloudflare?

DNS

Просмотр DNS записей является наиболее популярным способом определения адреса сервера. Тут всё ясно:
Unix

dig -t ANY site.com

Windows

nslookup -type=ANY site.com

Почта

Популярные движки умеют работать через сторонние SMTP серверы, а эти серверы любят отправлять в заголовках ип-адрес отправителя. На StackOverflow находил информацию о том, что Gmail не выдает IP отправителя – это враньё. Gmail отправляет IP адрес отправителя в заголовках.

Все что нам нужно – получить письмо от сервера. Тут всё зависит от фантазии.

Использование информации из сертификата

Один серт на несколько доменов – это норма.

В стандарте X.509 есть расширение Subject Alternative Name (SAN), позволяющее указать список имен подтверждаемых данным сертификатом. Именно это расширение используется в CF.

Заглянув в информацию о сертификате (в Firefox: Инструменты -> Информация о странице -> Защита -> Просмотреть сертификат -> вкладка подробности) видим список доменов.

Список субъектов сертификата

Когда проверял сайты на своем аккаунте, оказалось так, что почти все мои домены были в этом списке альтернативных имен, что является косвенным определением доменов одного аккаунта на CF. Проверяя домены из списка может попасться тот, который уже поможет в определении реального адреса сервера, например через те же поддомены.

Ближе к делу

Найти реальный пример не составило труда. За поиском домена сходил в гости к Кребсу. В посте указан домен grimbooter[dot]com, который и проанализируем.

Нужный домен

Пройдемся по нему перечисленными выше методами.

Запрос через DIG

Две A записи указывают на IP из диапазона cloudflare, но почтовая MX запись ведет на интересный поддомен. Проверим.

Запрос на поддомен

В результате получаем реальный IP-адрес сервера.

Адрес получен

Для проверки почты рассмотрим домен из того же поста Кребса – thehosted[dot]me.

После регистрации на почту приходит письмо. Посмотрим заголовки (в Gmail: меню сообщения -> показать оригинал).

Заголовки письма