Безграничный DNS: различия между версиями
Дым (обсуждение | вклад) Нет описания правки |
Дым (обсуждение | вклад) |
||
Строка 97: | Строка 97: | ||
==Проверка работоспособности== | ==Проверка работоспособности== | ||
===С нашего днс/тор-сервера=== | ===С нашего днс/тор-сервера=== | ||
<strong>$ host google.ru 10.0.1.187</strong> | <strong>admin@dnsproxy:~$ host google.ru 10.0.1.187</strong> | ||
<source lang="bash"> | <source lang="bash"> | ||
Using domain server: | Using domain server: | ||
Строка 108: | Строка 108: | ||
google.ru mail is handled by 0 smtp.google.com. | google.ru mail is handled by 0 smtp.google.com. | ||
</source> | </source> | ||
<strong>$ host ya.ru localhost</strong> | <strong>admin@dnsproxy:~$ host ya.ru localhost</strong> | ||
<source lang="bash"> | <source lang="bash"> | ||
Using domain server: | Using domain server: | ||
Строка 119: | Строка 119: | ||
ya.ru mail is handled by 10 mx.yandex.ru. | ya.ru mail is handled by 10 mx.yandex.ru. | ||
</source> | </source> | ||
<strong>$ host rutorzzmfflzllk5.onion</strong> | <strong>admin@dnsproxy:~$ host rutorzzmfflzllk5.onion</strong> | ||
<source lang="bash"> | <source lang="bash"> | ||
rutorzzmfflzllk5.onion has address 172.30.0.165 | rutorzzmfflzllk5.onion has address 172.30.0.165 | ||
Строка 151: | Строка 151: | ||
Host ghwqllapkfpnufc4rjlcay2y4ycgngpgdjhl6qblasz3q4s33wsx5uyd.onion not found: 2(SERVFAIL) | Host ghwqllapkfpnufc4rjlcay2y4ycgngpgdjhl6qblasz3q4s33wsx5uyd.onion not found: 2(SERVFAIL) | ||
</source> | </source> | ||
=Постамбула= | =Постамбула= | ||
Осталось раздать клиентским дивайсам статический маршрут в сеть <strong>VirtualAddrNetwork</strong> через нашу тор-машинку. | Осталось раздать клиентским дивайсам статический маршрут в сеть <strong>VirtualAddrNetwork</strong> через нашу тор-машинку. |
Версия от 10:12, 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']
Умолчально он слушает запросы на 127.0.2.1:53.
Кэширующий ДНС
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
(onion-имена запрашивать у тора, все остальные — у днс-криптопрокси):
server=/onion/127.0.0.1#853
server=127.0.2.1
UnBound
/etc/unbound/unbound.conf
(где искать настройки):
include-toplevel: "/etc/unbound/*.conf"
/etc/unbound/server.conf
(основные параметры — адрес в локалке ставить свой!):
server:
do-not-query-localhost: no
interface: 127.0.0.1
interface: 10.0.1.187
domain-insecure: "onion"
private-domain: "onion"
local-zone: "onion." nodefault
/etc/unbound/forwards.conf
(куда стучаться по зонам):
forward-zone:
name: "onion"
forward-addr: 127.0.0.1@853
forward-zone:
name: "."
forward-tls-upstream: yes
forward-addr: 127.0.2.1
Переадресация запросов к .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 nftables tor dnscrypt-proxy dnsmasq (или unbound)
Проверка работоспособности
С нашего днс/тор-сервера
admin@dnsproxy:~$ host google.ru 10.0.1.187
Using domain server:
Name: 10.0.1.187
Address: 10.0.1.187#53
Aliases:
google.ru has address 173.194.73.94
google.ru has IPv6 address 2a00:1450:4010:c0d::5e
google.ru mail is handled by 0 smtp.google.com.
admin@dnsproxy:~$ host ya.ru localhost
Using domain server:
Name: localhost
Address: ::1#53
Aliases:
ya.ru has address 87.250.250.242
ya.ru has IPv6 address 2a02:6b8::2:242
ya.ru mail is handled by 10 mx.yandex.ru.
admin@dnsproxy:~$ host rutorzzmfflzllk5.onion
rutorzzmfflzllk5.onion has address 172.30.0.165
rutorzzmfflzllk5.onion has IPv6 address feb7:c904:733c:691f:d722:3a78:be39:6ba5
Host rutorzzmfflzllk5.onion not found: 4(NOTIMP)
С рабочей станции
[admin@it-1 ~]$ host mail.ru 10.0.1.187
Using domain server:
Name: 10.0.1.187
Address: 10.0.1.187#53
Aliases:
mail.ru has address 217.69.139.202
mail.ru has address 94.100.180.200
mail.ru has address 94.100.180.201
mail.ru has address 217.69.139.200
mail.ru has IPv6 address 2a00:1148:db00:0:b0b0::1
mail.ru mail is handled by 10 mxs.mail.ru.
[admin@it-1 .ssh]$ host ghwqllapkfpnufc4rjlcay2y4ycgngpgdjhl6qblasz3q4s33wsx5uyd.onion 10.0.1.187
Using domain server:
Name: 10.0.1.187
Address: 10.0.1.187#53
Aliases:
ghwqllapkfpnufc4rjlcay2y4ycgngpgdjhl6qblasz3q4s33wsx5uyd.onion has address 172.24.99.80
ghwqllapkfpnufc4rjlcay2y4ycgngpgdjhl6qblasz3q4s33wsx5uyd.onion has IPv6 address fea2:9235:5ab8:aaa3:b6cf:c537:69f4:b09a
Host ghwqllapkfpnufc4rjlcay2y4ycgngpgdjhl6qblasz3q4s33wsx5uyd.onion not found: 2(SERVFAIL)
Постамбула
Осталось раздать клиентским дивайсам статический маршрут в сеть VirtualAddrNetwork через нашу тор-машинку.
Вариант статики реализуйте хоть доменными политиками, хоть прибитием через DHCP — как вам угодно.
PS
Кстати, к блокируемым ресурсам не обязательно на каждой машинке через браузерный прокси-плагин ломиться. Есть вариант с ява-скриптовым автопрокси на всю контору, но это тема для другой статьи.