本文绝大多数内容源自 褐瞳さん的校园网防止多设备检测指北
配置好后请不要故意炫耀,防止检测手段升级
自己准备好刷入OpenWrt的路由器
新版本OpenWrt默认使用nftables
原理
TTL修改
存活时间(英语:Time To Live,简写TTL)是电脑网络技术的一个术语,指一个数据包在经过一个路由器时,可传递的最长距离(跃点数)。 每当数据包经过一个路由器时,其存活次数就会被减一。 当其存活次数为0时,路由器便会取消该数据包转发,IP网络的话,会向原数据包的发出者发送一个ICMP TTL数据包以告知跃点数超限。 其设计目的是防止数据包因不正确的路由表等原因造成的无限循环而无法送达及耗尽网络资源
检测TTL 是最简单的多设备检测方式,因为 TTL 每过一个路由值都会 -1,所以只需要抓包然后读出我们的包头里面的 TTL 值是否是一般情况下系统默认的 128 或者 64 就可以判断我们是否共享了网络。但在 OpenWRT 中我们可以简单的通过添加 iptables 或者 nftables 防火墙规则来实现路由器下所有设备 TTL 值的统一。
- 登录SSH
- 键入
cd /etc/nftables.d回车,该文件夹是nftables存档部分防火墙规则的文件 - 输入
vi 12-mangle-ttl-128.nft回车,以新建一个nftables的规则文件 - 轻敲键盘上字母
I键进入编辑模式 复制以下代码,再通过按
Shift + Insert(Insert在有的键盘上写的是Ins)来将代码粘贴进去chain mangle_postrouting_ttl128 { type filter hook postrouting priority 300; policy accept; counter ip ttl set 128 } chain mangle_prerouting_ttl128 { type filter hook prerouting priority 300; policy accept; counter ip ttl set 128 }- 完成后先按键盘上的
Esc退出编辑模式,再输入:wq回车就可以退出并保存文件了。 - 完成后在命令行使用
service firewall restart来重启防火墙即可
进入 OpenWRT 网页后台管理页的防火墙设置,在 自定义设置 中填入以下内容,然后点击右下角保存并退出即可。 iptables -t mangle -A POSTROUTING -j TTL --ttl-set 128
2 条评论
非常感谢,我研究一下试试
不用谢