Отключение шифрованного поиска Google, персонально для себя (с помощью BIND)

в 9:14, , рубрики: DNS, Google, HTTPS, linux, SSL, windows, Windows Server, Софт, метки: , , , , ,

Мы используем несколько провайдеров, у одного из которых временами наблюдается деградация трафика по SSL.

Иначе говоря, иногда гуглить становится невозможно, т.к. Google сейчас полностью перешел на использование HTTPS.

Чтобы хоть как-то выплеснуть ярость по поводу использования других поисковых машин вместо Гугля, в тех ситуациях, когда нужен именно Гуголь, мне пришлось разрушить битой четыре казённых монитора производства Apple, убить восемь бабушек и устроить революцию на Кубе.

Для тех кто попал в такую же ситуацию, в этом посте я расскажу, как получить заветное окошко с вот такой картинкой:

image

Инструкция для Windows 7, с подсказками для линуксов (на примере ArchLinux).

0) Общий смысл в следующем:
— установить локальный DNS-сервер (BIND9),
— настроить его (добавить форвардинг на основной DNS, зону www.google.com, прописать CNAME на nosslsearch.google.com
— прописать этот DNS как умолчательный, остальные подвинуть вниз по цепочке
Всё это делается легко, просто, за несколько минут.

1) Скачать Bind9 по ссылке:
http://www.isc.org/software/bind

последняя версия на момент написания была такая:
http://www.isc.org/software/bind/991-p2/download/bind991-p2zip

Распаковать архив, запустить инсталлятор (BINDInstall.exe) с правами администратора.

Target Directory — C:named, для совместимости с файлами конфигурации, которые будут ниже. Если менять на другую, то везде.

(арчлинукс: pacman -S bind будет достаточно :) Target Directory в нашем случае — корень.)

3) При создании пользователя (Service Account Name, Service Account Password) накладывается стандартная политика. Т.е. если в вашем домене все пароли должны быть длинными буквенно-цифровыми строчками, а имена пользователей начинаться с большой буквы — сюда нужно писать так же, иначе инсталлятор покажет ошибку «не могу сделать пользователя».

(арчлинукс: у нас всё из коробки, bind устанавливается как демон, правильные права есть по-умолчанию при любой системе инициализации)

4) Дальше идем в нашу Target Directory и создаем конфиги.

(Пара слов о происхождении конфигов.
Это умолчательный конфиг Bind9 для ArchLinux.
В свою очередь root.hint взят из FTP.INTERNIC.NET, остальное написано руками)

5) Создаем файл C:namedetcnamed.conf
Содержание такое:

//
// /etc/named.conf
//

//http://users.livejournal.com/__hedin/335226.html

options {
 directory "C:namedvarnamed";
 pid-file "C:namedvarrunnamednamed.pid";
 auth-nxdomain yes;
 datasize default;
 listen-on-v6 { any; };

 // Default security settings.
 allow-recursion { 127.0.0.1; };
 allow-transfer { none; };
 allow-update { none; };
    version none;
    hostname none;
    server-id none;
};

zone "localhost" IN {
 type master;
 file "localhost.zone";
 allow-transfer { any; };
};

zone "0.0.127.in-addr.arpa" IN {
 type master;
 file "127.0.0.zone";
 allow-transfer { any; };
};

zone "." IN {
 type forward;
 forward first;
 forwarders {
  192.168.0.6;
  192.168.0.4;
 };
};

zone "www.google.com" in {
 type master;  
 notify no; 
 allow-query { any; }; 
 file "www.google.com.zone"; 
};

#zone "." IN {
# type hint;
# file "root.hint";
#};

logging {
        channel xfer-log {
                file "C:namedvarlognamed.log";
                print-category yes;
                print-severity yes;
                print-time yes;
                severity info;
        };
        category xfer-in { xfer-log; };
        category xfer-out { xfer-log; };
        category notify { xfer-log; };
};

192.168.0.6, 192.168.0.4 — это адреса корпоративного DNS'а. Их нужно знать, и они должны быть статическими. Если у вас используется домен на основе Windows Server, они скорее всего именно такие, и их можно узнать в свойствах сетевого подключения.

(Я оставил закомменченный root.hint на случай, если внезапно захочется заигнорить корпоративные DNS)

(арчлинукс: этот файл у нас уже есть, из текста выше нужно скопипастать секции zone «localhost», zone «0.0.127.in-addr.arpa», zone «www.google.com», и закомментить старую #zone "." IN.)

6) Создаем директории /var/log, /var/named, /var/run/named внутри нашей Target Directory.

(линукс: все уже есть)

7) Внутри /var/named положить следующие файлы:

www.google.com.zone:

@       IN      SOA     localhost.      root.localhost. ( 
                                        2012050900 
                                        7200 
                                        1800 
                                        1209600 
                                        300 ) 
        1800        IN        NS        localhost. 
        1800        IN        A        216.239.32.20 ;nosslsearch.google.com. 

localhost.zone:

$ORIGIN localhost.
@   1D IN SOA @ root (
     42  ; serial (yyyymmdd##)
     3H  ; refresh
     15M  ; retry
     1W  ; expiry
     1D )  ; minimum ttl

   1D IN NS @
   1D IN A  127.0.0.1

127.0.0.zone:

$ORIGIN 0.0.127.in-addr.arpa.

@   1D IN SOA localhost. root.localhost. (
     42  ; serial (yyyymmdd##)
     3H  ; refresh
     15M  ; retry
     1W  ; expiry
     1D )  ; minimum ttl

   1D IN NS localhost.
1   1D IN PTR localhost.

Скачать и положить туда же файл
ftp://ftp.internic.net/domain/named.cache
преименовав его в root.hint

(арчлинукс: всё это уже есть, кроме www.google.com.zone, его нужно добавить)

8) Проверяем что всё работает:

Запускаем командную строку:
Start -> в полоске Search набираем cmd -> enter

Переходим в директорию с BIND'ом:
cd C:namedbin

Запускаем его:
named.exe -f -u named

Открываем еще одну консоль:
Start -> в полоске Search набираем cmd -> enter

Делаем поиск гугля по имени:
nslookup www.google.com 127.0.0.1

Выхлоп должен походить на вот этот:

Server:  localhost
Address:  127.0.0.1

DNS request timed out.
    timeout was 2 seconds.
Name:    www.google.com
Address:  216.239.32.20

ЕСЛИ ОН НЕ ТАКОЙ, ВСЁ ПРОПАЛО, ПРОВЕРЯЕМ СВОИ ДЕЙСТВИЯ

(арчлинукс: nslookup www.google.com должен выдать www.google.com->216.239.32.20)

9) Запускаем Bind как сервис:

Start -> правой кнопкой по Computer -> Manage -> Services and Applications -> Services -> правой кнопкой по ISC BIND -> Start или Restart (что доступно)

(арчлинукс: /etc/rc.d/named restart)

10) Прописываем в свойства сети. 127.0.0.1 должен стать первым DNSом, остальные подвинуться.

Конкретно вот так:
Start -> Control Panel -> Network and Sharing Center -> Change adapter settings -> правой кнопкой по основному адаптеру (у меня это «Local Area Connection») -> Properties -> выделить Internet Protocol Version 4 -> Переключить радиогруппу на «Use the following DNS Server Addresses:» -> кнопка Advanced -> вкладка DNS -> с помощью кнопок «вверх», «вниз», «add», «remove» добавить и выстроить DNS в нужном порядке: вначале 127.0.0.1, потом корпоративные (у меня они такие: 127.0.0.1, 192.168.0.6, 192.168.0.4).

(С IPv6 не экспериментировал, он у меня просто отключен. Теоретически, должно работать.)

(арчлинукс: в /etc/resolv.conf добавить строчку nameserver 127.0.0.1 так, чтобы она была самой первой строчкой в этом файле, начинающейся с nameserver)

11) Проверяем в браузере (заходим на www.google.com, ищем что-нибудь, наблюдаем ошибку как на картинке в начале поста)

12) PROFIT

Счастья вам, дамы и господа.
ОМ.

На территории нашей организации за помощью в настройке и вопросами можно обращаться ко мне.
Пост одновременно опубликован в моем ЖЖ (не у всех есть возможность читать и комментировать Хабр)

Автор: olegchir


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js