![如何在 opensuse 上仅启用 tor 连接并监控流量?](https://linux22.com/image/1473620/%E5%A6%82%E4%BD%95%E5%9C%A8%20opensuse%20%E4%B8%8A%E4%BB%85%E5%90%AF%E7%94%A8%20tor%20%E8%BF%9E%E6%8E%A5%E5%B9%B6%E7%9B%91%E6%8E%A7%E6%B5%81%E9%87%8F%EF%BC%9F.png)
是否有任何程序或方法可以在 openSUSE 上仅启用安全的 tor 连接,如果我不小心打开了我的普通浏览器,它就不会连接。
另外,有没有一个程序可以让我实时监控我的网络流量,以便验证它是否正常工作。比如哪个程序连接到哪个 IP,以及它是否根本没有使用互联网。提前致谢。
我尝试使用内置的 YAST-Firewall,但发现它不太有用。
答案1
是的,你可以,但你不会喜欢它。Tor 的速度非常慢,即使只是浏览现代网页,速度也非常慢,对于其他任何事情来说更是如此。例如,它的高延迟和丢失数据包的倾向使其不适合实时双向通信。更糟糕的是,Tor 已被证明并不像我们所有人希望的那样安全——特别是如果你用它来规避政府监控。
话虽如此,Tor 的 Wiki 有一个指南可以帮助您启用透明代理(请参阅原文这里):
使用超级用户权限打开您的 Tor 配置文件(
/etc/tor/torrc
在 OpenSUSE 中)以添加以下行:VirtualAddrNetworkIPv4 10.192.0.0/10 AutomapHostsOnResolve 1 TransPort 9040 DNSPort 53
为了通过 Tor 重定向 DNS 请求,请
/etc/resolv.conf
以超级用户权限打开文件,并用以下一行替换其中的内容:nameserver 127.0.0.1
编写一个
iptables
脚本,防止发往本地网络的数据包被重定向到 Tor。在下面的示例中,192.168.0.0/24
和192.168.1.0/24
是本地网络:#!/bin/sh ### set variables #destinations you don't want routed through Tor _non_tor="192.168.1.0/24 192.168.0.0/24" #the UID that Tor runs as (varies from system to system) _tor_uid="109" #Tor's TransPort _trans_port="9040" ### flush iptables iptables -F iptables -t nat -F ### set iptables *nat iptables -t nat -A OUTPUT -m owner --uid-owner $_tor_uid -j RETURN iptables -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to-ports 53 #allow clearnet access for hosts in $_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 #redirect all other output to Tor's TransPort iptables -t nat -A OUTPUT -p tcp --syn -j REDIRECT --to-ports $_trans_port ### set iptables *filter iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #allow clearnet access for hosts in $_non_tor for _clearnet in $_non_tor 127.0.0.0/8; do iptables -A OUTPUT -d $_clearnet -j ACCEPT done #allow only Tor output iptables -A OUTPUT -m owner --uid-owner $_tor_uid -j ACCEPT iptables -A OUTPUT -j REJECT
您基本上已经完成了。您可能需要根据您的具体需求进行一些调整。例如,如果您设置了其他 NAT 转发规则,您可能需要iptables -F
删除iptables -t nat -F
。
答案2
这可以使用 iptables 和用户模块来实现。
由于 tor 守护进程通常以用户“tor”的身份运行,我们可以利用 iptables 模块所有者根据用户 uid 过滤出站流量。
在这个例子中,我们将丢弃所有不是由运行 tor 守护进程的用户发起的流量。
首先,让我们假设您从一个空的防火墙策略开始。您希望这个策略有一个默认策略来丢弃所有流量。
iptables -P INPUT drop
iptables -P OUTPUT drop
iptables -P FORWARD drop
现在,您想要接受与已建立连接相关的入站流量。请注意,您只能根据用户名对传出流量进行过滤。您无法控制从互联网发送的数据包。
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
允许环回接口上的流量。这将允许您连接到在端口 9050 上运行的 tor socks 守护程序。
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
最后,您必须允许来自用户“tor”的流量。
iptables -A OUTPUT -o inet-iface -m owner --uid-owner tor-uid -j ACCEPT
将 inet-iface 和 tor-uid 替换为您连接到互联网的接口以及 tor 用户的 uid。
瞧,所有与 Tor 无关的流量现在都应该被阻止了。