Къде отива DNS, когато комбинирате Tor и VPN
Tor Browser, ОС и клиентът на тунела могат да резолвват различно име по различен път. Проследете обмените, преди да го наречете изтичане.
Работят два инструмента за поверителност, една страница не се зарежда, а тест на резолвъра казва, че нещо извън браузъра е получило име. Преди това да стане доклад за изтичане, назовете обмена, от който е дошло. Настройката Tor плюс VPN съдържа поне три различни търсения на имена с три различни собственика, а преминаването през тях в реда, в който се случват, е най-бързият начин да видите кое от тях се държи неправилно.
Назовавайте всеки обмен, преди да го наречете изтичане
Първият обмен резолвва самата крайна точка на VPN и се случва преди да съществува каквато и да е защита. Вторият резолвва дестинация за Tor Browser, който може да предаде името на проксито, вместо да го резолвва локално. Третият обхваща всичко останало на машината, включително проверките за актуализации, пощенските клиенти и собствените заявки на операционната система към услуги. Само първият от тях може да се случи, без да участват другите два.
Всеки от тях може да следва различен път, а един тест в браузъра наблюдава само собствената си заявка. Именно от приемането на един резултат за състоянието и на трите започва повечето объркване.
Запишете кои имена принадлежат на кой слой, преди да промените нещо. Частните организационни имена, публичната дестинация и самата крайна точка на тунела не носят едно и също изискване и политика, която ги третира като една категория, ще счупи нещо.
Заявката при стартиране се случва преди тунела
Клиент, конфигуриран с име на хост, трябва да резолвне това име, за да отвори тунела, а в този момент няма тунел, който да понесе заявката. Отговаря какъвто и резолвър операционната система предложи в текущата мрежа, който може да е портал за прихващане, хотелски резолвър или публичен. Това не е изтичане в тунела, защото още няма тунел.
Промяната на настройката за сигурен DNS в браузъра също не засяга тази заявка, тъй като тя принадлежи на услуга, която работи извън браузъра и стартира преди отварянето на която и да е страница. Ако името на крайната точка не се резолвне, никаква политика в тунела няма да помогне, защото отказът настъпва един етап по-рано от всичко, което конфигурацията описва.
Това е единственото място, където използването на буквален адрес за крайната точка, ако доставчикът го поддържа, премахва зависимост, вместо да добавя такава. То премахва и възможността да следвате доставчик, който сменя адреси, така че компромисът е реален и трябва да бъде решен, а не открит.
Браузърът и останалата част от машината се различават
Интерфейсът SOCKS на Tor поддържа предаване на име на хост за дестинация към проксито, което означава, че резолвването се извършва от отдалечената страна и локалната машина изобщо не пита. Обикновено приложение с поддръжка на прокси може първо да резолвне името локално и после да се свърже с получения адрес, което създава локална заявка за дестинация, която потребителят е смятал за проксирана. Така двете приложения могат да изтичат на различни места, докато споделят една настройка за прокси. Нищо в споделения адрес на проксито не ви казва кое от двете поведения се използва.
Браузърите добавят още един слой, когато е включен сигурен DNS, защото браузърът може да избере свой доставчик и напълно да заобиколи системния резолвър. Клиентът на тунела междувременно може да прокара резолвър през тунела за цялата машина. Тези две настройки могат да бъдат едновременно правилни и пак да описват различно поведение за различните програми.
Проверявайте програмата, която е направила заявката, вместо да екстраполирате от една тестова страница. Разликата между заявка, пренесена в тунела, и такава, която никога не е достигнала Tor, е точно разликата, която един адрес на резолвър не може да покаже.
Проверете всяка програма, после сравнете с намерението
Правете наблюденията поотделно: какво би използвала системата, за какво е конфигуриран браузърът и дали SOCKS връзката носи име или адрес. Последното е разликата между отдалечено и локално резолвване и спецификацията за разширения на SOCKS описва как името на хост се предава, вместо първо да се резолвне.
resolvectl status | grep -E "Current DNS Server|DNS Servers"
ss -tnp '( dport = :9050 )'
dig +short dev.internal.example
getent hosts vpn-endpoint.example.net
След това сравнете наблюдаваното с това, което сте имали намерение. Публично име, резолвнато през тунела от избран от вас резолвър, не е същата констатация като частно име, предадено на публичен резолвър при отпадане, и обикновено само второто изисква действие. Първото е конфигурация, работеща както е проектирана, дори да изглежда необичайно в доклад.
Записвайте изключенията, които приемате, включително заявката при стартиране, която не може да бъде защитена. Записаното изключение е проектно решение, докато същото изключение, открито по-късно, изглежда като дефект. Човекът, който го намери, ще се отнася към него като към такъв и ще прекарате срещата в обяснение защо не е.