第一种是通过自带的 DNSMASQ:
- 网络
- DHCP 和 DNS
- DNS 转发
- 填入
101.6.6.6**#**5353注意是#而不是 @ - 保存并应用,然后就可以了,默认 OpenWrt 都会劫持局域网内所有 UDP/TCP 53 端口,所以你的客户端不需要额外做些什么。
第二种是从 OpenWrt 抄的防火墙规则,新的 OpenWrt 应该默认都有不过是全局劫持而且是转发到本地的 DNSMASQ:
只需要稍加修改只劫持指定的 IP 就可以正常使用,你可以按需修改。
你要先删除自带的两条全局劫持 53 端口的规则。
这样做的作用是劫持客户端到 8.8.8.8/8.8.4.4/1.1.1.1/1.0.0.1 这些 IP 地址的 53 端口到 101.6.6.6#5353
所以你要去手动设置 DHCP Client 的 DNS 为以上 IP ,你也可以劫持其它 IP ,比如 8.9.6.4,但是这样就会太 Confuse 了,不推荐,你也可以让 OpenWrt 设置 DHCP Client 获取到的 DNS 为一下 IP ,下面会讲到。
iptables -t nat -A PREROUTING -p udp -d 8.8.8.8 --dport 53 -j REDIRECT --to-destination 101.6.6.6 --to-ports 5353
iptables -t nat -A PREROUTING -p udp -d 8.8.4.4 --dport 53 -j REDIRECT --to-destination 101.6.6.6 --to-ports 5353
iptables -t nat -A PREROUTING -p udp -d 1.1.1.1 --dport 53 -j REDIRECT --to-destination 101.6.6.6 --to-ports 5353
iptables -t nat -A PREROUTING -p udp -d 1.0.0.1 --dport 53 -j REDIRECT --to-destination 101.6.6.6 --to-ports 5353
[ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p udp -d 8.8.8.8 --dport 53 -j REDIRECT --to-destination 101.6.6.6 --to-ports 5353
[ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p udp -d 8.8.4.4 --dport 53 -j REDIRECT --to-destination 101.6.6.6 --to-ports 5353
[ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p udp -d 1.1.1.1 --dport 53 -j REDIRECT --to-destination 101.6.6.6 --to-ports 5353
[ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p udp -d 1.0.0.1--dport 53 -j REDIRECT --to-destination 101.6.6.6 --to-ports 5353
以上内容加到:
- 网络
- 防火墙
- 自定义规则
如果你想把 TCP 的 53 也劫持了,那你可以用下面的:
iptables -t nat -A PREROUTING -p udp -d 8.8.8.8 --dport 53 -j REDIRECT --to-destination 101.6.6.6 --to-ports 5353
iptables -t nat -A PREROUTING -p udp -d 8.8.4.4 --dport 53 -j REDIRECT --to-destination 101.6.6.6 --to-ports 5353
iptables -t nat -A PREROUTING -p udp -d 1.1.1.1 --dport 53 -j REDIRECT --to-destination 101.6.6.6 --to-ports 5353
iptables -t nat -A PREROUTING -p udp -d 1.0.0.1 --dport 53 -j REDIRECT --to-destination 101.6.6.6 --to-ports 5353
[ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p udp -d 8.8.8.8 --dport 53 -j REDIRECT --to-destination 101.6.6.6 --to-ports 5353
[ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p udp -d 8.8.4.4 --dport 53 -j REDIRECT --to-destination 101.6.6.6 --to-ports 5353
[ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p udp -d 1.1.1.1 --dport 53 -j REDIRECT --to-destination 101.6.6.6 --to-ports 5353
[ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p udp -d 1.0.0.1--dport 53 -j REDIRECT --to-destination 101.6.6.6 --to-ports 53
iptables -t nat -A PREROUTING -p tcp -d 8.8.8.8 --dport 53 -j REDIRECT --to-destination 101.6.6.6 --to-ports 5353
iptables -t nat -A PREROUTING -p tcp -d 8.8.4.4 --dport 53 -j REDIRECT --to-destination 101.6.6.6 --to-ports 5353
iptables -t nat -A PREROUTING -p tcp -d 1.1.1.1 --dport 53 -j REDIRECT --to-destination 101.6.6.6 --to-ports 5353
iptables -t nat -A PREROUTING -p tcp -d 1.0.0.1 --dport 53 -j REDIRECT --to-destination 101.6.6.6 --to-ports 5353
[ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p tcp -d 8.8.8.8 --dport 53 -j REDIRECT --to-destination 101.6.6.6 --to-ports 5353
[ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p tcp -d 8.8.4.4 --dport 53 -j REDIRECT --to-destination 101.6.6.6 --to-ports 5353
[ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p tcp -d 1.1.1.1 --dport 53 -j REDIRECT --to-destination 101.6.6.6 --to-ports 5353
[ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p tcp -d 1.0.0.1--dport 53 -j REDIRECT --to-destination 101.6.6.6 --to-ports 53
让 DHCP Client 自动获取不同的 DNS 服务器:
- Network
- LAN Edit
- DHCP Section
- Advanced Options
- DHCP Options
- 填入
6,8.8.8.8,8.4.4.4 - 保存并应用
弊端:
你国内访问的所有带 CDN 的网站估计都会获取到教育网内的服务器,高峰期可能会导致访问不稳定,并且有人反馈虎牙等直播平台只允许教育网网内用户访问教育网网内服务器资源,所以这个方法不能说天衣无缝,顶顶用还是可以的。如果你实在没有办法在局域网内搭建另一个比如 Overture 这样具有分流功能的 DNS Server ,而且也不会写 init.d/Overture 配置文件也不想折腾其他东西,虽然说不会写 init.d 可以 screen这是一个不错的解决方案。