История изменений
Исправление SM5T001, (текущая версия) :
Просто завернуть или добиться нормальной работы, т.е. анонимности со сменой цепочек и изоляцией потока? Вероятно второе.
Начать надо с блокирования всего стороннего. Вот правила для iptables, их надо сохранить в исполняемый файл .sh, сделать на него chmod +x и запустить от суперпользователя:
#!/bin/sh
### настройка переменных
# список адресов, работающих мимо Tor(пример: локальная сеть)
_non_tor="192.168.1.0/24 192.168.0.0/24 172.16.0.0/24"
#TransPort нашего Tor
_trans_port="9040"
#основной порт i2p
_i2p_port="10232"
### очистка правил iptables
iptables -F
iptables -t nat -F
### настройка iptables *nat
iptables -t nat -A OUTPUT -m owner --uid-owner tor -j RETURN
iptables -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to-ports 9053
iptables -t nat -A OUTPUT -p TCP --dport 53 -j DNAT --to-destination 127.0.0.1:9053
#прямой доступ для $_non_tor
for _clearnet in $_non_tor 127.0.0.0/9 127.128.0.0/10; do
iptables -t nat -A OUTPUT -d $_clearnet -j RETURN
done
#перенаправление всего остального на TransPort
iptables -t nat -A OUTPUT -p tcp --syn -j REDIRECT --to-ports $_trans_port
### настройка iptables *filter
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p TCP --dport $_i2p_port -j ACCEPT
iptables -A INPUT -p udp --dport $_i2p_port -j ACCEPT
iptables -A INPUT -p icmp -j DROP
#прямой доступ для $_non_tor
for _clearnet in $_non_tor 127.0.0.0/8; do
iptables -A OUTPUT -d $_clearnet -j ACCEPT
done
#разрешаем input для localhost
for _clearnet in 127.0.0.0/8; do
iptables -A INPUT -d $_clearnet -j ACCEPT
done
#разрешаем только i2p и Tor input/output
iptables -A OUTPUT -m owner --uid-owner tor -j ACCEPT
iptables -A OUTPUT -m owner --uid-owner i2p -j ACCEPT
iptables -A OUTPUT -j REJECT
iptables -A INPUT -j DROP
ОСТОРОЖНО! Только что был закрыт выход в сеть для всех, кроме пользователей tor и i2p.
Теперь доработаем torrc:
TransPort 9040 IsolateDestAddr IsolateDestPort
DNSPort 5353
SocksPort 9250 IsolateDestAddr IsolateDestPort IsolateSOCKSAuth KeepAliveIsolateSOCKSAuth # пригодится далее
VirtualAddrNetworkIPv4 10.192.0.0/10
AutomapHostsOnResolve 1
HTTPTunnelPort 127.0.0.1:9443 IsolateDestAddr IsolateDestPort # для всего, что не поддерживает SOCKS
Теперь ставим torsocks apt install torsocks
или как в конкретном дистрибутиве. Далее прописываем в /etc/tor/torsocks.conf :
TorAddress 127.0.0.1
TorPort 9250
OnionAddrRange 10.192.0.0/10
IsolatePID 1
А в .bashrc для всех пользователей добавляем строку . torsocks on
Torsocks помогает изолировать любые программы в терминале. Осталось лишь прописать в настройках прокси где можно SOCKS(9250) и HTTP CONNECT(9443) порты.
Если по какой-то причине необходим HTTP-прокси, но не CONNECT, можно установить и использовать privoxy.
Ну и да, с этими настройками Tor Browser без дополнительных параметров попросту не запустится, надо донастраивать prefs.js. Могу сказать как именно, если интересует(использовать что-то кроме Tor Browser при таких настройках попросту не рекомендуется, могу назвать с десяток причин).
Это всё — для TCP, с UDP же посложнее, но нет ничего невозможного.
Whonix расписывает достаточно подробно: http://www.dds6qkxpwdeubwucdiaord2xgbbeyds25rbsgr73tbfpqpt4a6vjwsyd.onion/wik...
Но выше правильно сказали, что с другой стороны кто-то должен распаковывать UDP, иначе ничего работать не будет. Вариантов много, но нужна конкретика.
Если не секрет: для чего именно нужен UDP через Tor? Может быть я мог бы подсказать способ получше, будь у меня больше вводных.
Исходная версия SM5T001, :
Просто завернуть или добиться нормальной работы, т.е. анонимности со сменой цепочек и изоляцией потока? Вероятно второе.
Начать надо с блокирования всего стороннего. Вот правила для iptables, их надо сохранить в исполняемый файл .sh, сделать на него chmod +x и запустить от суперпользователя:
#!/bin/sh
### настройка переменных
# список адресов, работающих мимо Tor(пример: локальная сеть)
_non_tor="192.168.1.0/24 192.168.0.0/24 172.16.0.0/24"
#TransPort нашего Tor
_trans_port="9040"
#основной порт i2p
_i2p_port="10232"
### очистка правил iptables
iptables -F
iptables -t nat -F
### настройка iptables *nat
iptables -t nat -A OUTPUT -m owner --uid-owner tor -j RETURN
iptables -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to-ports 9053
iptables -t nat -A OUTPUT -p TCP --dport 53 -j DNAT --to-destination 127.0.0.1:9053
#прямой доступ для $_non_tor
for _clearnet in $_non_tor 127.0.0.0/9 127.128.0.0/10; do
iptables -t nat -A OUTPUT -d $_clearnet -j RETURN
done
#перенаправление всего остального на TransPort
iptables -t nat -A OUTPUT -p tcp --syn -j REDIRECT --to-ports $_trans_port
### настройка iptables *filter
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p TCP --dport $_i2p_port -j ACCEPT
iptables -A INPUT -p udp --dport $_i2p_port -j ACCEPT
iptables -A INPUT -p icmp -j DROP
#прямой доступ для $_non_tor
for _clearnet in $_non_tor 127.0.0.0/8; do
iptables -A OUTPUT -d $_clearnet -j ACCEPT
done
#разрешаем input для localhost
for _clearnet in 127.0.0.0/8; do
iptables -A INPUT -d $_clearnet -j ACCEPT
done
#разрешаем только i2p и Tor input/output
iptables -A OUTPUT -m owner --uid-owner tor -j ACCEPT
iptables -A OUTPUT -m owner --uid-owner i2p -j ACCEPT
iptables -A OUTPUT -j REJECT
iptables -A INPUT -j DROP
ОСТОРОЖНО! Только что был закрыт выход в сеть для всех, кроме пользователей tor и i2p.
Теперь доработаем torrc:
TransPort 9040 IsolateDestAddr IsolateDestPort
DNSPort 5353
SocksPort 9250 IsolateDestAddr IsolateDestPort IsolateSOCKSAuth KeepAliveIsolateSOCKSAuth # пригодится далее
VirtualAddrNetworkIPv4 10.192.0.0/10
HTTPTunnelPort 127.0.0.1:9443 IsolateDestAddr IsolateDestPort # для всего, что не поддерживает SOCKS
Теперь ставим torsocks apt install torsocks
или как в конкретном дистрибутиве. Далее прописываем в /etc/tor/torsocks.conf :
TorAddress 127.0.0.1
TorPort 9250
OnionAddrRange 10.192.0.0/10
IsolatePID 1
А в .bashrc для всех пользователей добавляем строку . torsocks on
Torsocks помогает изолировать любые программы в терминале. Осталось лишь прописать в настройках прокси где можно SOCKS(9250) и HTTP CONNECT(9443) порты.
Если по какой-то причине необходим HTTP-прокси, но не CONNECT, можно установить и использовать privoxy.
Ну и да, с этими настройками Tor Browser без дополнительных параметров попросту не запустится, надо донастраивать prefs.js. Могу сказать как именно, если интересует(использовать что-то кроме Tor Browser при таких настройках попросту не рекомендуется, могу назвать с десяток причин).
Это всё — для TCP, с UDP же посложнее, но нет ничего невозможного.
Whonix расписывает достаточно подробно: http://www.dds6qkxpwdeubwucdiaord2xgbbeyds25rbsgr73tbfpqpt4a6vjwsyd.onion/wik...
Но выше правильно сказали, что с другой стороны кто-то должен распаковывать UDP, иначе ничего работать не будет. Вариантов много, но нужна конкретика.
Если не секрет: для чего именно нужен UDP через Tor? Может быть я мог бы подсказать способ получше, будь у меня больше вводных.