Безграничный DNS: различия между версиями
Дым (обсуждение | вклад) Нет описания правки |
Дым (обсуждение | вклад) |
||
Строка 34: | Строка 34: | ||
==Переадресация запросов к .onion-сайтам== | ==Переадресация запросов к .onion-сайтам== | ||
Ну, онион-имена через торовский ДНС-порт теперь резолвятся. Но чтобы до них достучаться, эти стуки следует тоже через тор пропустить. Например, посредством нф-таблиц. | Ну, онион-имена через торовский ДНС-порт теперь резолвятся. Но чтобы до них достучаться, эти стуки следует тоже через тор пропустить. Например, посредством нф-таблиц (gримеры к ип-таблицам можете нагуглить самостоятельно — их тьма.). | ||
Запросы машин из локалки к адресам из <strong>VirtualAddrNetwork</strong> следует перекидывать на транспортный тор-порт, добавив в файл настроек </code>/etc/nftables.conf</code> (в моём случае): | Запросы машин из локалки к адресам из <strong>VirtualAddrNetwork</strong> следует перекидывать на транспортный тор-порт, добавив в файл настроек </code>/etc/nftables.conf</code> (в моём случае): | ||
Строка 54: | Строка 54: | ||
} | } | ||
</source> | </source> | ||
Для пропуска же этих запросов наружу не обойтись без включения маршрутизации — в файл <code>/etc/sysctl.d/router.conf</code> добавить строчку <code>net.ipv4.ip_forward = 1</code>, и примененить без перезагрузки, исполнив: | Для пропуска же этих запросов наружу не обойтись без включения маршрутизации — в файл <code>/etc/sysctl.d/router.conf</code> добавить строчку <code>net.ipv4.ip_forward = 1</code>, и примененить без перезагрузки, исполнив: | ||
<source lang="bash"> | <source lang="bash"> |
Версия от 07:27, 9 сентября 2021
Преамбула
Ввиду государственных/корпоративных потуг урезать взрослым людям остатки свободы в хождении по просторам интернетов куда заблагорассудится, встаёт вопрос, каким образом от оных потуг хоть «на минималках» отгородиться.
Что ж, попробуем.
Амбула
Понадобятся пакеты:
- dnsmasq (на уровне организации/квартиры) или unbound (в масштабе провайдера): для кэширования запросов к шифрующимся — эрго, довольно неспешным, резолверам (оба ниже);
- dnscrypt-proxy: для преобразования в IP-адреса имён сайтов (кроме зоны .onion), не взирая на преграды, ставящиеся хоть вышестоящим провайдером, хоть надзорными органами;
- tor: для преобразования имён сайтов в зоне .onion и пропуска к ним.
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
2. Клиентским компам раздать статический маршрут в сеть $VirtualAddrNetwork через тор-машинку.
Переадресация запросов к .onion-сайтам
Ну, онион-имена через торовский ДНС-порт теперь резолвятся. Но чтобы до них достучаться, эти стуки следует тоже через тор пропустить. Например, посредством нф-таблиц (gримеры к ип-таблицам можете нагуглить самостоятельно — их тьма.).
Запросы машин из локалки к адресам из 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