Uživatelské nástroje

Nástroje pro tento web

Tato dokumentace již není udržována týmem projektu Turris (přestože ji lze i nadále používat pro sdílení komunitního obsahu). Aktuální oficiální dokumentace se nachází na docs.turris.cz.

Tato dokumentace je jen pro Turris OS 3.x, který se už nenachází na nově prodávaných routerech. Novou dokumentaci najdete na https://docs.turris.cz/.

Transparentní routování TCP LAN/Wifi komunikace přes Tor

Tor je populární anonymizační proxy, umožňující routovat TCP spojení přes několik uzlů než dorazí k zamýšlenému cíli. V síti existují tzv. hidden services se jménem končícím na .onion, které jsou dostupné jen přes Tor.

Běžně se používá Tor z lokálního stroje, kde běží jako SOCKS5 proxy. Tento návod ukazuje nastavení, kde každý klient připojený z LAN nebo Wifi routeru Turris bude mít všechny TCP spojení routovány přes Tor.

Tento návod je pro pokročilé uživatele. Zásadním způsobem mění routování provozu v Turrisu, což může při neopatrnosti způsobit nefunkčnost sítě. Routování přes Tor může mít vyšší chybovost a projevovat se například dočasnými výpadky resolvování DNS.

Úvod do anonymizační sítě Tor

Tor je anonymizační síť, která používá onion routing - speciální způsob routování, kde každý uzel dokáže z paketu vlastním šifrovacím klíčem odstranit jednu „vrstvu cibule“ a poslat paket k dalšímu uzlu, ale netuší, kde je cílová destinace paketu (po „oloupání všech vrstev cibule“). Pro seznámení s Tor-em je vhodné nainstalovat Tor Browser Bundle, což je Firefox speciálně upravený pro prohlížení přes Tor.

Pro zachování anonymity je podstatné si uvědomit, že se člověk musí vyvarovat „křížení proudů“ - používat např. stejný prohlížeč pro Tor jako mimo něj - ISP a jednotlivé servery vás jinak dokáží identifikovat podle cookies. Ze stejného důvodu nesmíte používat obyčejný DNS server, protože i když data budou putovat přes Tor, DNS dotazy by prozradily, kam se připojujete. Návod níže bude routovat DNS přes Tor, ale používání prohlížeče a aplikací přes Tor bezpečně si musíte ohlídat sami. TorProject má k tématu celkem podrobnou stránku s odpověďmi pro různé použití Toru (v angličtině).

Jedním z protokolů, který se nedoporučuje používat přes Tor, je BitTorrent, protože BitTorrent prozradí vaší skutečnou IP uvnitř protokolu samotného (je to nutné k funkčnosti protokolu).

Zjistíte, že prohlížení přes Tor je pomalejší (hlavně v odezvě) než „obyčejný“ širokopásmový internet - vaše pakety mohou oběhnout Zemi dvakrát, než se dostanou k cíli přes Tor. Síť je provozována dobrovolníky a je lepší ji nezatěžovat přenosem velkých objemů (řekněme GB a více).

Z výše uvedených důvodů může být routování veškerého provozu z LAN přes Tor pro běžný provoz domácí sítě nevhodné. V takovém případě lze oddělit pouze některou část sítě (např. wifi nebo konkrétní port na routeru) pro provoz přes Tor, což popisuje závěrečná část návodu.

Důležité upozornění

Transparentní routování přes Tor má následující omezení:

  • DNS umí resolvovat jenom A a PTR záznamy (což pro běžné prohlížení stačí)
  • DNS běží jen na UDP
  • UDP provoz z LAN ven bude zcela blokován
  • interní programy běžící v Turrisu stále komunikují po „obyčejném internetu“, přesměrovává se LAN/Wifi
  • důrazně se doporučuje vypnout IPv6
  • předpokládáme, že vnitřní interface má původní adresu 192.168.1.1 (případně změňte v nastavení níže)

Routování LAN komunikace přes Tor je experimentální a samo o sobě nezaručuje anonymitu při používání sítě. Například browser v mobilu neví, že komunikuje ve skutečnosti přes Tor a bude používat stejné cookies, které používá při přístupu na „obyčejný internet“. Stejně tak mnoho protokolů může uvnitř prozradit skutečnou IP adresu. Z toho důvodu je používání Tor Browser Bundle lepší.

Instalace Tor-u

Instalaci provedeme v rozhraní Foris. Na záložce „Updater“ zaškrtneme Tor a potvrdíme. Tím ovšem pouze nainstalujete balíčky. Následně je třeba použít příkazovou řádku, např. přes SSH.

Editujeme soubor /etc/tor/torrc, aby vypadal následovně:

User tor
DataDirectory /var/lib/tor
Log notice file /var/log/tor/notices.log

VirtualAddrNetwork 10.192.0.0/10
AutomapHostsOnResolve 1
TransPort 192.168.1.1:9040
DNSPort 192.168.1.1:9053

Tor spustíme a nastavíme, aby se spouštěl vždy po startu:

/etc/init.d/tor start
/etc/init.d/tor enable

Přesměrování LAN provozu přes iptables

Nastavení přesměrování uděláme přidáním následujících řádků do souboru /etc/firewall.user:

# Turris version
source /etc/openwrt_release

# Tor's TransPort
_trans_port=9040

# internal interface
_int_if=br-lan

_non_tor="127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16"

# external interface
if [ "$DISTRIB_CODENAME" == "omnia" ]; then
	_ext_if=eth1
else
	_ext_if=eth2
fi

#allow lan access for hosts in $_non_tor
for _lan in $_non_tor; do
        iptables -t nat -A PREROUTING -i $_int_if -d $_lan -j RETURN
done

#DNSPort runs only on UDP
iptables -t nat -A PREROUTING -i $_int_if -p udp --dport 53 -j REDIRECT --to-ports 9053
#Transparent routing through Tor's TransPort
iptables -t nat -A PREROUTING -i $_int_if -p tcp --syn -j REDIRECT --to-ports $_trans_port
#Prevent UDP traffic from being forwarded
iptables -I FORWARD -i $_int_if -p udp -o $_ext_if -j DROP

Nakonec spustíme příkaz, který nová firewallová pravidla aplikuje:

fw3 restart

Nyní bude IPv4 TCP provoz z LAN a wifi včetně speciální .onion pseudo-domény přesměrován přes Tor.

Vypnutí IPv6

Kvůli tomu, že se IPv6 provoz nepřesměrovává, je doporučeno IPv6 na Turrisu vypnout. To provedeme příkazy:

sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1

Dále přidáme do /etc/sysctl.conf řádky, které IPv6 vypnou i po restartu:

net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1

Obnovení do stavu "normálního" LAN routování do obyčejného internetu

Odstraníme řádky z /etc/firewall.user, které jsme v tomto návodu přidali a restartujeme firewall příkazem:

fw3 restart

IPv6 reaktivujeme odstraněním řádek, přidaných do /etc/sysctl.conf. Případně restartujeme router.

Routování jenom části LAN/wifi spojení

Úpravou iptables je možné routovat jenom část spojení z LAN nebo Wifi. Pokud budete měnit _int_if v iptables skriptu na některý ze specifických interface eth0, eth1 nebo wlan0, je nutné nejprve daný interface vyjmout z bridge br-lan editací /etc/config/network pro LAN nebo /etc/config/wireless pro wifi. Po editaci aplikujeme nastavení spuštením /etc/init.d/network restart.

Dokud jsou interface v bridge, iptables vidí spojení jako by pocházeli z br-lan. Pravděpodobně pak budete chtít „odbridgovanému“ interface nastavit adresu a přidat mu nastavení DHCP v /etc/config/dhcp.

Návod na oddělení interface z bridge do samostatné sítě (VLAN) je uveden v článku Rozdělení sítě do různých VLAN. Nezpomeňte pak upravit i IP adresy v /etc/tor/torrc, aby poslouchali na nově odděleném rozhraní.