TTL 是最简单的多设备检测方式,因为 TTL 每过一个路由值都会 -1,所以只需要抓包然后读出我们的包头里面的 TTL 值是否是一般情况下系统默认的 128 或者 64 就可以判断我们是否共享了网络。但在 OpenWRT 中我们可以简单的通过添加 iptables 或者 nftables 防火墙规则来实现路由器下所有设备 TTL 值的统一。
我用的iptables情况下只要一行就能改TTL
windows下
iptables -t mangle -A POSTROUTING -j TTL --ttl-set 128
安卓设备或者linux下
iptables -t mangle -A POSTROUTING -j TTL --ttl-set 64
nftables 固定 TTL,没测试过
nft add table inet ttl64
nft add chain inet ttl64 postrouting { type filter hook postrouting priority -150\; policy accept\; }
nft add rule inet ttl64 postrouting counter ip ttl set 64
可以放进路由器的—网络—防火墙—自定义规则—中把这几段加进去。