警告:请严格按顺序完成每一步,否则可能会失去 LuCI 的访问权限!强烈建议在操作前建立 SSH 连接,以便在失去 LuCI 访问时能够恢复更改。
警告:此操作在 GL.iNet Flint 2 (GL-MT6000) 上测试通过,但不保证适用于所有设备。如果任何步骤看起来不寻常或不清楚,请立即停止并撤销所有修改。
警告:本指南是在作者的路由器看似正常工作的情况下编写的。仍可能存在问题,安全性无法保证,因为部分流量可能会泄露。作者对按照本指南操作所造成的任何后果不承担责任。
本指南介绍如何将 LAN 的所有互联网流量通过 Tor 路由。此操作在 OpenWrt 24.10 上测试通过。
除 Tor 配置外,其余步骤可完全通过 LuCI 完成,无需 SSH。
步骤 1:安装和配置 Tor
首先在路由器上安装 Tor:
# opkg update
# opkg install tor
根据需要配置 Tor,但请确保你的 torrc 至少包含以下内容:
TransPort 0.0.0.0:9040
VirtualAddrNetworkIPv4 10.192.0.0/10
AutomapHostsOnResolve 1
为了更高的安全性,如果你只有一个接口进行转发,也可以将 TransPort 设置为路由器在 lan 接口上的 IP 地址。
步骤 2:设置 DNSCrypt
我参考这里的指南配置了 DNSCrypt。Using the command line 部分的五条命令在我这里可以正常工作,但你也可以通过 LuCI 进行配置。
打开 System -> Software,搜索 dnscrypt-proxy2 并安装。然后进入 Network -> DHCP and DNS -> Forwards -> DNS Forwards 并添加 127.0.0.53。之后打开 System -> Startup 并重启 dnsmasq。
如果不想使用 DNSCrypt,你需要在 torrc 中添加 DNSPort 并在 DNS Forwards 中进行配置。我未测试此方法,建议使用 DNSCrypt。
步骤 3:添加防火墙规则(重要 — 请严格遵循)
打开 Firewall -> IP sets 并创建以下 IP 集:
-
Name:
tor_bypass -
Family: IPv4
-
Packet Field Match: dest_ip
-
IPs/Networks/MACs:
- 路由器在接口上的 IP 地址
- 192.168.10.1/16
- 10.0.0.0/8
- 172.16.0.0/12
- 127.0.0.1/32
-
其他字段保持不变
打开 Firewall -> Port Forwards 并添加以下规则:
-
General Settings:
- Name:
tor-trans-forward(或任意你喜欢的名称) - Restrict to address family: IPv4 only
- Protocol: TCP
- Source zone:
lan(或希望重定向流量的其他防火墙区域) - External port: 1–65535
- Destination zone:
lan(必须与 Source zone 相同) - Internal IP address: 路由器在接口上的 IP 地址
- Internal port: 9040
- Name:
-
Advanced Settings:
- Use ipset:
!tor_bypass(请勿省略感叹号) - 其他字段保持不变
- Use ipset:
打开 Firewall -> Traffic Rules 并添加以下规则:
-
General Settings:
- Name: 阻止非 TCP 流量(或你喜欢的名称)
- Protocol: UDP, ICMP, IGMP, IPSEC-ESP
- Source zone:
lan(必须与 Port Forward 的 Source zone 相同) - Destination zone:
wan - Action: reject
- 其他字段保持不变
-
Advanced Settings:
- 所有字段保持不变
如果启用了 IPv6,你必须禁用或阻止它。打开 Firewall -> Traffic Rules 并添加以下规则:
-
General Settings:
- Name: 阻止 IPv6(或你喜欢的名称)
- Protocol: Any
- Source zone:
lan - Destination zone:
wan - Action: reject
- 其他字段保持不变
-
Advanced Settings:
- Restrict to address family: IPv6 only
- 其他字段保持不变
如有其他接口需要将流量路由到 Tor,请现在重复此步骤。
步骤 4:保存并检查配置
点击 Save & Apply。
访问 https://check.torproject.org/ 和/或 https://myip.wtf/ 检查流量是否正确转发。
访问 https://ipv6.myip.wtf/ 确认 IPv6 是否已被阻止。
检查 LuCI 是否仍可访问。
如果一切正常,配置完成。
如果有问题,请使用文本编辑器恢复 /etc/config/firewall 中的配置,建议在 Libera.Chat 的 #openwrt 频道寻求帮助。