Раньше я не уделял должного внимания шифрованию, так как данные передаваемые в общественных местах не имели большой важности, но сегодня я увидел в этом и оборотную сторону медали. В институте, как обычно, на паре информатики, студенты сидели вконтакте, хабре и других ресурсах и ничего не предвещало опасности. Все были в неведении того, что творилось по ту сторону сети. А творился там WireShark, любезно показывающий преподавателю адреса посещаемых страничек, шпор и соответственно индекс «внимания» студентов. В этот момент я понял — нам угрожает опасность не сдать сессию.
Тогда я решил найти способ скрыть действия в сети.
Поиск решения
Ранее я использовал TOR, но его скорость оказалась мала, да и не доверял я ему что он скроет все запросы по всем портам. Тогда я начал, в который раз, искать бесплатный VPN. И тут откуда не возьмись статья про Comodo TrustConnect(т.к. моя статья является её логическим продолжением, сначала прочтите её). Я начал радостно устанавливать пакеты и регистрироваться, правда меня смутила фраза про заблокированные порты, но ожидалось, что хотя бы HTTP будет работать сносно. Бесплатный сыр в мышеловке показал свое истинное лицо. Запускаю VPN, а страницы не открываются — DNS не проходит.
Гугл в помощь
Вооружившись гуглом спустя час находим, что DNS просто блокируется и его надо перенаправлять.
Кратко опишу настройку VPN под Linux (подробная есть на сайте после регистрации): ставим openvpn, после чего просто копируете ca.crt и free_client.conf из инструкции на сайте в /etc/openvpn.
Далее можно создать файл файл pass, написать на первой строчке логин, на второй пароль.(но лучше не хранить все в открытом виде)
Потом запускаем
sudo openvpn --config /etc/openvpn/free_client.conf --auth-user-pass /etc/openvpn/pass
Хорошо, добавляем в /etc/openvpn/free_client.conf:
route <наш DNS> 255.255.255.255 net_gateway
И о чудо, все работает!
Вот только в tcpdump видно как посылаются DNS запросы и светится посещенный сайт!
Шифруем DNS
К моему счастью спустя 10 минут был найден DnsCrypt от OpenDNS. Под Archlinux было достаточно поставить пакет dnscrypt-proxy из aur и запустить. В логе выдает адрес через который идут запросы. Чтобы работало вписываем вместо DNS в конфиге free_client.conf этот адрес. Например в моем случае
route 208.67.220.220 255.255.255.255 net_gateway
Все, после этого весь трафик идет через VPN, а DNS запросы идут через DnsCrypt. В tcpdump адреса не светятся. Красота.
Автор: BupycNet