我想通过 Linux 中的 iptables NAT 路由所有流量,我想通过 TOR 路由所有流量。
我的脚本仅接受 TCP 和 UDP 协议,但我需要通过 NAT 路由所有协议。
而且我需要允许发送无效数据包。
这是我的 bash 脚本:
#!/bin/bash
# flush iptables
iptables -F
iptables -t nat -F
# Tor's UID
TOR_UID="debian-tor"
# Tor's TransPort
TOR_PORT="9040"
# Destinations you don't want routed through Tor
TOR_EXCLUDE="192.168.0.0/16 172.16.0.0/12 10.0.0.0/8"
cp /etc/resolv.conf /etc/resolv.conf.bak
touch /etc/resolv.conf
echo -e 'nameserver 127.0.0.1\nnameserver 92.222.97.144\nnameserver 92.222.97.145' > /etc/resolv.conf
echo -e " $GREEN*$BLUE Modified resolv.conf to use Tor and FrozenDNS"
# 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
iptables -t nat -A OUTPUT -p tcp --dport 53 -j REDIRECT --to-ports 53
iptables -t nat -A OUTPUT -p udp -m owner --uid-owner $TOR_UID -m udp --dport 53 -j REDIRECT --to-ports 53
#resolve .onion domains mapping 10.192.0.0/10 address space
iptables -t nat -A OUTPUT -p tcp -d 10.192.0.0/10 -j REDIRECT --to-ports 9040
iptables -t nat -A OUTPUT -p udp -d 10.192.0.0/10 -j REDIRECT --to-ports 9040
#exclude local addresses
for NET in $TOR_EXCLUDE 127.0.0.0/9 127.128.0.0/10; do
iptables -t nat -A OUTPUT -d $NET -j RETURN
done
#redirect all other output through TOR
iptables -t nat -A OUTPUT -p tcp --syn -j REDIRECT --to-ports $TOR_PORT
iptables -t nat -A OUTPUT -p udp -j REDIRECT --to-ports $TOR_PORT
iptables -t nat -A OUTPUT -p icmp -j REDIRECT --to-ports $TOR_PORT
#accept already established connections
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#exclude local addresses
for NET in $TOR_EXCLUDE 127.0.0.0/8; do
iptables -A OUTPUT -d $NET -j ACCEPT
done
#allow only tor output
iptables -A OUTPUT -m owner --uid-owner $TOR_UID -j ACCEPT
iptables -A OUTPUT -j REJECT
例如,如果我使用 nmap 网络扫描器,它根本无法工作,因为它使用其他协议并向目标发送无效数据包。但使用代理链,可以使其通过 TOR 网络工作,但不能在多线程异步模式下工作,并且它仍然会发送一些不通过代理链的数据包,因此情况并非如此。
有人能帮忙吗