家长控制或者儿童上网,说的都是可以指定某个设备可以在某个时间段允许上网,或者某个时间断不允许上网。
1、禁止上网
禁止上网比较直接,当检测在当前时间断,则将包丢弃
使用iptables的time扩展模块,进行时间检测。
在FORWARD链DROP掉数据包,
例如19:00-21:00禁止IP上网:
iptables -I FORWARD -s 192.168.1.103 -m time --timestart 19:00 --timestop 21:30 --kerneltz -j DROP
这边的kerneltz代表使用内核上的时区,而非默认的UTC
又或者19:00-21:00禁止mac地址上网:
iptables -I FORWARD -m mac --mac-source 48:A9:22:71:8B:13 -m time --timestart 19:00 --timestop 21:00 --kerneltz -j DROP
另外时间后面可以指定礼拜几--weekdays,比如:
iptables -I FORWARD -s 192.168.1.103 -m time --timestart 5:00 --timestop 6:30 --weekdays 1,2,3,4,5 -j DROP
或者使用英文:
iptables -I FORWARD -s 192.168.1.103 -m time --timestart 5:00 --timestop 6:30 --weekdays Mon,Tue,Wed,Thu,Fri,Sat,Sun -j DROP
openwrt利用防火墙规则禁止某个ip或者mac规定时间,规定日子禁止上网,而局域网能访问的iptables规则
也可以直接在INPUT链上面禁止,这样设备就连局域网也无法访问
iptables -I INPUT -s 192.168.1.103 -m time --timestart 5:00 --timestop 6:30 --days Mon,Tue,Wed,Thu,Fri,Sat,Sun -j DROP
2、允许上网
禁止上网是直接DROP,允许上网的话,则是这一段时间断ACCEPT,其他时间段都DROP,所以我们只需要确保ACCECP在DROP之前即可
例如19:00-21:00允许IP上网,其他时间段不允许:
iptables -I FORWARD -s 192.168.1.103 -m time --timestart 19:00 --timestop 21:30 --kerneltz -j ACCEPT
iptables -I FORWARD -s 192.168.1.103 -j DROP
如果有多个时间断的话,也必须确保所有的ACCECT再最后的DROP之前
如礼拜一到礼拜五20:00到21:00允许上网,周末17:00到21:30允许上网。
iptables -I FORWARD -s 192.168.1.103 -m time --timestart 20:00 --timestop 21:00 --weekdays 1,2,3,4,5 --kerneltz -j ACCEPT
iptables -I FORWARD -s 192.168.1.103 -m time --timestart 19:00 --timestop 21:30 --weekdays 6,7 --kerneltz -j ACCEPT
iptables -I FORWARD -s 192.168.1.103 -j DROP