我想将传出网络访问(本地主机连接除外)限制为 Tor 上的 TCP 和 UDP,并阻止其他所有内容(Tor 应用程序和本地主机连接除外)。目标是限制用户localhost
和*.onion
地址,Tor 会为其创建虚拟地址网络 10.192.0.0/10(使用VirtualAddrNetwork
torrc 文件上的选项)。
以下是我当前的 iptables-save:
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A OUTPUT -d 10.192.0.0/10 -p tcp -j REDIRECT --to-ports 9040
-A OUTPUT ! -o lo -p tcp -m tcp -m owner ! --uid-owner debian-tor -j REDIRECT --to-ports 9040
-A OUTPUT ! -o lo -p udp -m udp --dport 53 -m owner ! --uid-owner debian-tor -j REDIRECT --to-ports 53
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A OUTPUT -m owner --uid-owner debian-tor -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 9040 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT ! -o lo -j DROP
-A OUTPUT -p icmp -j REJECT --reject-with icmp-port-unreachable
COMMIT
我尝试在 的开头*filter
、其余规则之前添加这条规则,但所有连接都失败了:
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT ! -d 10.192.0.0/10 -m owner ! --uid-owner debian-tor -j REJECT
为什么上述代码中的第二行会阻止所有流量?以下正确的规则是什么:
- 允许所有传入
- 允许所有传出到本地主机
- 允许 debian-tor 用户发起的所有传出
- 重定向所有传出的 UDP 53不是由 debian-tor 发起到 localhost 53
- 重定向所有传出的 TCP 和 UDP不是由 debian-tor 发起到 localhost 9040
- 阻止其他一切