Доступ в інтернет у мене мобільний - 3G від МТС, і недавно я з'ясував, що оператор перехоплює не тільки HTTP трафік (який прозоро проксіруется через якийсь Harmony proxy), але і DNS. Причини мені невідомі, але сама ідея не подобається, до того ж не працює OpenNIC (який я практично не використовую, але вважаю за краще мати до нього доступ). Я перебрав кілька способів відновлення прямого доступу до DNS.
Перший варіант, який я пробував - OpenVPN. Сервер мій знаходиться досить далеко, зв'язок з ним не дуже швидка. До того ж в результаті зникнення кількох пакетів VPN клієнт може надовго втратити зв'язок з сервером, чому візуально пропадає весь інтернет, а не тільки один запит, який потрапив на втрачені пакети. Якщо на стабільному міському каналі VPN був би нормальним рішенням, то при з'єднанні по 3G з села цей варіант не підходить.
Другий варіант був, по суті, таким же, але замість OpenVPN я пробував sshuttle. Різниця в тому, що можна легко переключитися на більш швидкий сервер, в ролі якого може виступати будь-яка машина, до якої є доступ по SSH, і не потрібно встановлювати там VPN. Sshuttle вміє проксіровать DNS, в цілому працює непогано, але теж досить повільно і чутливий до втрати пакетів.
Третій варіант полягав в установці DNS сервера на своїй машині на нестандартному порту, який не ріже оператор. В цілому це працює, але сервер у мене далеко, тому працює досить повільно. До того ж потрібен проміжний сервер, а його може не бути.
Четвертий варіант - той, на якому я зупинився - використання DNSCrypt. Це клієнт-серверний додаток для шифрування і проксінг DNS запитів по TCP або UDP. Публічний сервер є у OpenDNS. які і просувають цю технологію. Їх сервер відповідає, в тому числі, по TCP порту 443, що не відрізняються від HTTPS, тобто оператор не може цей трафік перехопити і підмінити, може тільки заборонити.
Щоб знизити навантаження на зовнішній канал, я використовую dnsmasq, який кешируєт запити, а з зовнішнім світом спілкується через dnscrypt-proxy. Цей зв'язок двох посад у мене встановлена на маршрутизаторі, там же стоїть Squid з великим кешем, що робить інтернет набагато більш чуйним і безпечним.
Конфиг dnsmasq виглядає якось так:
Стежити за розвитком подій можна через RSS стрічку або поштову розсилку.