Безграничный DNS

Материал из ALT Linux Wiki

Преамбула

Ввиду государственных/корпоративных потуг урезать взрослым людям остатки свободы в хождении по просторам интернетов куда заблагорассудится, встаёт вопрос, каким образом от оных потуг хоть «на минималках» отгородиться.

Что ж, попробуем.

Амбула

Понадобятся пакеты:

  • dnsmasq (на уровне организации) или unbound (в масштабе провайдера): для кэширования запросов к шифрующимся — эрго, довольно неспешным, резолверам (оба ниже);
  • dnscrypt-proxy: для преобразования в IP-адреса имён сайтов (кроме зоны .onion), не взирая на преграды, ставящиеся хоть вышестоящим провайдером, хоть надзорными органами;
  • tor: для преобразования имён сайтов в зоне .onion и пропуска к ним.

TOR (The Onion Router, «луковый маршрутизатор»)

Настроим так, чтобы он и в ДНС умел, и к ресурсам пропускал. Добавим в его конфиг :


Имена-то через торовский ДНС-порт резолвятся — хоть днсмаском, хоть анбаундом. А вот чтоб до них достучаться, эти стуки тоже надо через тора отредиректить.

1. И вот тут как раз нужен тор-параметр «серой» сети VirtualAddrNetwork (у меня он 172.16.0.0/12, ибо в локалках этой адресации нет), рандомное значение из которого и добавляется к ип6-адресу онион-сайта в виде ип4-адреса.

2. Клиентским компам раздать статический маршрут в сеть $VirtualAddrNetwork через тор-машинку.

3. А на ней самой запросы в $VirtualAddrNetwork отнатить на транспортный тор-порт — например, нф-таблицами:

table ip nat {
  chain prerouting {
    type nat hook prerouting priority filter
    iif "lan" ip daddr 172.16.0.0/12 tcp flags & (syn | ack) == syn redirect to 9040
  }
}

Постамбула