Предыстория
После принятия всем известных законов в нашем Отечестве, я выхожу в инет через западный VPN-сервер.
Вчера, по причине некоторых проблем с основным провайдером, я временно переключился на провайдера под названием Дом.ру.
Сегодня, я лазил в гугле и искал некоторую информацию по уходу за кактусами. Одна из ссылок привела меня на сайт psy*****s.org. Там, как выяснилось, вовсю торгуют «веществами». И кактусы тоже продают, правда, довольно специфические.
Но, об этом я узнал позже, а сначала, я был шокирован показом мне странички «доступ к данному ресурсу был заблокирован…» с логотипом Дом.РУ.
С тех пор, как купил ВПН, я такие страницы не наблюдал вообще, по понятной причине.
Расследование
Для начала, я решил проверить, а работает ли мой VPN?
Проверил самым тупым способом — зашёл на сайт my-ip.ru. Увидел свой свой голландский IP, следовательно, c VPN всё в порядке.
Начал разбираться дальше. Мысль, что Дом.РУ каким-то образом может расковырять ssl, я отмёл сразу.
Проверил маршрут при помощи traceroute. Маршрут до сайта psy*****s.org ведёт, как положено, через мой VPN-сервер, а потом приводит на ДОМРУшную заглушку с адресом 92.255.241.100.
Остаётся ДНС. Но, на моём домашнем сервере настроен кэширующий ДНС-сервер bind, и в качестве forwarders указаны гугловские 8.8.8.8 и 8.8.4.4. Есть только одно «но»: доступ к этим серверам идёт по открытому каналу.
Проверяем:
ksh@master:~$ nslookup
> server 8.8.8.8
Default server: 8.8.8.8
Address: 8.8.8.8#53
> psy*****s.org
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: psy*****s.org
Address: 92.255.241.100
Теперь, заворачиваем трафик до внешних ДНС-серверов через VPN и проверяем снова:
ksh@master:~$ nslookup
> server 8.8.8.8
Default server: 8.8.8.8
Address: 8.8.8.8#53
> psy*****s.org
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: psy*****s.org
Address: 37.252.124.170
Ситуация понятна.
Морально-этическую и законную стороны действий провайдера, думаю, обсуждать смысла нет. По сути, речь идёт об атаке MITM.
Что делать?
Использовать DNSSEC — не выход, хотя, публичные сервера от Google и поддерживают этот протокол. Да, фальшивые ответы не пройдут валидацию, и в результате у вас попросту отвалится ДНС.
Выход один — любым способом шифровать трафик до публичных ДНС-серверов.
Интересна, также, позиция Google по этому вопросу.