Безграничный DNS: различия между версиями
Дым (обсуждение | вклад) |
Дым (обсуждение | вклад) Нет описания правки |
||
Строка 30: | Строка 30: | ||
===DNSmasq=== | ===DNSmasq=== | ||
В <code>/etc/dnsmasq.conf раскомментировать строчку: | В <code>/etc/dnsmasq.conf раскомментировать строчку: | ||
conf-dir=/etc/dnsmasq.d/,*.conf | <source lang="bash">conf-dir=/etc/dnsmasq.d/,*.conf</source> | ||
И создать парочку файлов. | И создать парочку файлов. | ||
<code>/etc/dnsmasq.d/main.conf</code> (): | <code>/etc/dnsmasq.d/main.conf</code> (): | ||
<source lang="bash"> | |||
bind-interfaces | bind-interfaces | ||
expand-hosts | expand-hosts | ||
Строка 40: | Строка 41: | ||
# имя интерфейса локалки ставьте своё! | # имя интерфейса локалки ставьте своё! | ||
interface=lan | interface=lan | ||
</source> | |||
<code>/etc/dnsmasq.d/dns.conf</code>: | <code>/etc/dnsmasq.d/dns.conf</code>: | ||
<source lang="bash"> | |||
server=/onion/127.0.0.1#853 | server=/onion/127.0.0.1#853 | ||
server=127.0.2.1 | server=127.0.2.1 | ||
</source> | |||
===UnBound=== | ===UnBound=== | ||
Версия от 08:44, 9 сентября 2021
Преамбула
Ввиду государственных/корпоративных поползновений на остатки свободы ходить взрослым людям по просторам интернетов куда заблагорассудится, встаёт вопрос, каким образом от оных препон хоть «на минималках» отгородиться.
Что ж, попробуем.
Амбула
Понадобятся пакеты:
- tor — для преобразования в IP-адреса имён сайтов из зоны .onion и пропуска к ним;
- dnscrypt-proxy — для преобразования всех остальных имён, не взирая на препоны, чинимые хоть вышестоящим провайдером, хоть надзорными органами;
- dnsmasq (на уровне организации/квартиры) или unbound (в масштабе провайдера) — для кэширования запросов к обоим вышеозначенным «шифрующимся» (эрго, довольно неспешным) резолверам.
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 # Собственный адрес:порт машины в обслуживаемой локалке (если надо проксировать запросы к недоступным напрямую ресурсам).
Адреса и порты выбирайте уместные для своих реалий.
«Шифрующийся» ДНС-прокси
Всего-то добавить в начало конфига /etc/dnscrypt-proxy/dnscrypt-proxy.toml
строчку:
server_names = ['cisco', 'cisco-ipv6']
Кэширующий ДНС
DNSmasq
В /etc/dnsmasq.conf раскомментировать строчку:
conf-dir=/etc/dnsmasq.d/,*.conf
И создать парочку файлов.
/etc/dnsmasq.d/main.conf
():
bind-interfaces
expand-hosts
localise-queries
log-queries
# имя интерфейса локалки ставьте своё!
interface=lan
/etc/dnsmasq.d/dns.conf
:
server=/onion/127.0.0.1#853
server=127.0.2.1
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
Запуск
# systemctl enable --now tor dnscrypt-proxy dnsmasq nftables
Проверка работоспособности
Постамбула
Осталось раздать клиентским дивайсам статический маршрут в сеть VirtualAddrNetwork через нашу тор-машинку.
Вариант статики реализуйте хоть доменными политиками, хоть прибитием через DHCP — как вам угодно.
Кстати, к блокируемым ресурсам не обязательно на каждой машинке через браузерный прокси-плагин ломиться. Есть вариант с ява-скриптовым автопрокси на всю контору, но это тема для другой статьи.