Безграничный DNS: различия между версиями

Материал из ALT Linux Wiki
Строка 7: Строка 7:
<ul>
<ul>
<li><strong>tor</strong>: для преобразования в IP-адреса имён сайтов из зоны .onion и пропуска к ним;</li>
<li><strong>tor</strong>: для преобразования в IP-адреса имён сайтов из зоны .onion и пропуска к ним;</li>
<li><strong>dnscrypt-proxy</strong>: для преобразования всех остальных имён, не взирая на преграды, ставящиеся хоть вышестоящим провайдером, хоть надзорными органами;</li>
<li><strong>dnscrypt-proxy</strong>: для преобразования всех остальных имён, не взирая на препоны, чинимые хоть вышестоящим провайдером, хоть надзорными органами;</li>
<li><strong>dnsmasq</strong> (на уровне организации/квартиры) или <strong>unbound</strong> (в масштабе провайдера): для кэширования запросов к обоим «шифрующимся» (эрго, довольно неспешным) вышеозначенным резолверам.</li>
<li><strong>dnsmasq</strong> (на уровне организации/квартиры) или <strong>unbound</strong> (в масштабе провайдера): для кэширования запросов к обоим «шифрующимся» (эрго, довольно неспешным) вышеозначенным резолверам.</li>
</ul>
</ul>

Версия от 07:42, 9 сентября 2021

Преамбула

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

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

Амбула

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

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

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

Настроим так, чтобы он и в ДНС умел, и к ресурсам пропускал. Добавим в его конфиг /etc/tor/torrc (адреса и порты выбирайте уместные для своих реалий):

VirtualAddrNetwork    172.16.0.0/12   # «Серая» сеть, не используемая на предприятии…
AutomapHostsOnResolve 1               # …адрес из которой прикреплять к IPv6-адресу каждого онион-сайта.
DNSPort               853             # Порт на петлевом интерфейсе для резолвинга .onion-имён.
TransPort             9040            # А этот — для перенаправления в тор-сеть запросов к таким сайтам.
SocksPort             10.0.1.187:9040 # Собственный адрес:порт машины в обслуживаемой локалке (если надо проксировать запросы к недоступным напрямую ресурсам).

«Шифрующийся» ДНС-прокси

dnscrypt-proxy

Кэширующий ДНС

DNSmasq

UnBound

Переадресация запросов к .onion-сайтам

Ну, онион-имена через торовский ДНС-порт теперь резолвятся. Но чтобы до них достучаться, эти стуки следует тоже пропустить через тор. Например, посредством нф-таблиц (примеры к ип-таблицам можете нагуглить самостоятельно — их тьма.).

Запросы машин из локалки к адресам из VirtualAddrNetwork следует перекидывать на транспортный тор-порт, добавив в файл настроек /etc/nftables.conf (в моём случае):

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
    }
}

А чтоб клиентам можно было ходить не только на .onion-сайты, но и прочие блокируемые ресурсы (ну, и по ссх к нашему серверу подключаться), ещё и это добавить туда же:

table inet filter {
    chain input {
        type filter hook input priority filter
        ct state new tcp dport {ssh,9040} tcp flags & (syn|ack) == syn accept
    }
}

Для пропуска же этих запросов наружу не обойтись без включения маршрутизации — в файл /etc/sysctl.d/router.conf добавить строчку net.ipv4.ip_forward = 1, и примененить без перезагрузки, исполнив:

# sysctl -w net.ipv4.ip_forward=1

Постамбула

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

Вариант статики реализуйте хоть доменными политиками, хоть прибитием через DHCP — как заблагорассудится.