LINUX.ORG.RU
ФорумAdmin

TOR и Маршрутизация трафика

 , ,


4

2

Недавно пробовал завернуть весь траф в TOR, всё успешно получилось, опирался на эту статью https://cryptopunks.org/article/forward all the traffic to tor/

Вопрос заключается в следующем, как сделать так что бы в тор уходил только onion трафик, а остальное уходило дальше.

Делал всё на Debian 8.

Спасибо за ответы!



Последнее исправление: xce (всего исправлений: 2)

Настроить то, что нужно, через tor-прокси, а остальное без него.

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

Возможно, существует лучшее решение (хочется надеяться), но я его не знаю.

aureliano15 ★★
()
  • Настраиваешь локальный bind (если его ещё нет), указываешь там зону onion:
    zone "onion." in {
            type forward;
            forwarders {
                    127.0.0.1 port 9053; //TOR
            };
    };
  • Указываешь в torrc подсеть для tor, например: VirtualAddrNetworkIPv4 172.16.0.0/12. Заодно включаешь DNS: DNSPort 9053.
  • Создаёшь сет tor: ipset create tor hash:net comment.
  • Заворачиваешь весь трафик для указанных в сете адресов в tor:
    iptables -t nat -A PREROUTING -p tcp -m set --match set tor dst -j REDIRECT --to-port 9040
    iptables -t nat -A OUTPUT -p tcp -m set --match-set tor dst -j REDIRECT --to-port 9040
  • Добавляешь в сет tor подсеть: ipset add 172.16.0.0/12 comment tor

Потом, в случае необходимости, в этот же сет можешь добавлять другие адреса, чтобы трафик на них шёл через tor.

Black_Shadow ★★★★★
()
Последнее исправление: Black_Shadow (всего исправлений: 1)

Вот тут подумалось: а почему бы не настроить браузеры и другие программы через обычный прокси, например squid или что-то ещё, а его, в свою очередь, настроить только для домена onion через tor-proxy?

aureliano15 ★★
()
Ответ на: комментарий от Black_Shadow

Я писал своё сообщение одновременно с сообщением о bind. После публикации увидел ответ про bind. Мне этот способ тоже больше нравится, но пусть и мой ответ лежит: вдруг у ТС с биндом что-то не заладится?

aureliano15 ★★
()
Ответ на: комментарий от xce

Предложение Black_Shadow мне кажется лучшим, но если оно по каким-то причинам не сработает, то 2-й прокси может быть запасным вариантом. Неважно, сервер это или нет. Если сервер, то оставляем только конец фразы:

squid или что-то ещё, а его, в свою очередь, настроить только для домена onion через tor-proxy?

Но, ещё раз оговорюсь, этот вариант - запасной. С биндом, имхо, красивее и легче.

aureliano15 ★★
()
Ответ на: комментарий от Black_Shadow

При добавление сета вышла ошибка, в итоге добавил аналогичный командой. Всё сделал как вы сказали, (DNS зону прописал в named.conf.local) , но так и не получилось настроить,прописалпригалаю вывод всех конфигов:

root@ServerTOR:/etc/bind# ipset add 172.16.0.0/12 comment tor
ipset v6.23: The set with the given name does not exist
root@ServerTOR:/etc/bind# ipset add tor 172.16.0.0/12
ipset v6.23: Element cannot be added to the set: it's already added
oot@ServerTOR:/etc/bind# ipset list
Name: tor
Type: hash:net
Revision: 5
Header: family inet hashsize 1024 maxelem 65536 comment
Size in memory: 16856
References: 2
Members:
172.16.0.0/12
# Generated by iptables-save v1.4.21 on Sun Jun 25 01:22:28 2017
*nat
:PREROUTING ACCEPT [39:2108]
:INPUT ACCEPT [39:2108]
:OUTPUT ACCEPT [1070:47224]
:POSTROUTING ACCEPT [1070:47224]
-A PREROUTING -p tcp -m set --match-set tor dst -j REDIRECT --to-ports 9040
-A OUTPUT -p tcp -m set --match-set tor dst -j REDIRECT --to-ports 9040
COMMIT
//
// Do any local configuration here
//

zone "onion." in {
        type forward;
        forwarders {
                127.0.0.1 port 9053; //TOR
        };
};

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

VirtualAddrNetworkIPv4 172.16.0.0/12
DNSPort 9053
TransPort 9040
ExcludeExitNodes {RU},{UA},{BY}
xce
() автор топика
Ответ на: комментарий от xce

При добавление сета вышла ошибка

Если ты про добавление сети в сет, то там тоже ошибка :-) Правильно: ipset add tor 172.16.0.0/12 comment tor.
Просто я по памяти писал.

Всё сделал как вы сказали, (DNS зону прописал в named.conf.local) , но так и не получилось настроить

А что конкретно не работает? DNS работает? Что выводит команда nslookup gxamjbnu7uknahng.onion?

Black_Shadow ★★★★★
()
Последнее исправление: Black_Shadow (всего исправлений: 1)
Ответ на: комментарий от Black_Shadow

угу , похоже ДНС не верно настроил , сейчас скину вывод всех конфигов.

nslookup уже пробовал , не может найти.

сейчас буду заного настраивать.

xce
() автор топика
Ответ на: комментарий от Black_Shadow

В named.conf.local прописано:

//
// Do any local configuration here
//

zone "onion." in {
        type forward;
        forwarders {
                127.0.0.1 port 9053; //TOR
        };
};

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

В named.conf.options указал что бы сервер слушал сам себя.

options {
        directory "/var/cache/bind";

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.

        // forwarders {
        //      0.0.0.0;
        // };

        listen-on {
        127.0.0.1;
        };

        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================
        dnssec-validation auto;

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
};

Вывод iptables:

-A PREROUTING -p tcp -m set --match-set tor dst -j REDIRECT --to-ports 9040
-A OUTPUT -p tcp -m set --match-set tor dst -j REDIRECT --to-ports 9040

Тор конфиг:

VirtualAddrNetworkIPv4 172.16.0.0/12
AutomapHostsOnResolve 1
TransPort 9040
DNSPort 9053
ExcludeExitNodes {RU},{UA},{BY}

Вывод ipset list

Name: tor
Type: hash:net
Revision: 5
Header: family inet hashsize 1024 maxelem 65536 comment
Size in memory: 16856
References: 2
Members:
172.16.0.0/12

Так же проверил 9053

 nslookup
set port=9053
server 127.0.0.1 

Что забываю указать ?

xce
() автор топика
Ответ на: комментарий от Black_Shadow
Non-authoritative answer:
Name:   gxamjbnu7uknahng.onion
Address: 172.26.221.104
> www.linuxbabe.com
Server:         127.0.0.1
Address:        127.0.0.1#9053

Non-authoritative answer:
Name:   www.linuxbabe.com
Address: 104.31.89.125
>
xce
() автор топика
Ответ на: комментарий от Black_Shadow
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.8.8
nameserver 2001:4860:4860::8844
nameserver 2001:4860:4860::8888
xce
() автор топика
Ответ на: комментарий от xce

Дык пропиши туда 127.0.0.1, чтобы dns работал только через локальный bind. Или не туда, в зависимости от того, где это делается в твоём дистрибутиве.

Black_Shadow ★★★★★
()
Последнее исправление: Black_Shadow (всего исправлений: 1)
Ответ на: комментарий от Black_Shadow

Вписал , так же вписал в /etc/network/interfaces , даб при рестарте не перезаписывало. Не пашет до сих пор. Стоит ли сделать форфард в named.conf.options потом , что бы те запросы которые он не понимал , переадресовывал ДНС серверам гугла например?

xce
() автор топика
Ответ на: комментарий от xce

Стоит ли сделать форфард в named.conf.options потом , что бы те запросы которые он не понимал , переадресовывал ДНС серверам гугла например?

Нет, он и так редиректит на рут хинты. Для этого там должна быть определена (по дефолту определена) зона ".".

А не-onion домены bind'ом резолвятся?

Black_Shadow ★★★★★
()
Ответ на: комментарий от Black_Shadow

да не-onion домены резолвятся. Так же в bind9 status нашел вот что

Jun 25 17:08:42 ServerTOR named[14518]: error (unexpected RCODE NOTIMP) resolving 'gxamjbnu7uknahng.onion/DS/IN': 127.0.0.1#9053
Jun 25 17:08:42 ServerTOR named[14518]: error (insecurity proof failed) resolving 'gxamjbnu7uknahng.onion/A/IN': 127.0.0.1#9053
root@ServerTOR:/etc/bind# ping ya.ru

xce
() автор топика
Ответ на: комментарий от xtraeft

Эээ, ненужный оверхед? Не проще сам браузер попросить ходить так, как тебе хочется?

Оверхед на 30 мегабайт? Да, серьёзная цифра. У тебя открытая вкладка браузера может отожрать на порядок больше.

Black_Shadow ★★★★★
()
Последнее исправление: Black_Shadow (всего исправлений: 1)
Ответ на: комментарий от Black_Shadow

Изменил в torrc , выставил DNSPort 53 , так же поменял порт в named.conf.local , и всё заработало, когда ввожу команду:

curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'

вижу свой IP,так же могу коннектится к TOR ресурсам.

Закомментировать

dnssec-validation auto;
всё же необходимо?

xce
() автор топика
Ответ на: комментарий от xce

Изменил в torrc , выставил DNSPort 53

То есть, ты вместо bind в качестве DNS сервера всегда используешь tor?

Закомментировать

dnssec-validation auto;
всё же необходимо?

Судя по сообщениям в логах, tor не понимает, что ему засылает bind. Я посмотрел в свой конфиг bind, и обнаружил, что у меня эта опция закомментирована. Возможно, я решал ту же проблему, когда это настраивал. Если ты будешь использовать tor в качестве DNS сервера, Bind тебе вообще не нужен.

Black_Shadow ★★★★★
()
Последнее исправление: Black_Shadow (всего исправлений: 1)
Ответ на: комментарий от Black_Shadow

да всё верно выставил TOR в качестве DNS сервера, попробовал закомментировать и выставил обратно 9053 в torrc и в named.conf.local, всё заработало! Огромное спасибо вам)!

xce
() автор топика
Ответ на: комментарий от Black_Shadow

Появилась необходимость поставить OpenVPN на этот сервер.

Собственно проблем не каких поставил всё хорошо, пытаюсь сделать так что бы на клиенте можно было спокойно заходить на .onion домены через браузер и чёт никак не удается справится.

traceF
()
Ответ на: комментарий от Black_Shadow

В конфигурации bind в named.conf.options , так же прописал что бы bind слушал не только 127.0.0.1 , а и 10.90.10.1.

options {
        directory "/var/cache/bind";

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.

        // forwarders {
        //      0.0.0.0;
        // };

        listen-on {
        127.0.0.1;
        10.90.10.1;
        };

Что ещё забываю ?)

traceF
()
Ответ на: комментарий от Black_Shadow

Через VPN не работает DNS совсем.

Я решил поставить OpenVPN на сервере где были проделаны все манипуляции для роутинга трафа которые вы мне подсказали. Так вот после установки OpenVPN , я взял взял клиентский серт и попробовал запустить на другой машине , дабы проверить что всё ок, так вот VPN работает , однако задача в том что бы сидя через VPN я мог открывать в браузере onion домены , грубо говоря что бы через VPN , мой сервер Бинд так же резолвил онион домены.

traceF
()
Ответ на: комментарий от Black_Shadow
PS C:\WINDOWS\system32> nslookup ya.ru 10.90.10.1
Server:  UnKnown
Address:  10.90.10.1

*** UnKnown can't find ya.ru: Query refused
PS C:\WINDOWS\system32> nslookup ya.ru 10.90.10.1
Server:  UnKnown
Address:  10.90.10.1

traceF
()
Ответ на: комментарий от Black_Shadow

Вот вывод iptables.

-A PREROUTING -p tcp -m set --match-set tor dst -j REDIRECT --to-ports 9040
-A OUTPUT -p tcp -m set --match-set tor dst -j REDIRECT --to-ports 9040
-A OUTPUT -p udp -m udp --dport 53 -j REDIRECT --to-ports 53
-A POSTROUTING -s 10.90.10.0/24 -o eth0 -j MASQUERADE

Третье правило не нужное.

traceF
()
Ответ на: комментарий от Black_Shadow

Я экспериментировал с правилами , но потом убрал всё лишнее , так что сейчас всё стандартное.

-A PREROUTING -p tcp -m set --match-set tor dst -j REDIRECT --to-ports 9040
-A OUTPUT -p tcp -m set --match-set tor dst -j REDIRECT --to-ports 9040
-A POSTROUTING -s 10.90.10.0/24 -o eth0 -j MASQUERADE

Третье правило стандартное , построутинг мапает весь впн трафик на етх0.

Вывод файла named.conf.local

  GNU nano 2.2.6                  File: named.conf.local

//
// Do any local configuration here
//

zone "onion." in {
        type forward;
        forwarders {
                127.0.0.1 port 9053; //TOR
        };
};

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
Вывод файла named.conf.options
options {
        directory "/var/cache/bind";

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.

        // forwarders {
        //      0.0.0.0;
        // };

        listen-on {
        127.0.0.1;
        10.90.10.1;
        };

        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================
        // dnssec-validation auto;

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
};

В остальных конфигурационных файлах бинда ничего не менял.

Так же прилагаю вывод ipset

root@ServerTOR:/etc/bind# ipset list
Name: tor
Type: hash:net
Revision: 5
Header: family inet hashsize 1024 maxelem 65536 comment
Size in memory: 16856
References: 2
Members:
172.16.0.0/12 comment "tor"

Понимаю что надо сделать некоторые правила для маршрутизации, но опыта не хватает.

traceF
()
Ответ на: комментарий от traceF

Попробуй закоментировать диррективу listen-on. Bind может не слушать интерфейс, отсутствующий на момент запуска. И покажи весь выхлоп iptables-save.

Black_Shadow ★★★★★
()
Последнее исправление: Black_Shadow (всего исправлений: 3)
Ответ на: комментарий от Black_Shadow

Закоментировал диррективу.

# Generated by iptables-save v1.4.21 on Sun Jul 23 11:40:42 2017
*nat
:PREROUTING ACCEPT [4017:228637]
:INPUT ACCEPT [3759:213800]
:OUTPUT ACCEPT [2572:188202]
:POSTROUTING ACCEPT [2577:188402]
-A PREROUTING -p tcp -m set --match-set tor dst -j REDIRECT --to-ports 9040
-A OUTPUT -p tcp -m set --match-set tor dst -j REDIRECT --to-ports 9040
-A POSTROUTING -s 10.90.10.0/24 -o eth0 -j MASQUERADE
COMMIT
# Completed on Sun Jul 23 11:40:42 2017
# Generated by iptables-save v1.4.21 on Sun Jul 23 11:40:42 2017
*filter
:INPUT ACCEPT [20:1960]
:FORWARD ACCEPT [1:103]
:OUTPUT ACCEPT [18:1657]
COMMIT
# Completed on Sun Jul 23 11:40:42 2017
traceF
()
Ответ на: комментарий от traceF

Если использовать данный сервер в качестве ssh шлюза, то все работает - и тор домены открываются и clearnet, и маршрутизация идет так, как задумано - тор - через тор, все остальное - через сервер, при подключении через openvpn работает только clearnet

traceF
()

Вопрос заключается в следующем, как сделать так что бы в тор уходил только onion трафик, а остальное уходило дальше.

Это же абсолютно небезопасно! Так нельзя делать. ip спалишь. Дети не повторяйте за этим обалдуем.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.